As the complexity of software development process is increasing continuously, the software testing approaches needs to evolve to keep up with the development approaches. Agile testing is a new age approach which focuses on testing smarter rather than putting a lot of efforts yet it delivers high-quality products.
The testers and developers need a higher level of collaboration in agile testing. The testers have to provide corrective feedback to the development team during the development cycle. This is the age of on-going integration between testing and development approaches.
What is Agile Testing?
Agile testing is a software testing process that follows the principles of agile software development. Agile testing aligns with iterative development methodology in which requirements develop gradually from customers and testing teams. The development is aligned with customer requirements.
Agile testing is a continuous process rather than being sequential. The testing begins at the start of the project and there is ongoing integration between testing and development. The common objective of agile development and testing is to achieve a high product quality.
Agile testing vs. Waterfall testing
Agile testing is adopted while working with agile development approach whereas waterfall testing is used in the waterfall development model. Below are some high-level differences between agile testing and waterfall testing.
|Agile testing is unstructured as compared to the waterfall approach and there is minimal planning.|
|In the Waterfall model, the testing process is more structured and there is a detailed description of the testing phase.|
|Agile testing is well suited for small projects.||Waterfall testing can be adopted for all sorts of projects.|
|As testing begins at the start of the project, errors can be fixed in the middle of the project.||In the waterfall model, the product is tested at the end of the development. For any changes, the project has to start from the beginning.|
|There is very less documentation required for agile testing.||The testing in the waterfall approach requires elaborate documentation.|
|In this approach, every iteration has its own testing phase. The regression tests can be run every time new functions or logic are released.||The testing begins only after the completion of the development phase.|
|In agile testing shippable features of the product are delivered to the customer at the end of an iteration.||In this traditional approach, all features developed are delivered altogether after the implementation phase.|
|Testers and developers work closely in Agile testing.||Testers and developers work separately.|
|User acceptance is performed at the end of every sprint.||User acceptance can only be performed at the end of the project.|
|The testers need to establish communication with developers to analyze requirements and planning.||Developers are not involved in analyzing requirements and planning process.|
Principles of Agile Testing
Testing is continuous: Agile team tests continuously because it is the only way to ensure continuous progress of the product.
Continuous feedback- Agile testing provides feedback on an ongoing basis and this is how your product meets the business needs.
Tests performed by the whole team: In a traditional software development life cycle, only the test team is responsible for testing but in agile testing, the developers and the business analysts also test the application.
Decrease time of feedback response: The business team is involved in each iteration in agile testing & continuous feedback shortens the time of feedback response.
Simplified & clean code: All the defects which are raised by the agile team are fixed within the same iteration and it helps in keeping the code clean and simplified.
Less documentation: Agile teams use a reusable checklist, the team focuses on the test instead of the incidental details.
Test Driven: In agile methods, testing is performed at the time of implementation whereas, in the traditional process, the testing is performed after implementation.
Agile testing methods
There are various agile testing methods as follows:
- Behavior Driven Development (BDD)
- Acceptance Test Driven Development (ATDD)
- Exploratory Testing
Behavior Driven Development (BDD)
Behavior Driven Development (BDD) improves communication amongst project stakeholders so that all members correctly understand each feature before the development process starts. There is continuous example-based communication between developers, testers, and business analysts.
The examples are called Scenarios which are written in a special format called Gherkin Given/When/Then syntax. The scenarios hold information on how a given feature should behave in different situations with different input parameters. These are called “Executable Specifications” as it comprises of both specification and inputs to the automated tests.
Acceptance Test Driven Development (ATDD)
ATDD focuses on involving team members with different perspectives such as the customer, developer, and tester. Three Amigos meetings are held to formulate acceptance tests incorporating perspectives of the customer, development, and testing. The customer is focused on the problem that is to be solved, the development is focused on how the problem will be solved whereas the testing is focused on what could go wrong. The acceptance tests are a representation of the user’s point of view and it describes how the system will function. It also helps to verify that the system functions as it is supposed to. In some instances acceptance tests are automated.
In this type of testing, the test design and test execution phase go hand in hand. Exploratory testing emphasizes working software over comprehensive documentation. The individuals and interactions are more important than the process and tools. Customer collaboration holds greater value than contract negotiation. Exploratory testing is more adaptable to changes. In this testers identify the functionality of an application by exploring the application. The testers try to learn the application, and design & execute the test plans according to their findings.
Advantages of Agile Testing
The benefits of the agile testing approach are as follows:
- It saves time and money
- Agile testing reduces documentation
- It is flexible and highly adaptable to changes
- It provides a way for receiving regular feedback from the end user
- Better determination of issues through daily meetings
Test Plan for Agile
In agile testing, the test plan is written as well as updated for every release. A test plan in agile includes:
- The scope of the testing
- Consolidating new functionalities to be tested
- Types of testing/Levels of testing
- Performance & load testing
- Consideration of infrastructure
- Risks Plan
- Planning of resources
- Deliverables & Milestones
Agile Testing Lifecycle
The agile testing lifecycle includes the following 5 phases:
- Impact assessment
- Agile Testing Planning
- Release Readiness
- Daily Scrums
- Test Agility Review
Agile testing not only facilitates the early detection of defects but also reduces the cost of bugs by fixing them early. This approach also yields a customer-centric approach by delivering a high-quality product as early as possible.