Agile Testing - Tester in Team
Agile Development is team-centric and developers and testers take part in all the project and development activities. The Teamwork maximizes success of testing in Agile projects.
A Tester in Agile team has to participate and contribute to all the project activities and at the same time has to leverage the expertise in testing.
An Agile tester should have traditional testing skills. In addition, Agile tester needs −
- Good interpersonal skills.
- Ability to act positive and solution-oriented with team members and stakeholders.
- Ability to display critical, quality-oriented, skeptical thinking about the product.
- Aptitude to be pro-active to actively acquire information from the stakeholders.
- Skills to work effectively with customers and stakeholders in defining testable User Stories, the Acceptance Criteria.
- Talent to be a good team member working with developers in producing quality code.
- Usability of testing skills to have the right test cases at the right time and at the right level and executing them well within the duration of the sprint.
- Ability to evaluate and report test results, test progress and the product quality.
- Openness to respond to changes quickly, including changing, adding or improving test cases.
- Potential to self-organize work.
- Enthusiasm to continuous skill growth.
- Competency in Test Automation, Test-driven Development (TDD), Acceptance Test-driven Development (ATDD), Behavior Driven Development (BDD) and experience based Testing.
Role of Tester in Agile Team
Tester in Agile Team participates in all the project and development activities to contribute the best of the testing expertise.
Agile Tester Activities include −
- Ensuring proper use of testing tools.
- Configuring, using and managing the test environments and the test data.
- Mentoring other team members in relevant aspects of testing.
- Ensuring that appropriate testing tasks are scheduled during the release and sprint planning.
- Understanding, implementing and updating test strategy.
- Collaborating with developers, customer and stakeholders in clarifying requirements, in terms of testability, consistency and completeness.
- Performing the right tests at the right time and at right test levels.
- Reporting defects and working with the team in resolving them.
- Measuring and reporting test coverage across all applicable coverage dimensions.
- Participating in sprint retrospectives, proactively suggesting and implementing improvements.
In the Agile Lifecycle, a tester plays a significant Role in −
- Teamwork
- Test Planning
- Sprint Zero
- Integration
- Agile Testing Practices
Teamwork
In Agile Development, teamwork is fundamental and hence requires the following −
- Collaborative Approach − Working with cross-functional team members on Test Strategy, Test Planning, Test Specification, Test Execution, Test Evaluation, and Test Results Reporting. Contributing the testing expertise in conjunction with other team activities.
- Self-organizing − Planning and organizing well within the sprints to achieve the targets of testing by amalgamating expertise from other team members as well.
- Empowerment − Making appropriate technical decisions in achieving the team’s goals.
- Commitment − Committing to understanding and evaluating the product’s behavior and characteristics as required by the customers and stakeholders.
- Transparent − Open, Communicating and Accountable.
- Credibility − Ensuring the credibility of the test strategy, its implementation, and execution. Keeping the customers and stakeholders informed on the test strategy.
- Open to Feedback − Participating in sprint retrospectives to learn from both successes and failures. Seeking customer feedback and acting quickly and appropriately to ensure quality deliverables.
- Resilient − Responding to changes.
Test Planning
Test Planning should start during the release planning and update during each sprint. Test planning should cover the following tasks −
- Defining test scope, extent of testing, test and sprint goals.
- Deciding on the test environment, test tools, test data and configurations.
- Assigning testing of features and characteristics.
- Scheduling test tasks and defining frequency of tests.
- Identifying test methods, techniques, tools and test data.
- Ascertaining prerequisites such as predecessor tasks, expertise and training.
- Identifying dependencies such as functions, code, system components, vendor, technology, tools, activities, tasks, teams, test types, test levels and constraints.
- Setting priorities considering the customer/user importance and dependencies.
- Arriving at the time duration and effort required to test.
- Identifying tasks at each sprint planning.
Sprint Zero
Sprint Zero involves preparation activities before the first sprint. A tester needs to collaborate with the team on the following activities −
- Identifying scope
- Dividing user stories into sprints
- Creating system architecture
- Planning, acquiring and installing tools (including testing tools)
- Creating the initial test strategy for all the test levels
- Defining test metrics
- Specifying the acceptance criteria, also called the definition of “Done”
- Defining exit criteria
- Creating Scrum board
- Setting the direction for testing throughout the sprints
Integration
In Agile, a quality working product should be ready for release at any point of time in the development lifecycle. This implies continuous integration as a part of development. An Agile tester needs to support continuous integration with continuous testing.
To accomplish this, a tester needs to −
- Understand the integration strategy.
- Identify all dependencies between functions and features.
Agile Testing Practices
An Agile tester needs to adapt Agile practices for testing in an agile project.
- Pairing − Two team members work together at the same keyboard. As one of them tests, the other reviews/analyzes testing. The two team members can be
- One tester and one developer
- One tester and one business analyst
- Two testers
- Incremental Test Design − Test cases are built from user stories, starting with simple tests and moving to more complex tests.
- Mind Mapping − A mind map is a diagram to organize the information visually. Mind mapping can be used as an effective tool in Agile testing, using which information regarding the necessary test sessions, test strategies and test data can be organized.
Agile Testing - Tracking Activities
Test Status can be communicated −
- During daily stand-up meetings
- Using standard test management tools
- Via messengers
Test status determined by test passing status is crucial in deciding the whether the task is “Done”. Done means all the tests for the task pass.
Test Progress
Test Progress can be tracked using −
- Scrum Boards (Agile Task Boards)
- Burndown Charts
- Automated Test Results
Test Progress also has a direct impact on development progress. This is because a User Story can be moved to Done status only after the Acceptance Criteria is reached. This, in turn, is decided by Test Status as the Acceptance Criteria is judged by a Test Status.
If there are any delays or blockages in test progress, the entire team discusses and works collaboratively to resolve the same.
In Agile Projects, changes take place quite often. When many changes take place, we can expect that the Test Status, Test Progress and Product Quality to evolve constantly. The Agile testers need to get that information to the team so that the appropriate decisions can be made at the right time to stay on track for successful completion of each iteration.
When changes happen, they can affect existing features from previous iterations. In such cases, manual and automated tests must be updated to deal effectively with regression risk. Regression testing is also needed.
Product Quality
Product Quality Metrics include −
- Tests Pass / Fail
- Defects Found / Fixed
- Test Coverage
- Test Pass/Fail Rates
- Defect Discovery Rates
- Defect Density
Automating the gathering and reporting of product quality metrics helps in −
- Maintaining transparency.
- Gathering all the relevant and required metrics at the right time.
- Immediate reporting without communication delays.
- Allowing testers to focus on testing.
- Filtering misuse of metrics.
To secure overall product quality, the Agile team needs to obtain customer feedback on whether the product meets customer expectations. This needs to be carried out at the end of each iteration, and the feedback will be an input for subsequent iterations.
Key Success Factors
In Agile projects, quality products can be delivered if Agile testing is successful.
The following points need to be considered for the success of Agile testing −
- Agile testing is based on test first and continuous testing approaches. Hence, the traditional testing tools, which are built on test-last approach, may not be suitable. Hence, while choosing the Testing Tools in Agile projects, the alignment to Agile testing needs to be verified.
- Reduce total testing time by automating tests earlier in the development lifecycle.
- Agile testers need to maintain their pace to align to the development release schedule. Hence, proper planning, tracking, and re-planning of the testing activities need to be done on the fly with product quality as the goal.
- Manual testing accounts to 80% of the testing in the projects. Hence, testers with expertise are need to be part of the Agile team.
- Participation of these testers with expertise throughout the development lifecycle makes the entire team focus on quality product meeting customer expectations.
- Defining user stories emphasizing product behavior expected by the end users.
- Identifying Acceptance Criteria at user story level / task level as per customer expectations.
- Effort and duration estimation for testing activities.
- Planning testing activities.
- Aligning with the development team to ensure production of code that meets the requirements with an upfront test design.
- Test first and continuous testing to ensure that done status is reached meeting the acceptance criteria at the expected time.
- Ensuring testing at all levels within the sprint.
- Regression testing at the end of each sprint.
- Collecting and analyzing product metrics that are useful for the success of the project.
- Analyzing defects to identify which need to be fixed in the current Sprint and which can be delayed to subsequent Sprints.
- Focusing on what is important from the Customer’s point of view.
Lisa Crispin has defined seven key Factors for Agile Testing Success −
- Whole Team approach − In this kind of approach, the developers train the testers and the testers train other team members. This helps everyone to understand every task in the project, thereby collaboration and contribution will have maximum benefit. Collaboration of testers with customers is also an important factor to set their expectations right at the beginning and translating the acceptance criteria to the required to pass the test.
- Agile Testing Mindset − The testers are proactive in continually improving the quality and collaborating constantly with the rest of the team.
- Automate Regression Testing − Design for testability and drive development with tests. Start simple and allow the team to choose the tools. Be ready to provide advice.
- Provide and Obtain Feedback − As this is a core Agile value, the entire team should be open for feedback. As the testers are expert feedback providers, need to focus on relevant and necessary information. In return, on obtaining feedback should accommodate test case changes and testing.
- Build a Foundation of Core Agile Practices − Focus on testing alongside coding, continuous integration, collaborative test environments, working incrementally, acceptance for changes, maintaining synergy.
- Collaborate with Customers − Elicit examples, understanding, and checking the requirements mapping to the product behavior, setting up Acceptance Criteria, obtaining feedback.
- Look at the Big Picture − Drive development with business-facing tests and examples using real world test data and thinking about impacts on other areas.
Agile Testing - Significant Attributes
In this chapter, we will see some significant attributes of Agile Testing.
Agile Testing Benefits
The benefits of Agile testing are −
- Customer satisfaction by quick, continuous completely tested product and seeking customer feedback.
- Customers, developers, and testers continuously interact with one another, thereby reducing the cycle time.
- Agile testers participate in defining requirements contributing their testing expertise to focus on what is workable.
- Agile testers participate in estimation assessing testing effort and time.
- Early test design reflecting Acceptance Criteria.
- Testing requirements consolidated by the whole team, avoiding drawbacks.
- Constant focus on quality of the product by the entire team.
- Definition of Done status reflecting tests pass ensures that the requirement is met.
- Continuous feedback on delays or blockages so that resolution can be made immediately with effort from the whole team.
- Quick responses to changing requirements and accommodating them soon.
- Continuous integration driven regression testing.
- No time delays between development and testing. test first, continuous testing approaches are followed.
- Automation testing implemented early in the development lifecycle, thereby reducing total testing time and effort.
Best Practices in Agile Testing
Follow the best practices given below −
- Inclusion of testers with expertise in all types of testing at all levels.
- Testers participating in the definition of requirements, collaborating with customers on the expected behavior of the product.
- Testers sharing feedback continuously with the developers and customer.
- Test first and continuous testing approaches to align to the development work.
- Tracking test status and test progress promptly and constantly with focus on delivering quality product.
- Automation testing early in the development lifecycle to reduce cycle time.
- To perform Regression Testing leverage Automation Testing as an effective way.
Challenges in Agile Testing
The following challenges exist in Agile testing −
- Failure to understand the Agile approach and its limitations by the Business and Management can lead to unachievable expectations.
- Agile follows whole-Team approach, but not everyone knows the essentials of Testing Practices. Testers are advised to coach the others, but in real scenario can be impracticable with time-boxed Sprints (Iterations).
- Test First Approach requires Developers to base the coding on Tester Feedback, but in real scenarios Developers are more accustomed to base the coding on the Requirements coming from Customer or Business.
- Accountability for the Quality Product is with the entire Agile Team, but in initial stages the Developers may not Focus on Quality as they are more into the implementation mode.
- Continuous Integration calls for Regression Testing that requires considerable effort, even if it has to be automated.
- Testers can be adaptable to changes with the Agile mind-set, but accommodating the resulting Test Changes and Testing can be impracticable to target to finish during the Sprint.
- Early Automation is advised so that Manual Testing Effort and Time can be reduced. But, in the real scenario, arriving at the Tests that can be automated and automating them require Time and Effort.
Agile Testing Guidelines
Use the following guidelines while performing Agile Testing.
- Participate in Release Planning to identify the required Testing activities and come up with the initial version of test plan.
- Participate in estimation session to arrive at testing effort and duration so that testing activities are accommodated in the iterations.
- Participate in User Story Definition to arrive at Acceptance Test Cases.
- Participate in every Sprint Planning Meeting to understand the scope and update Test Plan.
- Continuously collaborate with the Development Team during the Sprint to make Testing and Coding a success well within the Sprint.
- Participate in Daily Stand-up Meetings and convey Test Delays or Blockages if any, to receive immediate resolution.
- Track and Report Test Status, Test Progress and Product Quality regularly.
- Be ready to accommodate changes, responding with modifications to Test Cases, Test Data.
- Participate in Sprint Retrospectives to understand and contribute the Best Practices and Lessons Learned.
- Collaborate in obtaining Customer Feedback at each Sprint.