What is Agile Testing

Once in a while an idea comes that brings a paradigm shift in our thought process.  It is this event where we talk what use to happen before it, and what happened after it.  Such events bring a change of tide with themselves and breakthroughs old patterns, wipes them out and establish new ones to help us move forward. In the world of software being built, we see this shift with the AGILE coming into picture and recently Devops.

AGILE is a term used to describe approach to software development which advocates incremental iteration for developing and testing software throughout the software development lifecycle. Unlike waterfall both development and testing activities are in parallel.

What is Agile Software Development?

Agile Software Development Cycle is a combination of “Iterative” and “Increment” model. The main focus of this model is Customer satisfaction by quick delivery of working product in incremental iterations mode.  In agile we divide the complete product into small incremental chunks and then deliver these small working chunks (features) after completing iteration-n (1,2,3…n). See the below diagram for Agile Software Development Life Cycle with Increment and Iteration Model.

 

What is Agile Testing?

Software testing practice that follows the principles of agile software development is called Agile Testing. It is based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. In Agile testing whole team work as a single team and the common objective of the team is that to achieve quality in defined timeline.

One of the major differences in agile and waterfall model is the approach to quality and testing of the product. Testing is not a phase in agile, it is an activity to be done with every iterative phase, which is known as sprint.  With every sprint a shippable part of the product is delivered to the end users who can use it, as it is developed as well as tested and integrated with the rest of the shippable product part

 

Agile Testing Quadrants

As in the case of Traditional Testing, Agile Testing also needs to cover all the Test Levels.

1.       Unit Testing

      2.       Integration Testing

      3.       System Testing

      4.       User Acceptance Testing

Below diagram shows the agile testing quadrants which divide whole process in 4 Quadrants and help to understand who Agile testing is performed.

 

 

Ø  Quadrant Q1 â€“ This represents test-driven development which is a core agile development practice and when test-driven development is used then design becomes better and strong. This Quadrant supports Automation testing and faces the tests such as Unit Test, API Test, Web Services Test and Component tests. Main focus of this Quadrant on internal code quality, improve Design, provide instant feedback by performing the tests. Some of the tools are used in Q1 - TeamCity, xUnit, IntelliJ Idea, etc.

Ø  Quadrant Q2 â€“ This represents illustrating and confirming desired system behavior. This Quadrant supports Automated and Manual Testing and faces the test such as Functional Testing, Story Type, UX Testing, Pair Testing and Testing of possible scenarios and workflows. It focuses on external quality and main objective of this Quadrant to find enough requirements so that developers can start doing code without any interruption. Customer-tester-developer collaboration is increased in this quadrant as well as it helps customers to get advance clarity.

Ø  Quadrant Q3 â€“ This is Real User business driver testing. This quadrant supports manual testing and faces the test such as Exploratory Testing, Pair testing with customer, Usability Testing, User Acceptance Testing, Scenario-based testing. This quadrant concentrates the feedback of Quadrants one and two. In this we evaluate the product and this can we done by demo, quick feedback and ensuring the actual user experience.

Ø  Quadrant Q4 â€“ This is system level and it includes Performance and Load testing as well. System or Operational Acceptance Level, Technology Facing and Focus on Performance, Load, Stress, Maintainability, Scalability Tests, Security testing, Data migration testing and Infrastructure testing. Special tools can be used for these tests along with automation testing. This is basically the non-functional sector and main focus on “non-function” requirements rather than “functional”. Some of the tools are used in Q4 - jConsole, jProfiler, Loadrunner, jMeter etc.

Framework that supports Agile based Testing:

In Agile, Testers are responsible for the following tasks such as focusing on the expected bevaiour of the product, help developers in creating effective and efficient unit test, developing automation scripts, integrate automation testing tools with continuous integration for regression testing and so on.  Few example of Framework which supported agile testing are given below:

Ø  Selenium for Functional Testing

Ø  Hudson for CI Framework

Ø  CruiseControl  for CI Framework

Ø  JUnit for Java Unit Test

Ø  NUnit for .Net Unit Test

Ø  Jester for Java – Mutation Testing/Automated Error Seeding

Ø  Ant for Java-Automation Build

Some tests (The acceptance test automation) are written by the customers or product owner/business analysts that show the expected behavior of the product.  Agile Tools and frameworks that support Acceptance test automation:

Ø  FIT is based on Acceptance Test Automation

Ø  FitNesse is also based on Acceptance Test Automation

Ø  Ruby for Acceptance Test Automation

Ø  Concordion for Acceptance Test Automation

Ø  Cucumber is based on BBD framework.

 

About Author 

Niharika, has an overall 6 years of experience in software testing. She has worked on varied applications like Desktop application, E-Commerce Web Application, Mobile Application and Casino games. An  ISTQB Certified Tester, she currently resides at  San Fransisco Bay Area, USA.