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.
Tools for planning and running tests
It is not the purpose of this article to present test tools. However, it is important for the agility of the software development process to look for tools to automate the execution of the tests as well as documenting the test plans and the test cases.
Remember that tests can be re-used in future development iterations, so it is very important to define a centralised method and tool to manage the test plans and test cases. An efficient test management tool will help you with the agility and quality of your software.
The following are some suggestions for test tools:
- Test Collab
- TestFLO for Jira
- Microsoft Test Manager (Test planning and automation)
- Microsoft Team Services (Test cases)
- Selenium (Automation of functional tests for Web applications)