Unit Iv
Unit Iv
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