
Testing Process
Thoughtfully Curated
Traditional Waterfall Development Model
A common practice in Waterfall development is that testing is performed by an independent group of testers. This can happen after the functionality is developed, but before it is delivered to the customer. This practice often results in the testing phase being used as a project buffer to compensate for project delays, thereby compromising the time devoted to testing. A development project is a continuous process until the project finishes.
​
However, even in the Waterfall development model, unit testing is often done by the software development team even when further testing is done by a separate team.
Agile Development Model
In contrast, many emerging software disciplines, such as Agile, adhere to a "test-driven software development" model. In this process, unit tests are written by software engineers (often with pair programming in extreme programming methodology). The tests are expected to fail initially. Each failing test is followed by writing just enough code to make it pass.This means the test suites are continuously updated as new failure conditions and corner cases are discovered, and they are integrated with any regression tests that are developed. Unit tests are maintained along with the rest of the software source code and generally integrated into the build process (with inherently interactive tests being relegated to a partially manual build acceptance process).
The ultimate goals of this test process are to support continuous integration and to reduce defect metrics.
This methodology increases the testing effort done by development, before reaching any formal testing team. In other development models, most of the test execution occurs after the requirements have been defined and the coding process has been completed.