Functional/acceptance tests use techniques similar to unit and integration tests but differ from them in that they are run only at the end of each sprint. They have the fundamental role of verifying that the current version of the whole software complies with its specifications. This verification is turned into a formal process for the following purposes:
- Functional tests represent the most important part of the contract between stakeholders and the development team, the other part being the verification of non-functional specifications. The way this contract is formalized depends on the very nature of the relationship between the development team and stakeholders. In the case of a supplier-customer relationship, they become part of the supplier-customer business contract for each sprint, and they are written by a team that works...