The purpose of this discipline is to:
Provide early and frequent feedback about whether the system satisfies the requirements
Objectively measure progress in small increments
Identify issues with the solution, increasing the probability that the system will behave correctly
Provide assurance that changes to the system do not introduce new defects
Improve velocity by facilitating the discovery of issues with requirements, designs, and implementations as early
The Test discipline is iterative and incremental. It applies the strategy of "test early and test often" to retire
risks as early as possible in the system's lifecycle.
Testing occurs in each iteration of the lifecycle, beginning with the earliest builds of the system. In fact, it is
common for one iteration to have many test cycles, depending on the frequency of new builds.
Testing asks the question: "What does the solution have to do for us to consider a requirement implemented?"
Tests elaborate on the requirements with specific conditions of satisfaction that the solution must meet.
This discipline challenges the assumptions, risks, and uncertainty inherent in the development of highly technical
artifacts and addresses those concerns by using concrete demonstration and impartial evaluation.
The Test discipline relates to the other disciplines in the following ways:
The Requirements discipline identifies the intent of the system. Testing
elaborates on the requirements with detailed tests that measure how the system supports the requirements.
The Development discipline creates incremental builds of the system that the Test
discipline evaluates. In each iteration, testing provides objective feedback. Effective testing enables developers
to focus on implementing new functionality and improving the design of the system.
The Project Management discipline plans the overall project and the scope of work
for each iteration. The Test discipline provides an objective measure of progress, which enables adaptive planning.