Do you remember the pre agile testing era? Imagine this storyline. Your software is scheduled to be released three weeks from today. Before the launch date, software testers start examining the code, although they’re pretty sure the development team did a great job these past four months. Their high hopes go down the drain when they discover 15 high-alert bugs, postponing the release date by weeks.
The scenario is software teams’ worst nightmare. It’s stressful, it’s cruel, and it’s nerve-wracking. However, there’s good news for those teams that find themselves caught in a case of escalating defects! The scenario can be avoided. And that’s only possible through agile testing.
What is Agile Testing?
In the early days of software development, teams were following the Waterfall software development methodology. Software testing came second to last on the list, only before the delivery of the finished product. Testers were kept in the dark, validating the features outlined in the requirements document. The methodology was ineffective. Proof of the ineffectiveness were the overtime hours and the costs that exceeded the budget.
The idea to include testers at the end of the development process evolved and the agile testing era began. The agile testing era includes software testers at the beginning of the project. There’s less documentation and more room for adaptation. Instead of testing the software right before deployment, agile testing happens during each two-week sprint. One of the biggest advantages of agile testing is the speed of the whole process, and lowering the costs until the product is released.
But, what is agile testing and why is it important? Agile software testing is the result of the worldwide realization that the needs of the enterprise are always changing during the development process. Minds change and the product needs to adapt. In agile testing, testers are involved directly in the development process so they can detect bugs as early as possible. The agile team resolves issues at every stage of the development process, helping the product to be released on time.
So, the importance of agile testing lays in the communication and collaboration between testers and developers. That's also one of the leading agile testing principles, resulting in a continuous workflow and effective results.
What are the Main Benefits of Agile Testing?
Agile testing has three main benefits: increased interaction, a high-quality product, and faster delivery.
Increased interaction. The highlight of agile testing are teams, people and interactions. Team members closely communicate about any setbacks, preferences for specific tools, and methodologies. Testers also interact with developers, business analysts, as well as with the Scrum Master and Product Owner during their sprints. These interactions make the process of testing to be agile.
High-quality product. Unlike with traditional testing where the product is tested at the end of the development, testing in agile begins at the start of the project. In this way, testers can fix any issues in the middle of the project. In an agile setting, testers are in close communication with developers. Testers and developers are equally involved in the process and their skills are put to good use. There’s continuous feedback and any bugs can easily be removed. What’s more, testers and developers are in communication with the customer who can give their input to help them develop a high-quality product.
Faster delivery. With waterfall testing, the testing of the product takes place at the end of the development. If anything needs altering, the project starts from the beginning. This might result in delayed delivery. When teams use agile in testing, there’s continuous feedback and communication. The development process consists of separate sprints and testers can fix errors in the middle of the project. The end result? Faster and timely delivery of a high-quality product.
What are the Main Principles of Agile Testing?
Lisa Crispin and Janet Gregory, agile testing practitioners and consultants, discuss the main principles of agile software testing in their book Agile Testing: A Practical Guide for Testers and Agile Teams. They outline 10 main principles:
- Provide continuous feedback. In agile methodology in testing, there should be continuous feedback between the testers, developers, business analysts, Scrum Master, and Product Owner. This is the key to a high-quality product.
- Deliver value to the customer. The goal of every agile tester should be to develop the best product possible for the customer.
- Enable face-to-face communication. In order to avoid any errors, the agile tester should communicate face-to-face with developers.
- Have courage. Testers must find the courage to fight for the fixes they think are crucial for the success of the project.
- Keep it simple. Testers should perform only necessary tests. They should strive to deliver the simplest product that holds the most value.
- Practice continuous improvement. The best agile testers are the ones who consistently improve themselves and never stop learning new things.
- Respond to change. Agile testers should also be flexible and adaptable. They should learn how to adapt to the changing needs of the product and the marketplace.
- Self-organize. The agile tester is not passive. They have self-organization skills and actively look for potential issues and work together with other people to fix them.
- Focus on people. Agile testers place an emphasis on social interaction. They have great communication skills that help them deliver a product that is practical and high-grade.
- Enjoy. This is probably the most important agile testing principle. Those who enjoy their work are the best workers. Their passion and motivation help them build a great and successful product.
What Are the Skills an Ideal Agile Tester Should Have?
If we take a look at the State of Testing Report 2018, we will be able to draw up the profile of an ideal agile tester. According to their statistics, the perfect tester should possess great communication skills, followed by automation and scripting skills and general testing skills.
Let’s take a closer look at the statistics:
- 75% said that communication skills are the most important.
- 65% said that automation and scripting skills are important skills of a good agile tester.
- 62% listed general testing skills as important.
- 55% reported that any good tester should possess API testing skills.
- 45% said that testers should have knowledge of agile methodologies.
What are the Most Common Agile Testing Methodologies?
As the name describes, exploratory testing involves exploring, discovery, and learning. Testers explore the application to discover any edge cases and learn what needs to be changed. They put themselves in the shoes of the personas who will use the application to find out what needs fixing and updating.
Exploratory testing is a cyclical practice that starts from test design and progresses to test execution, analysis, learning, and then the process starts all over again. There are no scrips, no predefined set of instructions. The agile tester relies on their skills to explore and update the product.
Acceptance Test-Driven Development
Acceptance-driven development is collaborative testing that brings together team members with a different perspective. Customers, testers, and developers collaborate to write acceptance tests that represent the user's point of view.
This gives them insight into what customers expect from the product and how the product will be used. It’s the best way to make sure that everyone on the team has the same shared understanding of what they’re actually building.
Behavior-driven development refines the process of test-driven development (TDD) and acceptance test-driven development (ATDD). It augments TDD and ATDD by following these five basic steps:
- Begin with user stories.
- Automate your BDD scenarios.
- Implement the features.
- Run the automated BDD scenarios to show the feature is completed.
In general, a software project involves several software modules that are coded by different developers. Although each software module is tested, defects can still exist for reasons like inadequate exception handling or developer’s error.
What integration testing does is combine and test these individual modules as a group. The aim of this type of testing is to expose errors in the interaction between integrated modules.
There are several essential ingredients for a successful agile testing process. First and foremost, you need to hire testers who possess crucial skills like self-organization, communication, and scripting. Then, you need to choose the right agile testing methodology for your team. Make sure your testers collaborate closely with the developers to ensure successful delivery of a high-grade product.
If you manage to create this agile testing environment, the number of bugs will drop significantly, there’ll be less need for rework, and you’ll save huge amounts of time in the end. You'll be left wondering: "Why didn't we adopt agile test approach sooner?”
To sum up:
- Agile testing era includes software testers at the beginning of the project. There’s less documentation and more room for adaptation.
- Instead of testing the software right before deployment, the agile way happens during each two-week sprint.
- Agile testing has three main benefits: increased interaction, a high-quality product, a faster delivery.
- Some of the main principles of agile testing include continuous feedback, constant improvement, and focusing on people.
- The perfect tester should possess great communication skills, automation and scripting skills, and general testing skills.
- The most common agile testing methodologies are exploratory testing, acceptance test-driven development, behavior-driven development, and integration testing.