Agile testing is a software development practice that promotes frequent, automated testing of new code as it is completed and stipulates that defects should be fixed as soon as they are found.
Agile testing is a critical component of agile integration, in which development teams strive to maintain a continuous, stable build that is suitable for release at any given time. With agile testing, tests are integral—not ancillary—to the primary software creation process and provide the feedback necessary for developers to iterate the next, incremental build.
Traditional programming methods treat the role of testing as a gatekeeping function; after a build is completed, it’s tested and the results of the test determine whether the build is ready for release. This is different from the role of testing in agile methodology, wherein testing is performed routinely—from the early stages of development and onward. Testing early and often means the product is always either in a bug-free state or being remediated of just-discovered bugs. This prevents release delays that often occur in the conventional practice as bug fixes are prioritized and addressed.
Moreover, in conventional development, testers are often held accountable for quality assurance, which creates an adversarial relationship between developers, who want to see their code released on time, and testers, who must defend their decisions to delay releases. Adherents of agile testing maintain that joint accountability for software quality creates a healthy collaboration between developers and testers.