Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

Agile Testing - A better way to understand Agile Testing

Before understanding Agile Testing, we have to first understand the term "Agile".

Agile means "Ability to respond to change quickly, in-order to succeed in uncertain environment".

So what is Agile Testing ?

Testing practice followed in the projects where Agile development is used to develop the software is known as Agile Testing.



How to understand Agile Testing in a better way ?

In order to understand Agile Testing in a better way, we have to understand the below Agile Concepts first:

1. What are the different Software Development Models ?

We have to choose the Software Development Models, based on the Project's aims and goals:

The below are the different software development models available in the market to choose:

  • Waterfall Model
  • Iterative Model
  • Incremental Model
  • Spiral Model
  • Agile Model
  • V Model
  • RAD Model

The below digram, depicts all the Software Development models available in the market:



2. What is Agile Software Development ?

Development of Software using various Agile Development methodologies available in the market is known as Agile Software Development. 

3. What are the different Agile Software development Methodologies available in the market ?

Based on the project needs Agile Software Development, we have to choose the appropriate Agile Development Methodology for developing the software. There are several agile software development methodologies in the market and the below are the most popular ones:

  • Scrum
  • Extreme Programming (XP)
  • Kanban
  • Crystal
  • Dynamic Systems Development Method (DSDM)
  • Lean 
  • Feature-Driven Development
  • Adaptive Software Development

The below digram depicts all the Agile Development Methodologies available in the market:




Though each and every Agile Methodologies shown above has its own approach for developing the software, they all share a common values and principles provided by Agile Manifesto.

The Agile Manifesto emphasizes on the below four core values:


  • People and their interactions over Process and Tools 
  • Working Software over little or no documentation
  • Continuous Customer collaboration instead of negotiating on the requirements provided by Customers while signing the contract
  • Responding to the changes instead of following a specific and lengthy plans

And also, all the Agile Methodologies follow the below attributes in common to make the development process flexible / adaptable:

  • Incremental development 
  • Iterative development
  • Fast and Continuous Feedback during the development process
  • Fast and Continuous Delivery 
  • Changing business requirements during the development process to give better value to the end users
  • Adaptive planning by better understanding the user needs during the development process
  • Engaging other Stake holders during the development process
  • More collaboration during the development process
  • Less documentation required
  • Face to face interactions over documentation
  • Designs will continuously emerge and become better day by day to suite the end user needs
  • Focus on Internal Quality while the development progresses


To support the Agile Manifesto, the below 12 principles needs to be followed by the teams working in Agile development models:


  • Highest priority is to satisfy the customers through early and continuous delivery of valuable software
  • Welcome changing requirements, even late in the development. Agile process harness change for the customer's competitive advantage
  • Deliver working software frequently, from a couple of weeks to couple of months, with a preference to the shorter timescale
  • Business people and developers must work together daily throughout the project
  • Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  • The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. 
  • Working software is the primary measure of progress
  • Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. 
  • Continuous attention to technical excellence and good design enhances agility.
  • Simplicity-The art of maximizing the amount of work not done-is essential
  • The best architectures, requirements, and designs emerge from self-organizing teams
  • At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Agile Practices:

Different methodologies in Agile development are supported by various concrete Agile practices, the below are few notable Agile Practices which are followed by mostly:



Revisiting Agile Testing

Once you have understood the below Agile concepts, understanding the Agile Testing is a piece of cake for you:


  • Agile is one of the Software Development models
  • There are various development methodologies / frameworks in Agile Development model
  • All the Agile development methodologies follow core values and principles of Agile Manifesto
  • To support the Agile development methodologies with the core values and principles of Agile Manifesto, there are various Agile practices

Once you have understood the above four points, go through the below to understand Agile Testing:

Agile Testing is a software testing practice which follows the principles of Agile Software Development. In Agile Testing, from the beginning of the project, the Testing teams works in parallel with the development by collaborating with both Developers and Business team. 

Agile Testing focuses on getting the defects fixed immediately, instead of waiting for the end of the project. Cost are expected to go down as the time between the development and testing decreases.


Software Testing Interview Questions - Part 1

What is Software Testing ? - A detailed and easier way for the beginners to understand what exactly is Software Testing

Before understanding what is a Software Testing, we have to first understand what is meant by the word Testing.

Lets first understand the meaning of the word Testing in the real world.

As human beings, we generally Test something to find-out whether it is working or not.

Example for Testing: Lets say you have brought a new Television and installed it at your home. After installing it, without any delay, you will first check whether your new Television is working or not. The process of checking whether your new Television is working or not is nothing but Testing. You have just tested whether your new TV is working or not.

But, why do we Test ?

We generally Check or Test something to find out whether there are any defects in the Product. In the above example, you have tested the Television to find out whether by chance you have received a defective piece. And have just thought of returning it, if you find any defects in the recent brought TV.

So, what is Software Testing then ?

Instead of performing the Testing on a new Television, if you are performing Testing on a Software, it is know as Software Testing. Hence in Software Testing, you will check whether your Software is working properly or not.

OK, but what is a Software ?

Software is a set of computer programs, written with an intention to operate computer and other related devices.

Examples for Softwares: Browsers, Web Applications, Operating Systems and many more. Even the page, you are reading now is part of a Software only.

What is the purpose of testing a Software ?

The purpose of testing a Software is to find out the mistakes made by developers while developing the code for this Software. Hence the purpose of testing a Software is to find out the defects in the Software.

Who generally tests the Software ?

In straight words, its the job of a Software Tester who is specifically assigned to a Project in-order to test the Software. Hence the role of a Software Tester is to test Software. While the developer is busy in developing the code for a Software, a Software Tester will specifically test the Software to check whether the Software developed by the developer is working without any defects.

What is the purpose of finding defects in a Software ?

Software Tester is generally assigned to a Project, in order to test a Software before it gets released into the market.

If any software is release into the market without performing any testing, there is a good chance that the Software may contain defects.

Lets say an online banking software is released into the market without performing any testing on it and unfortunately there are some defects in the developed Software. The online banking software is displaying wrong account balance in the users account. When any real time user, comes across such kind of defects, the below things may happen:

- He will lose faith on this online banking software
- Raises a case against the bank
- Moves to other bank, as the things the quality of the Software provided by the current bank is bad

So the purpose of finding defects in a Software, is to improve the quality of the Software by removing the defects from it, before it gets released into the market.

But, how do you find defects in a Software ?

The main purpose of Software Testing is to test whether the Software is working as expected and is defect free. But, we need to know how the testers identify defects in a Software.

Software Testers verifies and validates the Software, in order to find the defects.

Verification ?

Verification is the process of checking whether the Software developed by the developers is according to the business requirements and needs. i.e. To check whether the developers have developed a software as specified by the business clients.

In general, development team assigned to develop the project will be provided with a document containing all the requirements that business clients are expecting in the Software. We generally call this document as a Requirements Specification Document.

As Testers, we also collect this document from the developers to check whether the Software developed by the developers is developed according to the requirements specified in the document. This process is known as Verification. Hence verification is the process of checking whether the Software is developed according to the requirements.

Real world example to understand Verification: Lets say you have purchased a TV and are testing the Testing using the User Guide which generally comes along with a TV. Its not about testing whether you are able to turn on and turn off the TV. User guide may include many things like, Connecting the VGA cable, Setting different modes, Operating with a remote and without a remote and the list goes on. So you can perform Verification on TV, by checking whether all the things specified in the User Guide are working. No doubt, you have to perform a large number of verification checks. When you are done with all the checks and have not observed any defects during the check, then you certify that the quality of your newly purchased TV is good.

In Software Testing, Requirements Specification Document is similar to the User Guide in the above example. Hence verification is the process of checking whether all the requirements specified in the Requirements Specification Document are developed properly in the Software under test.

If Software Testers finds any of the requirement in the Requirements Specification Document that is not developed properly in the Software under test, a defect will be reported by the testers and developer needs to fix it.

Example for Verification in terms of Software Testing: Lets say, its specified in the Requirements Specification Document to create a button with text "Submit" on "Login" page. Developers in hurry have developed a button with text "Summit". When they provided this "Login" page to testers for testing, Software Testers will validate the functionality of the "Login" page against the Requirements Specification Document and have identified a defect that the text on the "Submit" button is wrongly spelled as "Summit". Developers will fix this defects, which got resulted out of Validation checks performed by Testing team.

So, what about Validation ?

Though the software got developed according to the requirements, we as a testers have to also perform Validation checks on the Software apart from Verification checks.

Validation is the process of checking whether the Software developed by the developers has met the end users needs or not.

Example for Verification in terms of Software Testing: Lets say, the developers properly followed the Requirements Specification Document and have correctly developed the "Submit" button in the "Login" page without any spelling mistakes. Developers have given the "Login" page to testers, to identify any defects. Software Testers have first performed the verification check and have not found any defects as all the requirements got properly implemented and hence passed the Verification checks. Tester assumes for a while that, he is an end user of the Software and tries to check various operations that an end user generally performs. But, when the Tester tried to click on the "Submit" button on the "Login" page as part of Validation check, he observed that the "Submit" button is not working and hence login is not happening. This kind of checks fall into Validation process. Tester reports a defect based on the Validation check and developer later fixes it.

Hence validation is the process of checking whether the end user is able to use the software.

So, what is Software Testing and what is the purpose of Software Testing?

Software Testing is the process of verifying and validating whether the software program works as expected.

And the purpose of Software Testing is to find the defects in Software, with an intention of improving the quality of the Software before it gets release into the market.