I'm a bit confused about the real difference between system testing and acceptance testing. When I search this topic the answers differ and I fail to see how the testcases can be vastly different.
Facts I've discovered:
System testing is conducted on the complete system and is done by the supplier. System testing is end-to-end testing where you test complete flows in the system (from login to logout) based on the requirement spec (both functional and non-functional).
Acceptance testing is done by the customer to verify that it meets the customers demand. This is also complete flows and is based on the requirement spec. HOWEVER the system that is built was designed based on the requirement spec and the apperance/usability is usually already accepted in the earlier stages of the development cycle. If the system covers the requirement specification it should not be possible for the client to say "this is not what we wanted, redo this and that", unless ofcourse the contract allows this and the customer is paying per hour.
So, my question is basicly, how would the test cases for these two test phases differ? Both of them is end-to-end testing and focuses on that it is a functional system and it satisfies the specification, which in extent is also the business needs (since it's what they have ordered). It seems as if the test cases from the system testing can be reused in acceptance testing as they both coveres complete flows?
The short answer is this:
System testing Performed by developers and/or QA to ensure that the system does what it was designed to do. This can be done automatically by using, for instance, something like Selenium (for a web app). The purpose for doing this is quality assurance, and many organizations don't bother with this.
Acceptance Testing Performed by customers and/or managers to ensure that the system does what they think it should. It is generally considered the end of the developers contractual obligation to fix the software.
The difference is that a system test will usually test things that the customer doesn't really care about, Things like "Are database connections committed in the correct order". Acceptance tests usually focus on things like "How is the subjective user experience".