Who is responsible for integration testing?
Who is responsible for integration testing primarily depends on the type of integration testing being executed as well as the systems development lifecycle methodology in use in the organization. At a high level, there are two types of integration testing: component integration and system integration. Component integration testing Component integration testing is the process of ensuring that individual units of code interact together according to specifications. Sometimes this is called component unit testing; that terminology, however, can be misleading, as component integration testing is distinct from unit testing. Unit testing is the lowest level of testing. It is used to verify that each individual piece of code functions as designed. Narrow in scope and usually automated, unit testing is done on the developer's own branch prior to being pulled into the main line. Component integration testing has a broader focus. Its purpose is to verify the interactions between modules and ensure that all components work together as intended. Automated component testing is an effective way to find defects early and build in quality. When components are written by multiple developers working independently of each other, the component integration test usually takes place as a part of the continuous integration process or in a specific integration environment. Who will perform integration testing depends on a company's practices and preferences. Who will perform integration testing depends on a company's practices and preferences. In most organizations, component integration testing is the responsibility of the developer. However, in organizations that have implemented test-driven development, testers may be involved. In this scenario, the tester would be responsible for the development of the test scenarios and the developer would be responsible for the writing the script for the test. In an Agile or DevOps environment, the testers could be responsible for the component integration testing, especially if they are software development engineers in test. In situations where the module under test is complex, it may be useful to involve a tester or another developer in the component integration test in order to find defects as early as possible.