During the software development process it is vital to establish a robust process of software quality assurance, even if you are developing using an Agile development methodology.
It is important to mention that Agile development should not be confused with development without a defined quality management software. It is strongly recommended that the tasks of creating test cases and performing automated tests be planned for each development iteration.
In addition, having a test-focused person is a key to the quality of software development during the Agile iterations.
Agile Planning and Quality Assurance Tasks
The Agile iteration planning process allocates at least one resource for testing activities, and does not involve this resource in development activities within the iteration. This process is important to avoid poor quality testing.
Within a development team of five people, having at least one person focused on these tests tasks will greatly help to ensure the quality of the software. In this case we are talking about functional tests (black-box testing) planned and written through test cases. However, we must not forget that the unit tests (white-box testing) are the responsibility of the development team, and the tasks of developing these unit tests must be estimated together with the backlog items.
The advantage of include planning and execution quality assurance tasks even in an Agile software development cycle is the concern of the development team in delivering quality software to those responsible for running the tests. It is amazing how the simple fact there is a person planning and thinking about software testing already increases the quality of the software.
Here are some tests tasks that can be executed during a development iteration:
Creating a test-planning;
Creating the detailed test cases for each user story or backlog item;
Preparing test environments required for system tests;
Preparing test data: getting real data from production or simulation.
In addition the tests can be automated, so the tasks below can be included:
Automating unit tests;
Automating functional tests;
Writing mocks, test drivers, data simulators, test frameworks.