In Agile projects, test levels are often defined in definition of done document which are logically related to each other and indicates the broad test coverage area. Since, testing in agile is no longer a separate phase by itself, all test levels overlap with each other. The user stories which contain requirements and design description and development along with testing activities overlap with each other.
Scrum strictly prohibits product owner changing requirements in the middle of the sprint; however, the team can evolve the sprint backlog as they uncover new details about a user story. During a iteration, here is the sequence of tests:
- Unit testing, typically done by the developer, but sometimes tester also helps
- Feature acceptance testing, which may be broken into couple of activities:
- Feature verification testing, which is often automated
- Feature validation testing, which involves everyone and mostly done manually
Example of Feature acceptance testing:
As a new depositor, in order to protect my money, I want to save my money a bank account. Since, I am a new depositor, my default opening balance in a new bank account is INR 0.00
Automated tests are often used for running parallel regression testing to test, if any of the previously developed features might have broken. The continuous integration framework also helps checking if any builds are failing to code compilation errors. The system level test may also get started as soon as user stories are done.
There are other tests like performance, reliability, usability tests which may also run in parallel to the system tests. Acceptance testing may also include alpha and beta tests based on the type of the product being developed, either in iteration or at the end of the release. User Acceptance Testing at the end of the iteration is good idea. In regulated environments, certain regulatory testing also may be norm to satisfy the audit compliance rules.