Testing

By the time the coding is finished, the tests are also written and are run many times. They are usually executed every time a new chunk of changes are committed to a source code repository. Some companies are practicing a continuous integration model when the change, once committed to the source repository, triggers the automated regression and integration testing with subsequent deployment to production environment.

Yet, there are many development teams that still have dedicated test specialists who—after the code is deployed into a test environmentare testing it manually and using some specialized tools.

The design effort in this phase is focused on test coverage, test automation, and integration with other systems, automated or not. Deployment and limited testing (called smoke testing) in a production environment is also part of the design effort of this phase.

The purpose of design during testing is to make sure that all the delivered use cases are covered with tests, including negative and non-functional testing. Monitoring and reporting on the system performance are important activities of this phase, too.