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.
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.
Agile Manifesto
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 −
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
That is, while there is value in the items on
the right, we value the items on the left more.
What is Agile Testing?
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.
Agile Testing Vs.
Waterfall 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.
|
Agile Testing Principles
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 −
o Use reusable checklists to suggest tests.
o Focus on the essence of the test rather than the
incidental details.
o Use lightweight documentation styles/tools.
o Capture test ideas in charters for exploratory
testing.
o 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.
Agile Testing Activities
The Agile Testing Activities at Project Level
are −
·
Release Planning (Test
Plan)
o For every Iteration,
o Agile Testing Activities during an Iteration
·
Regression Testing
·
Release Activities (Test
Related)
The Agile Testing Activities during an iteration
include −
- Participating in iteration planning
- Estimating tasks from the view of testing
- Writing test cases using the feature descriptions
- Unit Testing
- Integration Testing
- Feature Testing
- Defect Fixing
- Integration Testing
- Acceptance Testing
- Status Reporting on Progress of Testing
- Defect Tracking
Comments
Post a Comment