System testing is performed by a team of individuals who participated in the drafting of the system's functional specifications. These individuals are better equipped to verify and validate the system's functionality. The team consists of application technicians, business analysts, and users. System testing is usually done in a test environment using test data. Moreover, previously tested functionality needs to be tested again to assure that the new modules have not corrupted the system.
Regression testing is performed by a team of developers.
After successful system testing, the system is subjected to system integration testing. Essentially, the system is tested with respect to its relative position among other systems that it interfaces with. This is to measure the level of correctness of the system's interfaces. These tests are performed by a team of developers in a test environment using test data. This is to assure that the system is ready for production and that all the defects and performance issues discovered in previous testing stages have indeed been resolved.