Tools described in the Foundation Level syllabus [ISTQB_FL_SYL] are relevant and used by testers on Agile teams. Not all tools are used the same way and some tools have more relevance for Agile projects than they have in traditional projects. For example, although the test management tools, requirements management tools, and incident management tools (defect tools) can be used by Agile teams, some Agile teams opt for an all-inclusive tool (e.g., application lifecycle management or task management) that provides features relevant to Agile development, such as task boards, burndown charts, and user stories. Configuration management tools are important to testers in Agile teams due to the high number of automated tests at all levels and the need to store and manage the associated automated test artifacts.
In addition to the tools described in the Foundation Level syllabus [ISTQB_FL_SYL], testers on Agile projects may also utilize the tools described in the following subsections. These tools are used by the whole team to ensure team collaboration and information sharing, which are key to Agile practices.
Task Management and Tracking Tools
In some cases, Agile teams use physical story/task boards (e.g., whiteboard, corkboard) to manage and track user stories, tests, and other tasks throughout each sprint. Other teams will use application lifecycle management and task management software, including electronic task boards. These tools serve the following purposes:
- Record stories and their relevant development and test tasks, to ensure that nothing gets lost during a sprint
- Capture team members’ estimates on their tasks and automatically calculate the effort required to implement a story, to support efficient iteration planning sessions
- Associate development tasks and test tasks with the same story, to provide a complete picture of the team’s effort required to implement the story
- Aggregate developer and tester updates to the task status as they complete their work, automatically providing a current calculated snapshot of the status of each story, the iteration, and the overall release
- Provide a visual representation (via metrics, charts, and dashboards) of the current state of each user story, the iteration, and the release, allowing all stakeholders, including people on geographically distributed teams, to quickly check status
- Integrate with configuration management tools, which can allow automated recording of code check-ins and builds against tasks, and, in some cases, automated status updates for tasks
Communication and Information Sharing Tools
In addition to e-mail, documents, and verbal communication, Agile teams often use three additional types of tools to support communication and information sharing: wikis, instant messaging, and desktop sharing.
Wikis allow teams to build and share an online knowledge base on various aspects of the project, including the following:
- Product feature diagrams, feature discussions, prototype diagrams, photos of whiteboard discussions, and other information
- Tools and/or techniques for developing and testing found to be useful by other members of the team
- Metrics, charts, and dashboards on product status, which is especially useful when the wiki is integrated with other tools such as the build server and task management system, since the tool can update product status automatically
- Conversations between team members, similar to instant messaging and email, but in a way that is shared with everyone else on the team
Instant messaging, audio teleconferencing, and video chat tools provide the following benefits:
- Allow real time direct communication between team members, especially distributed teams
- Involve distributed teams in standup meetings
- Reduce telephone bills by use of voice-over-IP technology, removing cost constraints that could reduce team member communication in distributed settings
Desktop sharing and capturing tools provide the following benefits:
- In distributed teams, product demonstrations, code reviews, and even pairing can occur
- Capturing product demonstrations at the end of each iteration, which can be posted to the team’s wiki
These tools should be used to complement and extend, not replace, face-to-face communication in Agile teams.
Software Build and Distribution Tools
As discussed earlier in this syllabus, daily build and deployment of software is a key practice in Agile teams. This requires the use of continuous integration tools and build distribution tools. The uses, benefits, and risks of these tools was described earlier in Section 1.2.4.
Configuration Management Tools
On Agile teams, configuration management tools may be used not only to store source code and automated tests, but manual tests and other test work products are often stored in the same repository as the product source code. This provides traceability between which versions of the software were tested with which particular versions of the tests, and allows for rapid change without losing historical information. The main types of version control systems include centralized source control systems and distributed version control systems. The team size, structure, location, and requirements to integrate with other tools will determine which version control system is right for a particular Agile project.
Test Design, Implementation, and Execution Tools
Some tools are useful to Agile testers at specific points in the software testing process. While most of these tools are not new or specific to Agile, they provide important capabilities given the rapid change of Agile projects.
- Test design tools: Use of tools such as mind maps have become more popular to quickly design and define tests for a new feature.
- Test case management tools: The type of test case management tools used in Agile may be part of the whole team’s application lifecycle management or task management tool.
- Test data preparation and generation tools: Tools that generate data to populate an application’s database are very beneficial when a lot of data and combinations of data are necessary to test the application. These tools can also help re-define the database structure as the product undergoes changes during an Agile project and refactor the scripts to generate the data. This allows quick updating of test data as changes occur. Some test data preparation tools use production data sources as a raw material and use scripts to remove or anonymize sensitive data. Other test data preparation tools can help with validating large data inputs or outputs.
- Test data load tools: After data has been generated for testing, it needs to be loaded into the application. Manual data entry is often time consuming and error prone, but data load tools are available to make the process reliable and efficient. In fact, many of the data generator tools include an integrated data load component. In other cases, bulk-loading using the database management systems is also possible.
- Automated test execution tools: There are test execution tools which are more aligned to Agile testing. Specific tools are available via both commercial and open source avenues to support test first approaches, such as behavior-driven development, test-driven development, and acceptance test-driven development. These tools allow testers and business staff to express the expected system behavior in tables or natural language using keywords.
- Exploratory test tools: Tools that capture and log activities performed on an application during an exploratory test session are beneficial to the tester and developer, as they record the actions taken. This is useful when a defect is found, as the actions taken before the failure occurred have been captured and can be used to report the defect to the developers. Logging steps performed in an exploratory test session may prove to be beneficial if the test is ultimately included in the automated regression test suite.
Cloud Computing and Virtualization Tools
Virtualization allows a single physical resource (server) to operate as many separate, smaller resources. When virtual machines or cloud instances are used, teams have a greater number of servers available to them for development and testing. This can help to avoid delays associated with waiting for physical servers. Provisioning a new server or restoring a server is more efficient with snapshot capabilities built into most virtualization tools. Some test management tools now utilize virtualization technologies to snapshot servers at the point when a fault is detected, allowing testers to share the snapshot with the developers investigating the fault.