Types of Testing Methods in Agile
By and large, there are four popular types of testing methods used in agile. Further down, we’ll delve into the intricacies of each of them to understand how they work and how they can help you.
Behavior-driven development (BDD)
The BDD approach is about communication. Testers, key stakeholders, business analysts, and developers get together to discuss the goals of the project and create scenarios for the behavior of features. These scenarios are written in a special format known as the Gherkin Given/When/Then syntax and touch upon the following situations:
- “Given the initial context”,
- “When an event takes place”,
- “Then deliver results”.
Here is how BDD works. Teams start by creating scenarios and then write tests based on those scenarios. These tests initially fail, after which the team builds functionality that allows these tests to pass. A great number of tests and software functionality we know today have been created based on BDD scenarios.
Acceptance test-driven development (ATDD)
Acceptance Test-Driven Development involves the inputs of three different roles – the customer, developer, and testers. The customer’s focus is directed on the problem, the developer is looking for a solution, while the tester tries to foresee all possible situations where things could go wrong.
Together, they draft acceptance tests that determine how features must function from the user’s perspective. Just like in BDD, tests initially fail here, and the software functionality is built around the tests until they pass. The main goal of ATDD is to ensure the features of the software function as expected by users.
Exploratory testing
Exploratory testing combines two phases – test design and execution. It’s the kind of testing that doesn’t have scripts. Instead, testers take actions on the fly, creating various scenarios for possible user behaviors and trying to find ways to break the software. Although the process of exploratory testing doesn’t require documentation, any defects found along the way are recorded in writing as usual.
Exploratory testing is aimed at discovering bugs and issues that often go unnoticed during testing using functional tests, user-centric scenarios, and Test-Driven Development (TDD).
Session-based testing
Session-based testing is similar to exploratory testing, but unlike it, it has a more orderly structure, ensuring the software is thoroughly tested. Here, testers need to define testing goals and maintain reports showing exactly what they tested, when, and what results were achieved. At the end of each test session, a meeting between a tester and a responsible developer or manager is held. During this meeting, they discuss the following five pillars of testing:
- What was done;
- What outcomes were achieved;
- What obstacles were encountered;
- What areas are still left to be tested;
- How the tester feels about the test results.
Session-based tests are carried out in charters that usually last 60 to 120 minutes, are aimed at creating products within a shorter time frame, and are typically automated.
Agile Methodologies
When talking about agile software development methodologies, four types stand out: Scrum, Lean, eXtreme, and Kanban. Each of these methodologies embraces the principles of Agile software development, aiming to enhance flexibility, collaboration, and customer satisfaction.
Scrum
Scrum is one of the most widely adopted Agile frameworks, which divides the development process into time-boxed iterations (sprints). The main goal of this methodology is to facilitate collaboration within cross-functional teams and accelerate development.
Key roles:
- Product owner – a person responsible for the project’s outcome;
- Scrum master – a coach who leads and guides the team;
- Development team – a cross-functional and self-organized group of developers (usually consisting of 3-9 people) who collaboratively build a product.
Scrum ceremonies:
- Daily stand-ups – these are the meetings that are held on a daily basis to discuss the progress of software development and identify any bottlenecks;
- Sprint planning – an event during which the team determines what can be delivered in the sprint of 1-2 weeks;
- Sprint review – an event when team members and stakeholders discuss the progress towards the goals of the product development and possible adaptations;
- Sprint retrospective – the last event of the sprint used to discuss results, including what tools and processes were used and what could be improved in an upcoming sprint.
Crucial Scrum artifacts:
- Product backlog;
- Sprint backlog;
- Increment.
Lean
Lean principles, derived from lean manufacturing, focus on delivering value with minimal waste. In the context of Agile software development, Lean promotes eliminating non-value-adding testing activities and optimizing flow. Teams employing Lean principles prioritize customer value, emphasize continuous improvement, and strive to minimize lead time.
Lean techniques:
eXtreme Programming (XP)
eXtreme Programming is an Agile methodology that strongly emphasizes technical excellence and close collaboration between developers and customers. XP practices include pair programming, TDD, continuous integration, and frequent releases. The goal of XP is to deliver high-quality software in a timely and adaptive manner. It encourages a customer-centric approach, with regular feedback and iterative development cycles to accommodate changing requirements.
Kanban
When talking about Kanban, people can mean two things: a Lean workflow management methodology and a visual board. As a methodology, Kanban focuses on continuous delivery and workflow optimization but, unlike Scrum, for example, it doesn’t prescribe iterations. Instead, it visualizes tasks on a Kanban board. The Kanban board, in turn, represents different stages of the development process, making it easier to track the delivery of tasks.
Many companies that have incorporated Kanban have recognized that it has had a positive impact on their processes, resulting in higher ROI results. Kanban’s primary goal is to reduce product delivery time while delivering better quality outcomes.
Kanban Vs Agile
Kanban and Agile are often compared to each other. However, Kanban isn’t a separate methodology from Agile, which means it can be used along with it. Let’s look at the key differences between these two project management methodologies to better understand how they stack up against each other and how they can be used to your benefit.
| Agile | Kanban |
Approach | The focus is on incremental development, collaboration, and adaptability. | The focus is on workflow visualization, optimizing work efficiency, and streamlining the workflow. |
Planning | The project is broken down into 1-2-week sprints. | There are no set time frames. Tasks are simply pulled in as a team can take them. |
Team structure | Agile teams are most often made up of cross-functional specialists who have diverse tech skills. | This model works for all teams, regardless of their structures, roles, and sizes. |
Work management | Teams use backlog to organize and prioritize project requirements. This backlog is then used for each sprint to accomplish tasks with the highest priority. | Teams are focused on managing the flow of work. They can see which tasks have the highest priority and ensure these tasks are completed first. |
So, you don’t actually need to make a choice between these two approaches if both seem to be beneficial for you. You can use the two together to get the most out of each approach and push the progress of your project forward.
Waterfall Testing Vs Agile Testing Methods
While many people think that waterfall project management methodology is going to oblivion, the numbers clearly state that it’s not the case. According to statistics, 51% of companies use Waterfall to manage their projects, which is quite a substantial amount. With that in mind, it’s worth taking a look at how agile compares to a traditional Waterfall approach to see if it’s the right decision for you.
Right off the bat, the Waterfall model isn’t for everyone. It’s mainly used for simple projects with relatively small budgets or projects with minimal risk of change. Testing is carried out at the end of the development life cycle when all the other phases have been completely wrapped up and serves as a final confirmation that the product is ready and can go public.
As you can imagine, this rigidity in processes doesn’t work for dynamic projects in which requirements can change pretty often, even midway through sprints. If you choose this model, you won’t be able to make any changes until the end of the product development cycle, inevitably leading to increased development costs and an extended time frame.
Considering how speed is important in the modern digital world, the appeal of Agile development methodology is more than obvious. Though not without its risks, it allows teams to pivot their course of action at any point in time without having to follow a specific sequence of steps.
Other differences between agile and waterfall methodologies are listed below:
- In Agile, testing is carried out alongside development, with the QA department and development team closely working together. In waterfall, testing is only done after the completion of development. Also, it’s carried out separately from development.
- The level of involvement of testers in Agile and Waterfall is completely different. In Agile, QA teams are often involved in requirements gathering and analysis, but in Waterfall, they are not.
- In Agile, different testing methods may overlap. In Waterfall, this situation isn’t possible.
- The test plan in Agile is reviewed after each iteration or sprint, while in Waterfall it is reviewed only at the end.
So, you need to start by evaluating your project’s characteristics and how well-defined your requirements are. If there’s the slightest hint they may change in response to the changes in the market, it’s best not to try your chances and go agile.
Agile Testing Best Practices
If you’re just considering diving into the world of agile, you may find it helpful to learn testing best practices. This will help ensure that what you do has an effect on your workflow and speed up the creation of a great quality product.
Define your strategy
First things first, you need to create a testing strategy. That’s where it’s vital to have a clear understanding of what outcomes you want to achieve, how you’re going to track the project’s progress, and what tools you’ll need to use along the way. This strategy should be straightforward and precise while also going in line with the principles of your organization. Aside from that, it should describe the crucial aspects of project development, such as:
- The scope of testing;
- Roles and responsibilities inside a software testing team;
- Types of testing to be used;
- Quality criteria;
- Potential risks and how they can be solved.
Test often
What distinguishes agile testing strategies from any others is that they involve frequent testing. This is one of the benefits of agile testing and an aspect of the work that can’t be overlooked. What’s more, agile testing allows you to incorporate testing as early in the development as possible.
A case in point is the shift-left testing approach, one of the latest web trends. This practice of testing, as the name suggests, moves testing activities closer to the beginning of the SDLC, ensuring that no serious bugs emerge later in development when a huge chunk of work is done.
Automate
Test automation is a key component of agile testing practices. Automating repetitive and time-consuming test cases not only speeds up the testing process but also improves its accuracy.
Automated testing is particularly beneficial for regression testing, where previously tested functionalities need to be retested to ensure that new changes haven’t introduced unexpected issues. Besides, it can be integrated into the CI/CD pipeline to provide immediate feedback on the code quality after the completion of each iteration.