Here are the top 8 things to consider when developing your Agile testing strategy to enable you to continuously deliver a quality working Product Increment at the end of every Sprint
1. Testing in not a phase
Testing is not a phase that happens at the end of a project and it’s not a phase that happens at the end of a sprint or at the end of a story. Testing is an ongoing activity that happens throughout and there is no distinction between programming or coding and testing. It’s just quality development.
2. Testing is everyone’s responsibility
Testing is everyone’s responsibility. The entire team works collectively to develop a quality product. Most of the automation is done by the people writing the code using an approach known as Test Driven Development or Test Driven Design (TDD). This includes unit, integration, component, and system tests. These tests verify that the application works as intended.
Functional and acceptance tests are written by testers, analysts or the business using an approach known as behavior driven development (BDD) or acceptance test driven development (ATDD). These tests verify that the system works as expected per the requirements.
3. Testing starts on day 1
Since we are trying to build quality-in instead of checking for quality later, testing should start from day 1 and is everyone’s responsibility, not just the testers.
4. Do automate all scripted tests
Any tests that can be scripted, can and should be automated. If we can map out a series of preparatory steps, followed by an action that results in an expected value or response, then this is a test that can be automated. Doing it manually is time-consuming, exhausting, inefficient, and not sustainable.
5. Developers are the ones doing most of the automation
Testing is everyone’s responsibility, but most of the test automation at the unit, integration, component and system tests are the developers’ responsibility as these tests are part of building a quality product that works as intended.
6. Do use executable documentation
Requirements and tests are just two sides of the same coin. You can’t have a user story or requirement without an acceptance criteria (test). These two meld into executable specification. Using gherkin syntax (given, when, then) we can represent requirements using examples and create specifications by examples that become automated acceptance tests. These tests should be automated by testers since they verify that the product works as expected.
7. Do not automate functional testing via the UI
Automating testing via the UI should not be used for exhaustive functional testing. Lower level tests are better suited for that. UI tests tend to be long running and very brittle and should be kept to a minimum.
8. Save most manual testing for usability and exploratory testing
Most manual testing should be spent on Usability and Exploratory Testing. These types of tests are non-scripted and thus cannot be automated. These tests need human interaction, observation, analysis, and intuition.
Also check out the entire Agile Testing series:
- 4 Typical Transitions Teams Go Through When They First Start Adopting Scrum
- The Most Common Misunderstanding of Agile Software Development
- What are the Different Types of Tests?
- What is The Agile Testing Quadrant?
- Which Tests Should We Automate?
- How Many Tests Are Enough?
- What is The Testing Pyramid?
- When Do We Start Testing in Scrum?
- Who Is Responsible for Testing in Scrum?
- What is Test Driven Development (TDD)?
- Why You Shouldn’t Do Functional Testing From the UI?
- What are Executable Specifications or Specifications by Example?
- What is Acceptance Test Driven Development (ATTD)?
- Testing Green Field Applications vs. Legacy Applications
- What is Exploratory Testing?
- Top 8 Things to Consider for Your Agile Testing Strategy
- Agile Testing – Testing from Day 1 Presentation