Introduction
A key agile/lean principle is to aim for perfection, to improve constantly. It is everyone’s job. This informs the role of the testing: it is done early in the process and is the responsibility of the team. Every feature and every story must have one or more acceptance tests. The outcome of testing is to deliver code that is fairly-well perfected so that defects have no serious consequences.
Testing does help to discover bugs. But more importantly, the tester role is a full partner in the team, to help discover the causes of errors and eliminating them. This involves root-cause analysis, looking at processes, infrastructure, and the understanding of customer requirements.
Testing is central to development. The goals of testing are to ensure high-quality code at each iteration, finding bugs, discovering root-cause issues that lead to defects, and creating acceptance tests for every feature and every story.
Short deadlines and close contact with the customer ensure a constant sense of urgency without panic. Thus, the product owner is rarely surprised.
A Note About Roles
As stated in People first: Roles in DAD ,
- On a DAD team, any given person will be in one or more roles, an individual can change their role(s) over time, and any given role will have zero or more people performing it at any given time.
- Roles are not positions, nor are they meant to be. For example, there may be many stakeholders of your project and none of them is likely to have a position of “stakeholder.”
- Agile de-emphasizes specialized roles and considers all team members equal – everyone pitches in to deliver a working solution regardless of their job description.
For information, see People first: Roles in DAD
Focus
The tester role is a member of the full agile team. The team drives the product from a tactical perspective. It is autonomous and self-organizing and is accountable to the product owner for committing to and delivering product increments within the duration of the iteration.
The full agile team works in parallel with all appropriate stakeholders to estimate the size of backlog items, make design and implementation decisions, and transform stories into high quality software assets.
Working with the team lead, the team tracks its own progress, raises awareness for impediments, and devises options to maintain forward progress. The team is responsible for establishing processes and standards, continuously improving them, and then following those processes and standards.
Quality assurance focuses more on discovering why defects are occurring than in finding defects. They are guided by two lean principles:
- Optimize the whole. Focus on the entire portfolio of products that are in the “value stream” for the enterprise. Do what is needed to improve the overall flow of the most important value. At the project level, business analysts, developers, and testers work together to make high-quality code. Bugs are not tolerated.
- Build quality in. Quality is built into the product, not tested in. It is part of de-sign. Patterns inform design choices that create sustainable, less complex, more flexible code. Quality assurance and testing exist less to catch bugs than to identify causes of bugs so that processes and systems can be corrected. Code development is test-driven.
Defining tests up front is an important practice. Help define tests up-front even if you do not write them up-front. It takes no work, increases understanding, and prevents many errors.
Testing involves more than simply discovering bugs. Testing helps discover the causes of errors and eliminating them. Testing helps make explicit the assumptions and requirements that customers have without getting overly technical. Testing ensures code integrity and compatibility with other code modules.
Testing minimizes the risks caused by humans, machines, and environment.
Planning the testing strategy as early as possible. This requires careful consideration: what will be tested, how much can be automated and what must still be done manually, what the testing environment will include, who will do testing, what they need to know, and what standards they will follow. For information about the roles in DAD, see People first: Roles in DAD
Responsibilities
Table 1. Goals and Responsibilities of the tester
Phase |
Process Goal |
What the Tester Does |
Inception |
Assess understanding and skills Assure sufficient technical resources Understanding regulatory compliance Helping to define the approach to testing and development Identifying test environments to use Defining strategy for testing non-functional requirements Setting up automated test suites Defining process to obtain test data Defining process for automated builds Defining process for reporting defects Working with product owner to define governance of quality efforts |
|
Help with acceptance tests |
||
Help team conduct BDD, TDD, TFD Help team document defects and put on the backlog |
||
Support ongoing team collaborations |
||
Construction |
Help team visualize their work Help team optimize their flow |
Accountabilities
Accountability |
Which involves... |
Establish ecosystem |
Establishing the testing strategy. Validating that the team understands what the organization needs, that the product produced is what was required, and that the product is of sufficient quality. Move testing as early as possible into the development process. No feature or story is created without a corresponding acceptance test. Acquiring, building-out, and configuring tools and environments for the team such as:
|
During planning |
Participating in sizing, prioritizing, and decomposing stories into implementation stories and tasks. At a high level, identifying enabling and systematic evolution issues that must be addressed. Identifying process and environment issues which might need to be addressed in the upcoming iteration. Identifying skills needed to achieve the iteration commitment. Committing with the team to deliver an increment of the product. |
Daily work |
Focusing efforts on delivery of the highest priority stories and tasks while identifying dependencies. Building rapport with team members to increase team collaboration. Maintaining a positive and safe work environment. Contributing to development and testing by swarming on stories and tasks. Developing tests and code that conform to agreed-upon code quality standards. Helping to resolve impediments that are within the team’s span of influence. Contributing to the daily coordination meeting. As necessary, rewriting stories and tasks to level workload, handle dependencies and impediments, and accelerate results. As necessary, re-sizing stories based on any new information or on what has been learned. Being aware of team cohesion and sustainability. Ensuring the test strategy is implemented effectively and in a timely manner. Ensuring the test strategy is implemented effectively and in a timely manner for SAT, CAT. |
Iteration closing |
Demonstrating the product increment to the product owner and other appropriate stakeholders. Participating in the iteration retrospection. |