i have this dilema. I know what System testing and user Acceptance testing is, BUT!: i work for a company that have also in-house made software and third-part software. We're at the stage that we write work procedures based on a testing strategy that mention also system testing and UAT.
For software that's not made in-house, it's OK to call the thing that we do : UAT. But the arguments start when we talk about in-house made software. What we actually do in this case: System testing OR UAT? [img]/images/graemlins/smile.gif[/img]. Do you think it is OK to split this by using the thing that UAT is mostly based NOT on discovering the errors but proving that the business requirement have met?
Take an example of banks, the UAT is done in the bank location after software is installed and running. QA does the UAT. But the system testing has already taken place in the QA dept when the software was being made and before shippping the QA certifies the software. UAT in baning cases is done at client's end only.
Does it really matter what you call it as long as you know that you are testing and what you are testing either passes or fails? Don't get so tangled up in definitions. Life is too short to worry about trivial things like that. Whatever your company decides to call it, that is fine. To my knowledge there are no Terminology Police who come around and enforce the names of the testing types.
Previously I have worked on an Internal project. Though it is an In-house project an independent user group has been identified for UAT. So irrespective whether the project is an in-house or third-party it does not make any difference as the process is same for both.
User acceptance can be done by the one who has "the right to accept" .Now it depends upon two factors:
1) Who has got the knowledge to understand what has changed and what has to be accepted or rejected.
2) Who is the end user of the part of the system( or the system as a whole) that has changed.system, is it the end user himself.
For example if there is a middle level change related to the database system of a software which is made to be used by people who dont know what a database is.
In this case the people who have developed the software will perform UAT as seperate part with simulating the environment as close as possible to that of the user.
In case the client has his own IT team then the team will perform the UAT in their environment and all the principles of UAT apply here as well.
Normally there are seperate environments for UAT.
The UAT environment is the one which in all respect is closest to the users environment.
Doesn't matter who the user is the UAT and the system testing are two seperate phases..
I add this point along with Adapa. SIT resource will perform testing only as per the requirement. But UAT resource will do the regression testing also along with the new enhancement. Because they will be having vast knowledge about the application too.
Even client will not allow SIT resource to do the regression testing.
The resources that do SIT and Regression may be true for your company but not for all. In my company the QC team is responsible for regression testing and the end users or end user representative is responsible for UAT where they concentrate on verifying the application works for them as they will use for their jobs.
All companies have their own processes and representatives and responsibilities for UAR, SIT functional testing etc will vary.