Agile is an iterative development methodology, where both development and testing activities are concurrent. Testing is not a separate phase; Coding and Testing are done interactively and incrementally, resulting in quality end product, which the meets customer requirements. Further, continuous integration results in early defect removal and hence time, effort and cost savings.
The Agile Manifesto was published by a team of software developers in 2001, highlighting the importance of the development team, accommodating changing requirements and customer involvement.
The Agile Manifesto is −
We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value −
That is, while there is value in the items on the right, we value the items on the left more.
Agile Testing is a software testing practice that follows the principles of agile software development.
Agile Testing involves all members of the project team, with special expertise contributed by testers. Testing is not a separate phase and is interwoven with all the development phases such as requirements, design and coding and test case generation. Testing takes place simultaneously through the Development Life Cycle.
Furthermore, with testers participating in the entire Development Lifecycle in conjunction with cross-functional team members, the contribution of testers towards building the software as per the customer requirements, with better design and code would become possible.
Agile Testing covers all the levels of testing and all types of testing.
In a Waterfall Development methodology, the Development Life Cycle activities happen in phases that are sequential. Thus, testing is a separate phase and gets initiated only after the completion of the development phase.
Following are the highlights of differences between Agile Testing and Waterfall Testing −
Agile Testing | Waterfall Testing |
---|---|
Testing is not a separate phase and occurs concurrently with development. | Testing is a separate phase. All levels and types of testing can begin only after the completion of development. |
Testers and developers work together. | Testers work separately from developers. |
Testers are involved in coming up with requirements. This helps in requirements mapping to the behaviors in the real world scenario and also framing the acceptance criteria. Also, logical Acceptance Test Cases would be ready along with the requirements. | Testers may not be involved in the requirements phase. |
Acceptance Testing is done after every iteration and customer feedback is sought. | Acceptance Testing is done only at the end of the project. |
Every iteration completes its own testing thus allowing regression testing to be implemented every time new functions or logic are released. | Regression Testing can be implemented only after the completion of development. |
No time delays between coding and testing. | Usual time delays between coding and testing. |
Continuous testing with overlapping test levels. | Testing is a timed activity and test levels cannot overlap. |
Testing is a best practice. | Testing is often overlooked. |
The principles of Agile testing are −
Testing moves the project forward − Continuous testing is the only way to ensure continuous progress. Agile Testing provides feedback on an ongoing basis and the final product meets the business demands.
Testing is not a phase − Agile team tests alongside the development team to ensure that the features implemented during a given iteration are actually done. Testing is not kept for a later phase.
Everyone tests − In agile testing, the entire team including analysts, developers, and testers test the application. After every iteration, even the customer performs the User Acceptance Testing.
Shortening Feedback Loops − In Agile Testing, the business team get to know the product development for each and every iteration. They are involved in every iteration. Continuous feedback shortens the feedback response time and thus the cost involved in fixing it is less.
Keep the Code Clean − The defects are fixed as they are raised within the same iteration. This ensures clean code at any milestone of development.
Lightweight Documentation − Instead of comprehensive test documentation, Agile testers −
Use reusable checklists to suggest tests.
Focus on the essence of the test rather than the incidental details.
Use lightweight documentation styles/tools.
Capture test ideas in charters for exploratory testing.
Leverage documents for multiple purposes.
Leveraging one test artifact for manual and automated tests − Same test script artifact can be utilized for manual testing and as an input for automated tests. This eliminates the requirement of Manual Test Documentation and then an equivalent Automation Test Script.
“Done Done,” not just done − In Agile, a feature is said to be done not after development but after development and testing.
Test-Last vs. Test Driven − Test Cases are written along with the requirements. Hence, development can be driven by testing. This approach is called Test Driven Development (TDD) and Acceptance Test Driven Development (ATDD). This is in contrast to testing as a last phase in Waterfall Testing.
The Agile Testing Activities at Project Level are −
Release Planning (Test Plan)
For every Iteration,
Agile Testing Activities during an Iteration
Regression Testing
Release Activities (Test Related)
The Agile Testing Activities during an iteration include −