0% found this document useful (0 votes)
17 views8 pages

Unit Iv

Agile Testing integrates testing into the software development process, emphasizing continuous feedback and customer satisfaction throughout all phases of development. Key principles include shortening feedback loops, involving all team members, and maintaining lightweight documentation, while methodologies like Test-Driven Development and Behavior Driven Development enhance flexibility and collaboration. Agile testing faces challenges such as changing requirements and inadequate test coverage, but offers benefits like improved product quality and efficiency.

Uploaded by

csestaff27
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views8 pages

Unit Iv

Agile Testing integrates testing into the software development process, emphasizing continuous feedback and customer satisfaction throughout all phases of development. Key principles include shortening feedback loops, involving all team members, and maintaining lightweight documentation, while methodologies like Test-Driven Development and Behavior Driven Development enhance flexibility and collaboration. Agile testing faces challenges such as changing requirements and inadequate test coverage, but offers benefits like improved product quality and efficiency.

Uploaded by

csestaff27
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

UNIT-IV

BUILDING AGLITY AND TOOL SUPPORT


Building agility into testing process
Agile Testing is a Type of Software Testing that follows the principles of agile software
development to test the software application. All members of the project team, along with
the special experts and testers, are involved in agile testing. Agile testing is not a separate
phase, and it is carried out with all the development phases, which are requirements, design,
coding, and test case generation.
Agile testing is a flexible and dynamic process that runs continuously throughout each
iteration of the Software Development Life Cycle (SDLC) . The main focus for Agile
testers is customer satisfaction, verifying that the product meets the needs and expectations
of the users.
 Agile testing is an informal process that is specified as a dynamic type of testing.
 It is performed regularly throughout every iteration of the Software Development
Lifecycle (SDLC).
 Customer satisfaction is the primary concern for agile test engineers at some stage in
the agile testing process.
Agile Testing Principles
Agile testing combines traditional testing with development to provide continuous
feedback, faster fixes, and better alignment with customer needs. The main principles of
Agile testing focus on:
1. Shortening feedback iteration: In Agile Testing, the testing team gets to know the
product development and its quality for each and every iteration. Thus continuous
feedback minimizes the feedback response time, and the fixing cost is also reduced.
2. Testing is performed alongside Agile testing is not a different phase. It is performed
alongside the development phase. It ensures that the features implemented during that
iteration are actually done. Testing is not kept pending for a later phase.
3. Involvement of all members: Agile testing involves each and every member of the
development team and the testing team. It includes various developers and experts.
4. Documentation is weightless: In place of global test documentation, agile testers use
reusable checklists to suggest tests and focus on the essence of the test rather than the
incidental details. Lightweight documentation tools are used.
5. Clean code: The defects that are detected are fixed within the same iteration. This
ensures clean code at any stage of development.
6. Constant response: Agile testing helps to deliver responses or feedback on an ongoing
basis. Thus, the product can meet the business needs.
7. Customer satisfaction: In agile testing, customers are exposed to the product
throughout the development process. Throughout the development process, the
customer can modify the requirements, and update the requirements and the tests can
also be changed as per the changed requirements.
8. Test-driven: In agile testing, the testing needs to be conducted alongside the
development process to shorten the development time. But testing is implemented after
the implementation or when the software is developed in the traditional process.
Features of Agile Testing
Some of the key features of agile software testing are:
 Simplistic approach: In agile testing, testers perform only the necessary tests but at the
same time do not leave behind any essential tests. This approach delivers a product that
is simple and provides value.
 Continuous improvement: In agile testing, agile testers depend mainly on feedback
and self-learning for improvement and they perform their activities efficiently
continuously.
 Self-organized: Agile testers are highly efficient and tend to solve problems by
bringing teams together to resolve them.
 Testers enjoy work: In agile testing, testers enjoy their work and thus will be able to
deliver a product with the greatest value to the consumer.
 Encourage Constant communication: In agile testing, efficient communication
channels are set up with all the stakeholders of the project to reduce errors and
miscommunications.
 Constant feedback: Agile testers need to constantly provide feedback to the developers
if necessary.
Agile Testing Methodologies
Agile testing methodologies focus on flexibility, collaboration, and continuous
improvement. Here are some key Agile testing methods explained in simple terms:
1. Test-Driven Development (TDD): In TDD, tests are written before writing the actual
code. This approach involves three steps: writing a unit test, coding to pass the test, and
then refactoring the code. It verify that the code is always tested and improved in small,
manageable steps.
2. Behavior Driven Development (BDD): BDD is all about understanding and testing how
users interact with the application. It focuses on creating features based on user behavior
and encourages collaboration between developers, testers, and customers to ensure the
software meets user expectations.
3. Exploratory Testing: Here, testers are free to explore the software as they see fit,
without following predefined test scripts. This method helps uncover unknown risks and
bugs by allowing testers to test the software in creative and flexible ways.
4. Acceptance Test-Driven Development (ATDD): ATDD involves the customer,
developers, and testers working together to define the requirements and potential challenges
before coding begins. This collaborative effort reduces the chance of errors and helps build
software that meets customer needs from the start.
5. Extreme Programming (XP): XP is focused on delivering high-quality software that
meets customer needs. It involves practices that emphasize customer involvement,
simplicity, and frequent releases to ensure the final product aligns with customer
expectations.
6. Session-Based Testing: This method involves structured, time-limited testing sessions.
Testers focus on different aspects of the software within a set time frame (usually 45 to 90
minutes), during which they document their findings in a charter document. This ensures
focused and efficient testing.
7. Dynamic Software Development Method (DSDM): DSDM is an Agile framework for
delivering projects. It provides a set of principles for developers, users, and testers to
collaborate and build systems that meet the needs of the business.
8. Crystal Methodologies: The Crystal methodology focuses on the people involved in a
project rather than on processes or tools. It adapts to the size and criticality of the project,
emphasizing communication, flexibility, and simplicity to deliver results effectively.
Agile Testing Strategies
Agile testing is all about flexibility and verifying the quality at every stage of the
development process. It happens in distinct phases, with each one playing an important role
in helping teams adapt and deliver high-quality software.
1. Iteration 0
It is the first stage of the testing process and the initial setup is performed in this stage. The
testing environment is set in this iteration. This stage involves executing the preliminary
setup tasks such as finding people for testing, preparing the usability testing lab, preparing
resources, etc. The business case for the project, boundary situations, and project scope are
verified.
 Important requirements and use cases are summarized.
 Initial project and cost valuation are planned.
 Risks are identified.
 Outline one or more candidate designs for the project.
2. Construction Iteration
It is the second phase of the testing process. It is the major phase of the testing and most of
the work is performed in this phase. It is a set of iterations to build an increment of the
solution. This process is divided into two types of testing:
 Confirmatory testing: This type of testing concentrates on verifying that the system
meets the stakeholder’s requirements as described to the team to date and is performed
by the team. It is further divided into 2 types of testing:
o Agile acceptance testing: It is the combination of acceptance testing and
functional testing. It can be executed by the development team and the
stakeholders.
o Developer testing: It is the combination of unit testing and integration
testing and verifies both the application code and database schema.
 Investigative testing: Investigative testing detects the problems that are skipped or
ignored during confirmatory testing. In this type of testing, the tester determines the
potential problems in the form of defect stories. It focuses on issues like integration
testing, load testing, security testing, and stress testing.
3. Release End Game
This phase is also known as the transition phase. This phase includes the full system testing
and the acceptance testing. To finish the testing stage, the product is tested more
relentlessly while it is in construction iterations. In this phase, testers work on the defect
stories. This phase involves activities like:
 Training end-users.
 Support people and operational people.
 Marketing of the product release.
 Back-up and restoration.
 Finalization of the system and user documentation.
4. Production
It is the last phase of agile testing. The product is finalized in this stage after the removal of
all defects and issues raised.
Agile Testing Quadrants
Agile testing is divided into four quadrants, each focusing on a specific aspect of the testing
process.
1. Quadrant 1 (Automated)
The first agile quadrat focuses on the internal quality of code which contains the test cases
and test components that are executed by the test engineers. All test cases are technology-
driven and used for automation testing.
All through the agile first quadrant of testing, the following testing can be executed:
 Unit testing: This involves testing individual parts or functions of your code to make
sure they work correctly on their own.
 Component testing: This is about testing bigger sections or modules of the code. It’s a
step up from unit testing, where you’re validating how different pieces of code work
together as a whole.
2. Quadrant 2 (Manual and Automated)
The second agile quadrant focuses on the customer requirements that are provided to the
testing team before and throughout the testing process. The test cases in this quadrant are
business-driven and are used for manual and automated functional testing.
The following testing will be executed in this quadrant:
 Pair testing: This is when two testers work together to find defects in the software. By
collaborating, testers can share ideas, catch issues more quickly, and improve the
overall testing process.
 Testing scenarios and workflow: This involves validating that the application works
as expected according to business requirements.
 User Stories and Prototypes: Testing user stories and prototypes helps verify that the
software meets user expectations.
3. Quadrant 3 (Manual)
The third agile quadrant provides feedback to the first and the second quadrant. This
quadrant involves executing many iterations of testing, these reviews and responses are
then used to strengthen the code. The test cases in this quadrant are developed to implement
automation testing.
The testing that can be carried out in this quadrant are:
 Usability Testing: This is about checking how easy and user-friendly the application is.
 Collaborative Testing: In this activity, testers work closely with other team members
and stakeholders to identify problems and improve the product.
 User Acceptance Testing (UAT) : This step ensures that the product meets the needs
and expectations of the end users.
 Pair Testing with Customers: Testing alongside customers helps gather real-time
feedback about the user experience.
4. Quadrant 4 (Tools)
The fourth agile quadrant focuses on the non-functional requirements of the product like
performance, security, stability, etc. Various types of testing are performed in this quadrant
to deliver non-functional qualities and the expected value.
The testing activities that can be performed in this quadrant are:
 Security testing.
 Scalability testing.
 Infrastructure testing
 Data migration testing.
 Non-functional testing such as stress testing, load testing, performance testing , etc.
Using agile methods to improve software testing
The agile testing life cycle has 5 different phases

1. Impact Assessment: This is the first phase of the agile testing life cycle also known as
the feedback phase where the inputs and responses are collected from the users and
stakeholders. This phase supports the test engineers to set the objective for the next
phase in the cycle.
2. Agile Testing Planning: In this phase, the developers, customers, test engineers, and
stakeholders team up to plan the testing process schedules, regular meetings, and
deliverables.
3. Release Readiness: This is the third phase in the agile testing lifecycle where the test
engineers review the features which have been created entirely and test if the features
are ready to go live or not and the features that need to be sent again to the previous
development phase.
4. Daily Scrums: This phase involves the daily morning meetings to check on testing and
determine the objectives for the day. The goals are set daily to enable test engineers to
understand the status of testing.
5. Test Agility Review: This is the last phase of the agile testing lifecycle that includes
weekly meetings with the stakeholders to evaluate and assess the progress against the
goals.
Agile Test Plan
An agile test plan includes types of testing done in that iteration like test data requirements,
test environments, and test results. In agile testing, a test plan is written and updated for
every release. The test plan includes the following:
1. Test Scope.
2. Testing instruments.
3. Data and settings are to be used for the test.
4. Approaches and strategies used to test.
5. Skills required to test.
6. New functionalities are being tested.
7. Levels or Types of testing based on the complexity of the features.
8. Resourcing.
9. Deliverables and Milestones.
10. Infrastructure Consideration.
11. Load or Performance Testing.
12. Mitigation or Risks Plan.
Benefits of Agile Testing
Below are some of the benefits of agile testing:
 Saves time: Implementing agile testing helps to make cost estimates more transparent
and thus helps to save time and money.
 Reduces documentation: It requires less documentation to execute agile testing.
 Enhances software productivity: Agile testing helps to reduce errors, improve product
quality, and enhance software productivity.
 Higher efficiency: In agile software testing the work is divided into small parts thus
developer can focus more easily and complete one part first and then move on to the
next part. This approach helps to identify minor inconsistencies and higher efficiency.
 Improve product quality: In agile testing, regular feedback is obtained from the user
and other stakeholders, which helps to enhance the software product quality.
Limitations of Agile Testing
Below are some of the limitations of agile software testing:
 Project failure: In agile testing, if one or more members leave the job then there are
chances for the project failure.
 Limited documentation: In agile testing, there is no or less documentation which
makes it difficult to predict the expected results as there are explicit conditions and
requirements.
 Introduce new bugs: In agile software testing, bug fixes, modifications, and releases
happen repeatedly which may sometimes result in the introduction of new bugs in the
system.
 Poor planning: In agile testing, the team is not exactly aware of the end result from day
one, so it becomes challenging to predict factors like cost, time, and resources required
at the beginning of the project.
 No finite end: Agile testing requires minimal planning at the beginning so it becomes
easy to get sidetracked while delivering the new product. There is no finite end and
there is no clear vision of what the final product will look like.
Challenges During Agile Testing
Below are some of the challenges that are faced during agile testing:
 Changing requirements: Sometimes during product development changes in the
requirements or the specifications occur but when they occur near the end of the sprint,
the changes are moved to the next sprint and thus become the overhead for developers
and testers.
 Inadequate test coverage: In agile testing, testers sometimes miss critical test cases
because of the continuously changing requirements and continuous integration. This
problem can be solved by keeping track of test coverage by analyzing the agile test
metrics.
 Tester’s availability: Sometimes the testers don’t have adequate skills to perform API
and Integration testing, which results in missing important test cases. One solution to
this problem is to provide training for the testers so that they can carry out essential
tests effectively.
 Less Documentation: In agile testing, there is less or no documentation which makes
the task of the QA team more tedious.
 Performance Bottlenecks: Sometimes developer builds products without
understanding the end-user requirements and following only the specification
requirements, resulting in performance issues in the product. Using load testing tools
performance bottlenecks can be identified and fixed.
 Early detection of defects: In agile testing, defects are detected at the production stage
or at the testing stage, which makes it very difficult to fix them.
 Skipping essential tests: In agile testing, sometimes agile testers due to time
constraints and the complexity of the test cases put some of the non-functional tests on
hold. This may cause some bugs later that may be difficult to fix.
Risks During Agile Testing
 Automated UI slow to execute: Automated UI gives confidence in the testing but they
are slow to execute and expensive to build.
 Use a mix of testing types: To achieve the expected quality of the product, a mixture of
testing types and levels must be used.
 Poor Automation test plan: Sometimes automation tests plan is poorly organized and
unplanned to save time which results in a test failure.
 Lack of expertise: Automated testing sometimes is not the only solution that should be
used, it can sometimes lack the expertise to deliver effective solutions.
 Unreliable tests: Fixing failing tests and resolving issues of brittle tests should be the
top priority to avoid false positives.
Tool for software testing
Software Testing tools are the tools that are used for the testing of software. Software
testing tools are often used to assure firmness, thoroughness, and performance in testing
software products. Unit testing and subsequent integration testing can be performed by
software testing tools. These tools are used to fulfill all the requirements of planned testing
activities. These tools also work as commercial software testing tools. The quality of the
software is evaluated by software testers with the help of various testing tools.
Types of Testing Tools
Software testing is of two types, static testing, and dynamic testing. Also, the tools used
during these testing are named accordingly on these testings. Testing tools can be
categorized into two types which are as follows:
1. Static Test Tools: Static test tools are used to work on the static testing processes. In the
testing through these tools, the typical approach is taken. These tools do not test the real
execution of the software. Certain input and output are not required in these tools. Static
test tools consist of the following:
 Flow analyzers: Flow analyzers provides flexibility in the data flow from input to
output.
 Path Tests: It finds the not used code and code with inconsistency in the software.
 Coverage Analyzers: All rationale paths in the software are assured by the coverage
analyzers.
 Interface Analyzers: They check out the consequences of passing variables and data in
the modules.
2. Dynamic Test Tools: Dynamic testing process is performed by the dynamic test tools.
These tools test the software with existing or current data. Dynamic test tools comprise the
following:
 Test driver: The test driver provides the input data to a module-under-test (MUT).
 Test Beds: It displays source code along with the program under execution at the same
time.
 Emulators: Emulators provide the response facilities which are used to imitate parts of
the system not yet developed.
 Mutation Analyzers: They are used for testing the fault tolerance of the system by
knowingly providing the errors in the code of the software.
For a deeper dive into software testing tools and their applications, explore the Complete
Guide to Software Testing & Automation by GeeksforGeeks , which offers
comprehensive coverage of various testing tools and their benefits in ensuring high-quality
software.
There is one more categorization of software testing tools. According to this classification,
software testing tools are of 10 types:
1. Test Management Tools : Test management tools are used to store information on how
testing is to be done, help to plan test activities, and report the status of quality
assurance activities. For example, JIRA, Redmine, Selenium, etc.
2. Automated Testing Tools : Automated testing tools helps to conduct testing activities
without human intervention with more accuracy and less time and effort. For example,
Appium, Cucumber, Ranorex, etc.
3. Performance Testing Tools : Performance testing tools helps to perform effectively
and efficiently performance testing which is a type of non-functional testing that checks
the application for parameters like stability, scalability, performance, speed, etc. For
example, WebLOAD, Apache JMeter, Neo Load, etc.
4. Cross-browser Testing Tools : Cross-browser testing tools helps to perform cross-
browser testing that lets the tester check whether the website works as intended when
accessed through different browser-OS combinations. For example, Testsigma, Testim,
Perfecto, etc.
5. Integration Testing Tools : Integration testing tools are used to test the interface
between the modules and detect the bugs. The main purpose here is to check whether
the specific modules are working as per the client’s needs or not. For example, Citrus,
FitNesse, TESSY, etc.
6. Unit Testing Tools : Unit testing tools are used to check the functionality of individual
modules and to make sure that all independent modules works as expected. For
example, Jenkins, PHPUnit, JUnit, etc.
7. Mobile Testing Tools : Mobile testing tools are used to test the application for
compatibility on different mobile devices. For example, Appium, Robotium, Test IO,
etc.
8. GUI Testing Tools : GUI testing tools are used to test the graphical user interface of
the software. For example, EggPlant, Squish, AutoIT, etc.
9. Bug Tracking Tools : Bug tracking tool helps to keep track of various bugs that come
up during the application lifecycle management. It helps to monitor and log all the bugs
that are detected during software testing. For example, Trello, JIRA, GitHub, etc.
10. Security Testing Tools : Security testing is used to detect the vulnerabilities and
safeguard the application against the malicious attacks. For example, NetSparker, Vega,
ImmuniWeb, etc

You might also like