Testing in Agile Methodology

Overview on the article

WHAT IS AGILE TESTING 

Agile testing focuses on continuous and integrated testing designed the agile way following the agile principles. 

Agile has been proven to be a boon to developing software products.It uses an iterative approach to development and similarly an iterative approach towards testing. In Agile, development and testing goes hand in hand. Testing is not considered as a separate process here, no one in Agile world bothers to wait for development to get completed before starting to test quality. Everything is preferred parallel here. On the contrary, agile testing offers approaches where you need to design the testing around any kind of development even before the development kicks off.

If you have worked in scrum methodology in your projects, you must be able to relate to it. There are time boxed sprints in scrum where development and testing need to be completed at the same time and QA is the responsibility of All’.

Another aspect of agile testing is automation, as your product grows automation is the key to keep up the quality. As and when you start merging the block of work done for this iteration with the full already developed product, automated test threads start spawning to make sure the existing functionalities are still intact and your new work is complementing the work done earlier.

WHY DO WE DO AGILE TESTING?

Every software development methodology no matter what we choose requires testing to ensure the quality of the project they are implemented in. Similarly, agile projects also need testing to discover the issues / defects before delivering the code to customers.

Since we work differently in agile than traditional projects, the approach towards testing is also different.

HOW IS AGILE TESTING DIFFERENT? 

Testing also got reformed when the world moved from waterfall to agile, testing in agile projects religiously follow agile principles. Some pointers below help us understand how agile testing is unlike testing in waterfall projects.

  • Agile Testing is merged tightly with development/programming and is not a separate process.
  • Agile testing touches all the aspects of your testing including acceptance, load, performance, coverage and edge cases.
  • Agile testing requires high domain knowledge and developed skills.
  • Agile testing is done in daily collaboration with BAs, Developers, Product Owner.
  • Agile testing adapts itself and keeps on changing their processes by learning from their past deliveries.
  • Agile testing focuses on preventive testing rather than finding issues once the full development is done.

More about agile testing can be understood by Agile Test Pyramid. 

AGILE TESTING PYRAMID

Agile testing pyramid was proposed by Mike Cohn

The pyramid provides a simplistic representational view of agile testing. The below figure helps us to frame out the structure of testing in agile projects. Agile testing is just the inverse of the traditional testing. Agile suggests having a strong base for automated unit testing and to do less of gui based manual testing to capture issues left by automated testing.

Agile Testing Pyramid
Figure 1

Let’s discuss the phases of Agile Test Pyramid

GUI Testing:  This is an exploratory testing done by agile team members. This testing is done from end users’ point of view where testers explore the cases in the application which might lead to potential bugs. Exploratory testing requires efficient knowledge of the product so that testers can think in terms of end users’ point of view. The goal is to find those bugs which are missed by the automated test cases. This testing does not have any rules and the tester has the freedom to optimize the quality of the software.

Acceptance Testing:  This layer in the figure seems to be simple but in today’s world this layer refers to an application programming interface testing which includes functional testing, performance testing, load testing, integration testing as well as testing if the software is user friendly or not. This testing is focused to make sure your business functionality works fine even in extreme conditions. Few examples of extreme conditions are if load is more than expected , sudden failures. How to implement and what to test varies in this testing layer with each application.

Unit Testing:  This layer forms the base of agile test pyramid and refers to test the unit which has been developed by the team. Unit test automated scripts/test cases are written to make sure that the piece of code developed actually fulfils the requirement and is robust enough to run without failure under several scenarios. In Agile, unit tests are written before the development. TDD (Test Driven Development) is one such example.TDD proposes developers to write the unit test cases first and then write the code which is able to pass through them.

The focus is to catch most of the bugs through this automated testing layer. As an example some of the projects use JUnit for java based projects and xUnit for .net based projects.

AGILE TESTING LIFECYCLE

Agile testing lifecycle is based on the agile test pyramid.It involves different agile testing levels at different phases.

Figure 2

Figure 2 shows a typical agile lifecycle.

Let’s discuss in brief about them:

PLAN: This is where all the stakeholders meet and discuss different requirements / user stories. Since Agile believes in working through iterations, chunks of work are discussed and then planned to be developed and tested. Planning will include what needs to be tested, how it needs to be tested and where all it needs to be tested.

DISCUSS: Discussions are an integral part of agile team.Scrum teams has daily discussions where they discuss what they did yesterday, what they will be doing today and what issues they are facing. If we are working in scrum same discussions are done by testers as well.

Agile promotes frequent discussions and face to face talks over other communication means hence testers get an opportunity to discuss the issues and remove obstacles if any.

EXECUTION:  Once the requirements are clear testing needs to be executed. In Agile testing is not limited just to manual testing but automation testing plays a good role here. If you are doing either exploratory testing or writing good test cases using any framework the above two levels help in actually implementing and executing the test cases. Execution of tests will be at different levels for example unit testing while writing the code, manual testing to ensure that edge cases are covered and performance testing to see if the time taken is acceptable.

RELEASE READINESS: Readiness assessment is done in each iteration for all agile projects. Readiness is measured through various attributes already described as Definition of Done which either provide a go ahead or a stop signal to ship this block-of-code to already delivered work.

DELIVER:  Continuous delivery is one of the agile principles which promotes to test smaller code and put it to the continuous delivery pipeline.This is absolutely mandatory to reach to a logical conclusion and get the acceptance process started from the customers.

FEEDBACK AND LESSONS LEARNT: In Agile feedback is shared by customers, end users, product owner and other stakeholders for improvements and to identify major flaws sooner than later. Feedback and looking into what went wrong helps to understand what should have been tested and if anything was missed in the manual test cases or automated test use cases.

SUMMARY

To summarise agile testing is just an approach to testing in agile projects, it is what we do in agile projects to make sure that we prevent defects and build in high quality.Agile testing encourages parallelism, automation and continuous delivery feedback.

Scroll to Top