Chapter -5
Agile Testing
Mrs. Manisha Patil
Introduction
• Agile Testing is a testing practice that follows the rules and principles of agile software development.
• Unlike the Waterfall method, Agile Testing can begin at the start of the project with continuous integration
between development and testing.
• Agile Testing methodology is not sequential (in the sense it’s executed only after coding phase) but
continuous.
• Agile is an iterative development methodology, where requirements evolve through collaboration
between the customer and self-organizing teams and agile aligns development with customer needs.
• The word Agile signifies something that can be performed quickly and immediately ,in the area o f
software development
• The agile testing ensures the delivery of high quality product as bugs or errors get deleted in the initial
stage of project.
• The execution of agile testing will help us identify the initial error, better results in less development time
and costs
Principles of Agile testing
• All Agile Testing is continuous: Agile teams make testing a regular practice and perform tests regularly so
that they can guarantee the continuous progress of the overall project and product development
• The feedback in Agile testing is continuous: Due to the regular nature of Agile testing, the feedback
provided to the developers and stakeholders is also continuous and takes place on an ongoing basis to make
sure all business needs of the product are being met
• Agile testing includes the entire Agile team: Unlike the traditional method of testing where only the test
team is responsible for the testing in the software development life cycle, Agile testing involves the
developers, the testers as well as the business analysts to test the product
• Agile testing reduces the time of feedback response: Agile testing involves the entire team as well as
stakeholders with each iteration of the project, giving the team continuous feedback throughout the project’s
lifecycle, which reduces the time to include the response to the feedback given
• Agile testing focuses on creating simplified and clean code: All the defects found by the Agile team are
fixed in the same iteration, which means the code used by the developers is both clean and simplified
• Agile testing reduces documentation: Instead of creating a new checklist, Agile teams reuse their
checklist made by the team and just add to it while testing instead of focusing on the incidental details
• Agile projects are always test-driven: With Agile teams, the product is tested when it is being
implemented instead of after the implementation process
Methods of Agile testing
There are three main methods of Agile testing discussed in detail below:
• Behavior Driven Development (BDD)
• Acceptance Test-Driven Development (ATDD)
• Exploratory Testing
• Risk based testing
• FIT tests
• Dynamic software development method
• Session based testing
• Extreme Programming
Behavior Driven Development (BDD)
• This method is focused on improving communication between all the stakeholders involved in the project.
• This improves the understanding of each and every feature that needs to be included in the product before the development
process begins.
• The communication is ongoing and based on examples
• This communication involves the following stakeholders:
– The team of developers
– The team of testers
– Business analysts
• The purpose of BDD testing is to ensure that the software producr or system that is built is working as expected.
Acceptance Test-Driven Development (ATDD)
• In the ATDD method of Agile testing, team members with different perspectives are involved. These
members include the following:
– Customers
– Developers
– Testers
• They meet to create acceptance tests that include the perspectives of the parties mentioned above and
aim to include the different points of focus for each party.
• This method of testing represents the user’s point of view.
Exploratory Testing
• The Exploratory testing method focuses on creating workable software over documentation of the
process.
• The design and execution phases of these tests go hand in hand. The main priority of this testing method
is customer collaboration and interactions over contract negotiation and processes and tools.
• This method of testing is the most adaptable to any changes because the testers explore the application to
identify its functionalities.
• They learn and understand the application so that they can design and execute their tests based on what
they find. It is a customized approach to testing.
Risk based testing
• Risk based testing is a software testing technique based on the probability of risk
• Risk is the occurrence of an uncertain event wirh a positive or negative effect on the measurable success
criteria.
• Risk can serve important parameter to plan,schedule and allocate tester effort in agile.
• The risk based testing technique organizes testing technique efforts in ways that lower the residual level of
product risk when software goes into production.
• This strategy is useful for test analysis,planning,estimation,design ,execution and results reporting.
Advantages of Agile Testing
• Agile testing saves our time and money
• Less documentation is requires
• Regular feedback is received from the end user
• Regular interaction can help to determine the issues well in advance
• Agile testing is flexible to accommodate changes and advancements in technology.
Difference between Traditional and Agile Testing
Traditional Testing Agile Testing
Traditional testing follows a top-down approach and a more
predictive model, wherein testing is executed step-by-step.
the process of agile testing follows an iterative approach and an
adaptive model.
testing is performed once the process of software development is
accomplished/completed.
Agile testing follows a philosophy of test first, wherein defects are
fixed during each sprint and then released.
Team tests different modules of the software separately first. the team works together and collaborate in an open workspace.
The requirements stated in traditional testing are concrete and are
not easily modified.
Has fixed, yet flexible requirements that adapt to changing
business & user requirements easily.
If any changes or modifications are implemented, they are done in
the next release of the module.
in agile testing modifications are implemented during the next
sprint of the software testing cycle.
unit testing is executed for each module followed by integration
and system testing.
The agile team is integrated with the Scrum team, which helps get
more accurate results.
Tools are considered a luxury in traditional testing, as the focus is
majorly on performing manual testing
Tools are used frequently to keep up with the pace of development
and to deliver results quickly.
Risk management is quite averse. Ensures efficient, effective, and timely risk management.
The interaction among team members is scarce as testing is
executed in phases.
Most importantly, there is a continuous interaction among team
members.
Requires comprehensive and extensive documentation and
reporting.
Requires minimum documentation and reporting.
Traditional testing is a time consuming process, which usually costs
more efforts and money.
Agile testing prevents expenditure of excessive time, efforts, as
well as money.
ensures the quality of the product, it leads to delay in product
delivery.
Ensures rapid delivery as well as quality of the software.
Agile Principles and Values
Principle-1
• “Our highest priority is to satisfy the customer through early and
continuous delivery of valuable software.”
Principle-2
“Welcome changing requirements, even late in development. Agile
processes harness change for the customer’s competitive advantage.”
Principle-3
“Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference to the shorter timescale.”
Agile Principles and Values
Principle-4
• “Business people and developers must work together daily throughout
the project.”
Principle-5
“Build projects around motivated individuals. Give them the
environment and support they need, and trust them to get the job
done.”
Principle-6
“The most efficient and effective method of conveying information to and
within a development team is face-to-face conversation.”
Disadvantages of Agile Testing
• Due to continuous change in requirements sometimes agile testing becomes unpredictable for the users
with regards to what new will come up in the next iteration
• Due to continuous change in requirement agile testing becomes difficult and complex to assess the actual
effort required perfoming the specific task
• The repetitive release of parts in agile testing of the software incurs higher expenses
Agile Principles and Values
Principle-7
Principle-8
“Agile processes promote sustainable development. The sponsors, developers,
and users should be able to maintain a constant pace indefinitely.”
Principle-9
“Continuous attention to technical excellence and good design enhances
agility.”
Working Software is the Primary Measure of Progress
Agile Principles and Values
Principle-10
• “Simplicity—the art of maximizing the amount of work not done—is
essential.”
Principle-11
“The best architectures, requirements, and designs emerge from self-
organizing teams.”
Principle-12
“At regular intervals, the team reflects on how to become more effective,
then tunes and adjusts its behavior accordingly.”
Agile Values
• Individuals and Interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan
• Agile Testing Quadrants help the whole team to communicate and deliver a high quality product in no time.
• With the help of Agile Testing Quadrants the whole testing process can be explained in a very easy to
understand language and the whole team can effectively work on the product.
• These Quadrants are:
• Quadrant 1: Technology-facing tests that support the team
• Quadrant 2: Business-facing tests that support the team
• Quadrant 3: Business-facing tests that critique the product
• Quadrant 4: Technology-facing tests that critique the product
Agile Quadrant
• Quadrant 1 consists of all the test cases that are technology driven. These are performed in order to
support the team.
• Developers involvement is very important in this quadrant as quality of code is the main focus here.
• Quadrant 1 is associated with Automated testing, and covers the tests such as Unit tests, Component test,
API tests and Web Services testing.
• Instant feedback is obtained in this quadrant so that quality of code can be improved easily.
• This quadrant helps to improve the design of the product without affecting its functionality.
Quadrant-1
• Quadrant 2 consists of all the test cases that are business driven and are performed to
support team as well as the customers.
• Most of the projects working starts from this quadrant.
• The main focus of this quadrant is on the business requirements.
• The tester is greatly involved with the customer to gather the requirements in order to build
test cases accordingly.
• Quadrant 2 is associated with Functional testing, story testing, prototypes & simulations and
pair testing.
• In this quadrant both manual and automated testing is involved to work on business
requirements easily.
Quadrant-2
• Quadrant 3 consists of all the test cases that are business driven and are performed to
Critique the product.
• The main focus of this quadrant is to provide feedback to the Quadrant 1 and Quadrant 2.
• Manual testing based on tester logical thinking, intuitions and user requirements is done to
evaluate the application.
• Quadrant 3 is associated with Pair testing with customers, Exploratory Testing, Usability
Testing, User Acceptance Testing, Collaborative Testing and alpha & beta testing.
Quadrant-3
• Quadrant 4 consists of all the test cases that are technology-driven and
are performed to critique the product
• Quadrant 4 focus mainly on the non-functional requirements such as
performance, security, stress, maintainability, stability etc.
• This quadrant is responsible to deliver the final product to the customer.
• This quadrant is associated with performance testing, load testing, stress
testing, maintainability testing, infrastructure testing, data migration
testing, security testing, reliability testing, recovery testing and many
more.
•
Quadrant-4
Automated Test
• Agile Automation Testing in software development is an approach o using
test automation in agile procedure.
• To make software development process more effective and efficient for
maintaining quality.
• By reducing manual effort, automation in software design and testing
eliminates risks associated with human error.
• Build and testing automation also ensures reusability and scalability, which
in turn translates into significant cost savings.
Comparison of automation in Waterfall with Automation in Agile
• In traditional process of software testing cycle, automation testing is
normally feasible when application is stable, steady and the requirement
is involved with a real considerable amount of time
• Agile methodology emphasizes on innovative ideas and people could
interact freely with each other.
• For the validation of designed scripts with existing test data and the
adoption of the same for testing
• In an agile environment sprint takes an average of 1-2 week to complete, it
is difficult to afford so much time for automation scripts in this manner.
• Automation testing is very useful when it comes to the more stable and
less frequent types of requirement.
Pyramid for test automation
•As for agile software development, the test
automation pyramid helps find the right
balance in executing automated test
•Lowest tier :Unit Tests
These tests correspond to the lowest level
with the highest granularity in tests. These
tests focus on the core functionalities of an
individual piece of code, such as a function or
module.
•Service tests
These are slightly broader in that they test
interactions between components to validate
their core functions.
•UI Tests
These tests are the highest level of
automated tests, testing the user experience
or interaction with interfaces. In this case,
they could include either user-provided or a
pre-programmed test script.

Chapter -5 Agile Testing types and its examples.pptx

  • 1.
  • 2.
    Introduction • Agile Testingis a testing practice that follows the rules and principles of agile software development. • Unlike the Waterfall method, Agile Testing can begin at the start of the project with continuous integration between development and testing. • Agile Testing methodology is not sequential (in the sense it’s executed only after coding phase) but continuous. • Agile is an iterative development methodology, where requirements evolve through collaboration between the customer and self-organizing teams and agile aligns development with customer needs. • The word Agile signifies something that can be performed quickly and immediately ,in the area o f software development • The agile testing ensures the delivery of high quality product as bugs or errors get deleted in the initial stage of project. • The execution of agile testing will help us identify the initial error, better results in less development time and costs
  • 3.
    Principles of Agiletesting • All Agile Testing is continuous: Agile teams make testing a regular practice and perform tests regularly so that they can guarantee the continuous progress of the overall project and product development • The feedback in Agile testing is continuous: Due to the regular nature of Agile testing, the feedback provided to the developers and stakeholders is also continuous and takes place on an ongoing basis to make sure all business needs of the product are being met • Agile testing includes the entire Agile team: Unlike the traditional method of testing where only the test team is responsible for the testing in the software development life cycle, Agile testing involves the developers, the testers as well as the business analysts to test the product • Agile testing reduces the time of feedback response: Agile testing involves the entire team as well as stakeholders with each iteration of the project, giving the team continuous feedback throughout the project’s lifecycle, which reduces the time to include the response to the feedback given • Agile testing focuses on creating simplified and clean code: All the defects found by the Agile team are fixed in the same iteration, which means the code used by the developers is both clean and simplified • Agile testing reduces documentation: Instead of creating a new checklist, Agile teams reuse their checklist made by the team and just add to it while testing instead of focusing on the incidental details • Agile projects are always test-driven: With Agile teams, the product is tested when it is being implemented instead of after the implementation process
  • 4.
    Methods of Agiletesting There are three main methods of Agile testing discussed in detail below: • Behavior Driven Development (BDD) • Acceptance Test-Driven Development (ATDD) • Exploratory Testing • Risk based testing • FIT tests • Dynamic software development method • Session based testing • Extreme Programming
  • 5.
    Behavior Driven Development(BDD) • This method is focused on improving communication between all the stakeholders involved in the project. • This improves the understanding of each and every feature that needs to be included in the product before the development process begins. • The communication is ongoing and based on examples • This communication involves the following stakeholders: – The team of developers – The team of testers – Business analysts • The purpose of BDD testing is to ensure that the software producr or system that is built is working as expected.
  • 6.
    Acceptance Test-Driven Development(ATDD) • In the ATDD method of Agile testing, team members with different perspectives are involved. These members include the following: – Customers – Developers – Testers • They meet to create acceptance tests that include the perspectives of the parties mentioned above and aim to include the different points of focus for each party. • This method of testing represents the user’s point of view.
  • 7.
    Exploratory Testing • TheExploratory testing method focuses on creating workable software over documentation of the process. • The design and execution phases of these tests go hand in hand. The main priority of this testing method is customer collaboration and interactions over contract negotiation and processes and tools. • This method of testing is the most adaptable to any changes because the testers explore the application to identify its functionalities. • They learn and understand the application so that they can design and execute their tests based on what they find. It is a customized approach to testing.
  • 8.
    Risk based testing •Risk based testing is a software testing technique based on the probability of risk • Risk is the occurrence of an uncertain event wirh a positive or negative effect on the measurable success criteria. • Risk can serve important parameter to plan,schedule and allocate tester effort in agile. • The risk based testing technique organizes testing technique efforts in ways that lower the residual level of product risk when software goes into production. • This strategy is useful for test analysis,planning,estimation,design ,execution and results reporting.
  • 9.
    Advantages of AgileTesting • Agile testing saves our time and money • Less documentation is requires • Regular feedback is received from the end user • Regular interaction can help to determine the issues well in advance • Agile testing is flexible to accommodate changes and advancements in technology.
  • 10.
    Difference between Traditionaland Agile Testing Traditional Testing Agile Testing Traditional testing follows a top-down approach and a more predictive model, wherein testing is executed step-by-step. the process of agile testing follows an iterative approach and an adaptive model. testing is performed once the process of software development is accomplished/completed. Agile testing follows a philosophy of test first, wherein defects are fixed during each sprint and then released. Team tests different modules of the software separately first. the team works together and collaborate in an open workspace. The requirements stated in traditional testing are concrete and are not easily modified. Has fixed, yet flexible requirements that adapt to changing business & user requirements easily. If any changes or modifications are implemented, they are done in the next release of the module. in agile testing modifications are implemented during the next sprint of the software testing cycle. unit testing is executed for each module followed by integration and system testing. The agile team is integrated with the Scrum team, which helps get more accurate results. Tools are considered a luxury in traditional testing, as the focus is majorly on performing manual testing Tools are used frequently to keep up with the pace of development and to deliver results quickly. Risk management is quite averse. Ensures efficient, effective, and timely risk management. The interaction among team members is scarce as testing is executed in phases. Most importantly, there is a continuous interaction among team members. Requires comprehensive and extensive documentation and reporting. Requires minimum documentation and reporting. Traditional testing is a time consuming process, which usually costs more efforts and money. Agile testing prevents expenditure of excessive time, efforts, as well as money. ensures the quality of the product, it leads to delay in product delivery. Ensures rapid delivery as well as quality of the software.
  • 11.
    Agile Principles andValues Principle-1 • “Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.” Principle-2 “Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.” Principle-3 “Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.”
  • 12.
    Agile Principles andValues Principle-4 • “Business people and developers must work together daily throughout the project.” Principle-5 “Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.” Principle-6 “The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.”
  • 13.
    Disadvantages of AgileTesting • Due to continuous change in requirements sometimes agile testing becomes unpredictable for the users with regards to what new will come up in the next iteration • Due to continuous change in requirement agile testing becomes difficult and complex to assess the actual effort required perfoming the specific task • The repetitive release of parts in agile testing of the software incurs higher expenses
  • 14.
    Agile Principles andValues Principle-7 Principle-8 “Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.” Principle-9 “Continuous attention to technical excellence and good design enhances agility.” Working Software is the Primary Measure of Progress
  • 15.
    Agile Principles andValues Principle-10 • “Simplicity—the art of maximizing the amount of work not done—is essential.” Principle-11 “The best architectures, requirements, and designs emerge from self- organizing teams.” Principle-12 “At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.”
  • 16.
    Agile Values • Individualsand Interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan
  • 17.
    • Agile TestingQuadrants help the whole team to communicate and deliver a high quality product in no time. • With the help of Agile Testing Quadrants the whole testing process can be explained in a very easy to understand language and the whole team can effectively work on the product. • These Quadrants are: • Quadrant 1: Technology-facing tests that support the team • Quadrant 2: Business-facing tests that support the team • Quadrant 3: Business-facing tests that critique the product • Quadrant 4: Technology-facing tests that critique the product Agile Quadrant
  • 18.
    • Quadrant 1consists of all the test cases that are technology driven. These are performed in order to support the team. • Developers involvement is very important in this quadrant as quality of code is the main focus here. • Quadrant 1 is associated with Automated testing, and covers the tests such as Unit tests, Component test, API tests and Web Services testing. • Instant feedback is obtained in this quadrant so that quality of code can be improved easily. • This quadrant helps to improve the design of the product without affecting its functionality. Quadrant-1
  • 19.
    • Quadrant 2consists of all the test cases that are business driven and are performed to support team as well as the customers. • Most of the projects working starts from this quadrant. • The main focus of this quadrant is on the business requirements. • The tester is greatly involved with the customer to gather the requirements in order to build test cases accordingly. • Quadrant 2 is associated with Functional testing, story testing, prototypes & simulations and pair testing. • In this quadrant both manual and automated testing is involved to work on business requirements easily. Quadrant-2
  • 20.
    • Quadrant 3consists of all the test cases that are business driven and are performed to Critique the product. • The main focus of this quadrant is to provide feedback to the Quadrant 1 and Quadrant 2. • Manual testing based on tester logical thinking, intuitions and user requirements is done to evaluate the application. • Quadrant 3 is associated with Pair testing with customers, Exploratory Testing, Usability Testing, User Acceptance Testing, Collaborative Testing and alpha & beta testing. Quadrant-3
  • 21.
    • Quadrant 4consists of all the test cases that are technology-driven and are performed to critique the product • Quadrant 4 focus mainly on the non-functional requirements such as performance, security, stress, maintainability, stability etc. • This quadrant is responsible to deliver the final product to the customer. • This quadrant is associated with performance testing, load testing, stress testing, maintainability testing, infrastructure testing, data migration testing, security testing, reliability testing, recovery testing and many more. • Quadrant-4
  • 23.
    Automated Test • AgileAutomation Testing in software development is an approach o using test automation in agile procedure. • To make software development process more effective and efficient for maintaining quality. • By reducing manual effort, automation in software design and testing eliminates risks associated with human error. • Build and testing automation also ensures reusability and scalability, which in turn translates into significant cost savings.
  • 24.
    Comparison of automationin Waterfall with Automation in Agile • In traditional process of software testing cycle, automation testing is normally feasible when application is stable, steady and the requirement is involved with a real considerable amount of time • Agile methodology emphasizes on innovative ideas and people could interact freely with each other. • For the validation of designed scripts with existing test data and the adoption of the same for testing • In an agile environment sprint takes an average of 1-2 week to complete, it is difficult to afford so much time for automation scripts in this manner. • Automation testing is very useful when it comes to the more stable and less frequent types of requirement.
  • 25.
    Pyramid for testautomation •As for agile software development, the test automation pyramid helps find the right balance in executing automated test •Lowest tier :Unit Tests These tests correspond to the lowest level with the highest granularity in tests. These tests focus on the core functionalities of an individual piece of code, such as a function or module. •Service tests These are slightly broader in that they test interactions between components to validate their core functions. •UI Tests These tests are the highest level of automated tests, testing the user experience or interaction with interfaces. In this case, they could include either user-provided or a pre-programmed test script.