0% found this document useful (0 votes)
60 views

Chapter 8 Agile Testing v1.1

This document discusses agile testing principles and methods. It provides an overview of agile testing and compares it to traditional waterfall testing. The key principles of agile testing include everyone testing, testing moving the project forward, testing not being a separate phase, and shortening feedback response time. Agile testing is iterative and allows requirements to grow through collaboration, while waterfall is sequential.

Uploaded by

sai prathyush
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
60 views

Chapter 8 Agile Testing v1.1

This document discusses agile testing principles and methods. It provides an overview of agile testing and compares it to traditional waterfall testing. The key principles of agile testing include everyone testing, testing moving the project forward, testing not being a separate phase, and shortening feedback response time. Agile testing is iterative and allows requirements to grow through collaboration, while waterfall is sequential.

Uploaded by

sai prathyush
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 23

Chapter 8 – Agile Testing

Certificate in Software Testing Skill

Page 1 of 23
Confidentiality Statement

This document should not be carried outside the physical and virtual boundaries of TCS and
its client work locations. Sharing this document with any person other than a TCS associate
would tantamount to violation of confidentiality agreement signed by you while joining TCS.

Notice
The information given in this course material is merely for reference. Certain third party
terminologies or matter that may be appearing in the course are used only for contextual
identification and explanation, without an intention to infringe.
Certificate in Software Testing Skill TCS Business Domain Academy

Contents
Chapter-8 Agile Testing ..................................................................................................4
8.1 Overview and Principles of Agile Testing ............................................................... 5
8.2 Agile Test Planning and Strategies ........................................................................9
8.3 Agile Testing Methods, Metrics and Benefits ....................................................... 13
Summary ........................................................................................................................22

Page 3 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

Chapter-8 Agile Testing

Introduction
Software development day by day becomes more complex and conventional models cannot
effectively adapt to the continuous and numerous changes that occur.
Agile is an iterative development methodology, where requirements grow through
collaboration between the customer and self-organizing teams and agile process aligns
development with customer needs
A software testing follows the principle of agile software development (ASD) is called Agile
Testing.

Learning Objective
After reading this chapter, you will be able to understand:
• What is Agile Testing
• Advantages & Disadvantages of Agile Testing
• Principles of Agile Testing
• Difference between agile and traditional method
• Test Plan for Agile
• Agile Testing Strategies
• Agile Testing Methods
• Agile Metrics
• Benefits & best practice in agile testing.

Page 4 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

8.1 Overview and Principles of Agile Testing


This section gives an overview of agile testing and various principles for the same. Further,
this section also highlights differences between traditional waterfall based testing and agile
testing.

8.1.1 Overview of Agile Testing


Most of the software development life cycle methodologies are either iterative or follow a
sequential model (as the waterfall model does). Now software development becomes more
complex, these models cannot efficiently adapt to the continuous and numerous changes
that occur. A software testing follows the principle of agile software development (ASD) is
called Agile Testing. Agile is an iterative development methodology, where requirements
grow through collaboration between the customer and self-organizing teams and agile
process aligns development with customer needs.

Agile methodology was developed to responds to the changes rapidly and smoothly.
Although the iterative methodologies incline to remove the disadvantages of sequential
models, but they still are based on the traditional waterfall approach. Agile methodology is
a group of values, principles and practices that integrates iterative development, test, and
feedback into a new style of development.
An Agile means-
• Initiate action promptly
• Notice changes early
• Have feasible plan to house changes
• Flexibility to plan again, reworks and ready to change any time.

Agile testing involves testing from customer perspective as early as possible and frequently
as code becomes available and stable enough from module/unit level testing.
Table 1 Describes advantages and disadvantages of agile testing.
Table 1 Advantages and disadvantages of agile testing

Advantages Disadvantages

It uses less documentation and saves a lot of


Larger and complex projects, it is very
time and money by this.
difficult to decide the efforts estimation

Page 5 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

Advantages Disadvantages

at the beginning of the software


development

If any new enhancements or change request Agile methodology pays less


comes during the development phase of importance for Designing &
SDLC, it can be applied without considering Documentation.
the budget constraint

There is chance of messing up project if


We can fix the issues in advance as there is
the client is not clear about his
daily meetings and discussions and
requirements.
therefore able to work on it accordingly

Quick development and testing helps to


recognize the existing gaps in either An Experience resource will be needed
requirements or technology used and can for agile methodology.
try to find the workaround.

8.1.2 Principles of Agile Testing


Following are key principles of agile based testing;
• Everyone tests: In conventional Software development life cycle, only test team
tests while in agile including developers and BA's test the application.
• Testing moves the project forward: When we following conventional methods,
testing are considered as quality gate but in agile testing provide feedback on an
ongoing basis and the product meets the demands of business.
• Testing is not a Phase: Agile team tests continuously and this continuous testing is
the only way to guarantee continuous progress.
• Shortening Feedback Response Time: In conventional software development life
cycle (SDLC), the Business team will get to know the product development only
during the acceptance testing, while in agile testing for each and every iteration, they
are involved and continuous feedback cuts the feedback response time and cost
involved in fixing is also less.

Page 6 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

• Clean Code: Raised defects\bugs are fixed within the same iteration and thereby
keeping the code clean.
• Reduce Test Documentation: Instead of very lengthy documentation, agile testers
use reusable checklists, focus on the core of the test rather than the incidental details.
• Test Driven: In agile testing, testing is done while implementation where in
conventional methods, testing is performed after implementation.

8.1.3 Difference between Agile and Traditional Method


Traditional model(i.e. Waterfall model) a process in software development, where all the
development phases such as requirement, designing, implementation, verification and
maintenance were carried out distinctly and executed only after the completion of each
phase. The major weakness of this model is that, any in between changes from the client
cannot be included. Since the working model reaches the client only at the final stage of the
development process, there can be chances of misunderstanding of requirements, which
consumes more time in fixing defects. Here come the advantages of agile model. While, Agile
Model is an iterative and incremental model where all the development processes are carried
out concurrently. Here in agile model, there are more of interactions than processes. In this
model client can view the so far all completed tasks and the changes can be easily
incorporated. Figure 1 illustrates the difference between the two approaches.

Table 2 highlights the difference between agile model and traditional (waterfall) model

Figure 1 Difference between traditional (waterfall) and agile development

Page 7 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

Figure 2 Diff. between Traditional vs Agile

Table 2 Difference between Agile Model and Traditional (Waterfall) Model

Agile Model Traditional Model(Waterfall Model)


Agile method is incremental and iterative Development of the software flows
approach to software design sequentially from start phase to end phase
The agile process is broken into individual The design process is not broken into
models that designers work on. individual models.
Customer has an early and frequent Customer can only see the product at the end
opportunity to look at the product and make of all project phases.
decision and changes to the project.
Agile model is considered unstructured Waterfall model are more secure because
compared to the conventional model. they are so plan oriented model.

Page 8 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

Agile Model Traditional Model(Waterfall Model)


Small projects can be implemented very All kinds of project can be estimated and
quickly. But for large projects, it is difficult to completed.
estimate the development time.
In this model, error can be fixed in the middle Only at the end Phase, the whole product is
of the project. tested. If the requirement error is found or any
changes have to be made, the project has to
start from the beginning phase.
Development process is iterative, and the Development process is phased, and the
project is executed in small (2-4) weeks’ time phase is much bigger than agile iterations.
iterations.
Documentation appears less priority than Documentation is priority task and can use for
software development. training and upgrade the software with
another team.
In Agile, each iteration has its own testing In traditional method testing phase is
phase and It allows implementing regression executed only after the development phase
testing each time new functions or logic is because separate parts are not fully
released. functional.
In agile testing shippable features of the All features developed are delivered at once
product is delivered after an iteration end. after end of the last phase.
New features are practical right after
shipment.
In Agile testing ,testers and developers work Team of testers work separately from
together developers.
In Agile, user acceptance is performed at the User acceptance is performed at the end of
end of every sprint. the project phases.

8.2 Agile Test Planning and Strategies


This section describes agile test planning and various strategies to achieve the objective.

Page 9 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

8.2.1 Test Plan for Agile


In an agile model, test plan is written and updated for every release. The agile test plan
contains types of testing done in that iteration like test data requirements, infrastructure
requirements, test environments and test results.

Typical test plans in agile contains


• Testing Scope
• New functionalities which are being tested.
• Level and Types of testing based on the features complication
• Load and Performance Testing
• Infrastructure consideration.
• Mitigation or Risks Plan
• Resourcing.
• Deliverables and Milestones etc.

8.2.2 Agile Testing Strategies


Agile Testing life cycle spans through four stages as shown in Figure 3.

Figure 3 Agile Testing Life Cycle

(A) Iteration 0

During first stage or iteration 0, we perform initial setup tasks which include identifying
people for testing installation different testing tools and scheduling resources (usability
testing lab) etc. The following steps are set to accomplish in Iteration 0.

• Creating a business case for the project

Page 10 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

• Create the boundary conditions and the project scope

• Outline the key business requirements and use cases that will drive the design trade-
offs

• Sketch one or more candidate architectures

• Identify the risk

• Cost estimation and prepare a preliminary project documents

(B) Construction Iterations


The second phase is construction Iterations, the majority of the testing happens during this
phase. This phase is a set of iterations to build an increment of the solution. In order to do
the same, within each iteration, the team implements a hybrid of practices from XP, Scrum,
Agile modelling, and agile data etc. and so on.

In construction iteration phase, agile team follows the prioritized requirement practice, with
each iteration they take the most vital requirements remaining from the work item stack and
implement them.

Construction iteration phase is classified into two parts, confirmatory testing and
investigative testing. Confirmatory testing focuses on verifying that the system fulfils the
intent of the stakeholders as defined to the team to date, and is performed by the team.
While the investigative testing detects the problem that confirmatory team have ignored or
skipped. In Investigative testing, tester determines the possible problems in the form of
defect stories. Investigative testing deals with common issues like integration testing, load/
stress testing and security testing.
Again for, confirmatory testing are two aspects one is developer testing and other is agile
acceptance testing. Both of them are automated to enable nonstop regression testing
throughout the development lifecycle.
Agile acceptance testing is a combination of traditional acceptance testing and functional
tastings, the development and stakeholders are doing it together. While developer testing is
a combination of traditional unit testing and service integration testing. Developer testing
authenticates both the application code and the database schema.

(C) Release End Game OR Transition Phase

Page 11 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

The goal of “Release (End Game)” or transition phase is to deploy your system successfully
into production environment. The activities of this phase are training of end users, support
people and operational peoples.it also includes marketing of the product release, back-up &
restoration, finalization of system and user documentations.

The final testing stage contains full system testing and acceptance testing. To finish your final
testing stage without any problems, you should have to test the product more thoroughly
while it is in construction iterations stage. During this phase, testers will be working on its
defect stories.

(D) Production
The agile testing quadrant splits the whole process in four Quadrants to helps in
understanding how agile testing is performed (Figure 4)

Figure 4 Agile Testing Quadrant

a) Agile Quadrant I: - The main focus of this quadrant is internal code quality and this
quadrant consists of test cases which are technology driven and are implemented to
support the team. Its includes

• Unit Tests
• Component Tests

Page 12 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

b.) Agile Quadrant II: - This quadrant contains test cases that are business driven and are
implemented to support the team. Focuses of this quadrant is on the requirements. The
kind of test performed in this phase is below

• Testing of examples of possible workflows and scenarios.


• Testing of user experience as prototypes
• Pair testing

c.) Agile Quadrant III– This quadrant provides feedback to quadrants one and two. The
test cases can be used as the basis to perform automation testing. In this quadrant,
several rounds of iteration reviews are carry through which builds sureness in the
product. The kind of testing done in this quadrant is

• Usability Testing
• Exploratory Testing
• Pair testing with customers
• Collaborative testing
• User acceptance testing

d) Agile Quadrant IV– This quadrant focuses on the non-functional requirements such as
performance, security, load, stability, etc. With the help of this quadrant, the application
is made to deliver the non-functional qualities and expected value.

• Non-functional tests such as stress and performance testing


• Security testing with respect to authentication and hacking
• Infrastructure testing
• Data migration testing
• Scalability testing
• Data migration testing
• Scalability testing
• Load testing

8.3 Agile Testing Methods, Metrics and Benefits

8.3.1 Agile Testing Methods


There are various methods present in agile testing are illustrated in figure 4.

• Scrum
• Crystal Methodologies

Page 13 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

• Extreme programing(XP)
• Feature Driven Development
• Dynamic Systems Development Method(DSDM)
• Lean software Development

Figure 5 Various Methods of Agile Testing

Scrum
In Scrum the tasks are divided into small time slots to deliver specific features in the release
so that the software build can be delivered after every iteration. Builds are incremental in
terms of features and the final software build has all feature required by client.

Below are some features of the Agile Methodology


• All the users or the stakeholders are actively involved
• The project team is responsible to make decisions
• Requirements are captured at high level
• Small, incremental releases and iterations are developed
• Focus is on frequent delivery of products
• Each set of features is completed before moving on to the next iteration
• Testing is done during the project lifecycle – test early and often

Page 14 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

• Iterative development technology where requirements progress through


collaboration between the customers and self-organizing teams

Role of a tester in Release and Sprint Planning


Following are responsibilities of a tester in release and sprint planning:
• Understand user stories and acceptance measures.
• User stories get explained from the respective stakeholders where there is
inadequate information
• High level test strategy has to be decided for whole release
• All risk that might occurs at the time of release needs to be noted or documented
• Level and Number of testing types need to be decided and discussed
• Estimate time for each user story test case creation and execution
• Break user stories into different testing tasks
• Decide each story test coverage
• Acceptance measures for user stories needs to be defined
• Understand and plan for user stories automation and support various levels of testing

Role of a tester in Scrum


Following are roles and responsibilities of a tester in scrum meetings:
• Customer satisfaction through delivery of high-quality software which is earlier and
is highest priority
• Engagement is early during the project from sprint planning but the QA activities are
same
• Business people, developers, and testers must work together throughout the project
• Discuss and understand each user story with stakeholders and then decide on
acceptance conditions for the same.
• Welcome changing requirements. Tester needs to be flexible to any changes.
• Define activities for themselves to estimate time, updating test cases as and when
changes appear, complete testing within the sprint time etc.
• User Story level estimation needs to be done and time needs to be assigned for each
user story.
• Test Cases needs to be developed as per the use story acceptance measures and
needs to be change whenever there is a change in user story

Page 15 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

• Deliver high quality software iteratively from a couple of weeks to a couple of months
• QA needs to track the progress of testing on a daily basis with continuous feedback

Challenges of Agile scrum testing


Following are challenges faced in agile scrum testing:
• Testing efforts for each user story needs to be estimated
• Volume and speed of change.- Dynamic requirements
• Regression risk increases with frequent code changes
• Environment and resource constraints v/s team’s capacity
• Test planning and test execution is simultaneous
• If customer do not have clarity on requirement team direction may go in different
direction

Crystal Methodology
The Crystal methodology is one of the most lightweight, adaptable approaches to software
development. Crystal is actually contained of a family of agile methodologies such as Crystal
Clear, Crystal Yellow, Crystal Orange and others, whose unique characteristics are driven by
several factors such as team size, system criticality, and project priorities etc.

Crystal Methodology is based on three concepts


• Chartering: Several activities are involve in this phase are creating a development
team, performing a preliminary feasibility analysis, developing an initial plan and
fine-tuning the development methodology.
• Cyclic delivery: The main development phase consists of more than two delivery
cycles, during which the
 Team updates and refines the release plan
 Implements a subset of the requirements through one or more
program test integrate iterations
 Integrated product is delivered to real users
 Review of the project plan and adopted development methodology
• Wrap Up: The activities in this phase are deployment into the user environment,
post- deployment reviews and reflections.

Page 16 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

Extreme Programming
This technique is very helpful when there is continuously changing demands or requirements
from the customers or when they are not sure about the functionality of the system. It
supports frequent "releases" of the product in short development cycles, which inherently
improves the productivity of the system and also introduces a checkpoint where any
customer requirements can be easily implemented.

In Extreme Programming, rather than designing whole of the system at the start of the
project, the preliminary design work is reduced to solving the simple tasks that have already
been identified.

The developers communicate directly with customers and other developers to understand
the initial requirements. They start with a very simple task and then get feedback by testing
their software as soon as it is developed.

The system is delivered to the customers as soon as possible, and the requirements are
refined or added based on customer feedback.

In below condition we can use Extreme programming

When the customer does not have a strong understanding of the details of the new system.
The developers interact constantly with the customer, delivering small pieces of the
application to the customer for feedback, and taking corrective action as necessary.

When the customer has unclear understanding of the details of the new system. The
developers interact continuously with the customer, delivering small pieces of the application
to the customer for feedback, and taking corrective action as necessary.

When you can afford to create automated unit test and functional tests. In some
circumstances, you might need to change the system design so that each module can be
tested in isolation using automated unit tests.

Page 17 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

When the team size is not very large (usually 2 to 12 people). Extreme Programming is
successful in part because it requires close team interaction and working in pairs. A large
team would have difficulty in communicating efficiently at a fast pace. However, large teams
have used Extreme Programming successful.

In this business requirements are gathered in terms of stories and all stories are stored in a
place called the parking lot. Releases are based on the shorter cycles called 16 days iterations
and every iteration includes like cording, unit testing and system testing.

The original XP recipe is based on four simple values simplicity, communication, feedback,
and courage and twelve supporting practices:
• Planning Game
• Small Releases
• Customer Acceptance Tests
• Simple Design
• Pair Programming
• Test-Driven Development
• Refactoring
• Continuous Integration
• Collective Code Ownership
• Coding Standards
• Metaphor
• Sustainable Pace

Test-driven development (TDD) is part of a larger software design paradigm known


as Extreme Programming (XP). The Test-driven development (TDD) is a software
development technique, associated to agile methods. This technique consists of small
development iterations, where the test case, that covers an app feature, is written before the
same feature is deployed.

TDD tries to solve above stated problems, focusing on tests and reversing the way of
development. The software development process accordingly to TDD, also known as
Red/Green/Refactor cycle, stands for the repeating running of the following steps: to write a

Page 18 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

unit test that fails before writing any functional code (Red); to write a functional code until
the unit test is approved (Green); in the end, if essential, to restructure the code, removing
redundancies and improving its structure, assuring that all unitary tests keep on being
successful.

Test-driven development(TDD) can create applications of a high quality in less time.TDD also
recommends the test automation, so the code is continually built and run as part of build’s
regular process to promising that the addiction of a new feature or the restructuring of code
does not brake already deployed features.

Feature Driven Development


This method is focused on “designing & building" features. Like others agile method, FDD
describes very specific and short phases of work that has to be accomplished separately per
feature.

Figure 6 Feature Driven Development

It contains domain walkthrough, design inspection, promote to build, code inspection and
design. FDD develops product keep following things in the aim.
• Domain object Modelling
• Development by feature
• Component / Class Ownership
• Feature Teams

Page 19 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

• Inspections
• Configuration Management
• Regular Builds
• Visibility of progress and results

Dynamic Systems Development Method (DSDM)


DSDM is a Rapid Application Development (RAD) method for software development and
provides an agile project delivery framework. The important feature of DSDM is that the
users are required to be involved actively, and the teams are given the power to make
decisions. Frequent delivery of product becomes the active focus with DSDM. The techniques
used in DSDM are
• Time Boxing
• MoSCoW Rules (M- Must have requirements, S- Should have if at all possible, C-
Could have but not critical, W – Won ‘t have this time, but potentially later)
• Prototyping

The DSDM project consists of 7 phases


• Pre-project
• Feasibility Study
• Business Study
• Functional Model Iteration
• Design and build Iteration
• Implementation
• Post-project

Learn Software Development


Lean software development (LSD) method is based on the principle of "Just in time
production". It aims at increasing speed of software development and decreasing cost. Lean
software development can be brief in seven steps.
• Eliminating Waste
• Amplifying learning
• Defer commitment (deciding as late as possible)
• Early delivery
• Empowering the team

Page 20 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

• Building Integrity
• Optimize the whole

8.3.2 Agile Metrics


Metrics that can be collected for active usages of Agile is
• Drag Factor
o Effort in hours which do not contribute to sprint goal
o Drag factor can be improved by reducing number of shared resources, reducing
the amount of non-contributing work
o New estimates can be increased by percentage of drag factor -New estimate =
(Old estimate + drag factor)
• Velocity
o Amount of backlog converted to shippable functionality of sprint
• No of Unit Tests added
• Time taken to complete daily build
• Bugs detected in an iteration or in previous iterations
• Production defect leakage

8.3.3 Benefits
Below are benefits of the Agile Testing

• Re usability
• Traceability
• Requirements →Tests →Execution →Defects
• Impact analysis – If a user story changes how many tests will that affect and
what’s the estimate to implement it?
• Audit trail (for CMMI compliance)
• Metrics & Analysis

8.3.4 Best Practice in agile Testing


Below are the best practices in agile testing:
• Automate Unit Tests
• Test Driven Development
• Automated Regression Tests
• Exploratory Testing

Page 21 of 23
Certificate in Software Testing Skill TCS Business Domain Academy

Summary
• Agile is an iterative development methodology, where requirements grow through
collaboration between the customer and self-organizing teams and agile process
aligns development with customer needs.
• Agile methodology was developed to responds to the changes rapidly and smoothly.
• Agile testing involves testing from customer perspective as early as possible and
frequently as code becomes available and stable enough from module/unit level
testing.
• The agile test plan contains types of testing done in that iteration like test data
requirements, infrastructure requirements, test environments and test results.
• There are various methods present in agile testing:
o Scrum
o Crystal Methodologies
o Extreme programing(XP)
o Feature Driven Development
o Dynamic Systems Development Method(DSDM)
o Lean software Development
• Benefits of the Agile Testing
o Re usability
o Traceability
o Requirements →Tests →Execution →Defects
o Impact analysis – If a user story changes how many tests will that affect and
what’s the estimate to implement it?
o Audit trail (for CMMI compliance)
o Metrics & Analysis
• The best practices in agile testing:
o Automate Unit Tests
o Test Driven Development
o Automated Regression Tests
o Exploratory Testing

Page 22 of 23

You might also like