|Component Testing||Yes||Yes (additional)|
|System Integration Testing||Yes|
|User Acceptance Testing||Yes|
While the above is an ideal expectation, the actual assignment of responsibilities could vary across organizations. As indicated in the table above, Unit Testing is the responsibility of the Developers. Automated unit test suites may be leveraged to test stability of nightly builds. Component and integration testing of the various components is often the responsibility of the Development team. Developers may choose to have standard code review and check in procedures (as part of a static testing / analysis strategy) to ensure code quality is maintained. System testing and System Integration testing is the primary responsibility of the QA team, while UAT is ideally done by the Customers or their representatives. Testers would be involved in guiding the UAT process.
The above may seem pretty simplistic and not a detailed reflection of the tasks a Testing organization would perform. When we consider a test type such as System Testing - this may be further divided into various types of testing such as - GUI testing, Regression testing, Performance, Stress, Reliability testing, Compatibility testing, Security testing, Installation and Upgrade testing, etc. In addition to the test tasks listed above, there are various other activities that a Testing group is responsible for.