You are on page 1of 22

Agile Testing

Agile Testing – Principles, methods & advantages

As the complexity of software development process is increasing


continuously, the software testing approaches needs to evolve to keep up with the
development approaches. Agile testing is a new age approach which focuses on
testing smarter rather than putting a lot of efforts yet it delivers high -quality
products.
The testers and developers need a higher level of collaboration in Agile
Testing. The testers have to provide corrective feedback to the development team
during the development cycle. This is the age of on -going integration between
testing and development approaches .
What is Agile Testing?

Agile testing is a software testing process that follows the principles


of agile software development. Agile testing aligns with iterative Development
Methodology in which requirements develop gradually from customers and
testing teams. The development is aligned with customer requirements.

Agile testing is a continuous process rather than being sequential. The


testing begins at the start of the project and there is ongoing integration between
testing and development. The common objective of agile development and
testing is to achieve a high product quality.

How is Agile Testing Different

Agile testing vs. Waterfall testing

Agile testing is adopted while working with agile development approach


whereas waterfall testing is used in the waterfall development model. Below are
some high-level Differences Between Agile Testing And Waterfall Testing.

Agile testing Waterfall testing

Ag i le t e st i n g i s u n str u ct ur ed a s co mp ar ed to t h e
wa t er fa ll ap p ro ac h a nd t her e i s mi n i mal In t he W ater fal l mo d el, th e t e st i n g p ro ce s s is
p la n ni n g. mo r e str uc t ured a nd t h er e i s a d et ai led
d esc rip t io n o f t he te st i n g p h as e.
W ater fal l t es ti n g ca n b e ad o p ted fo r al l so rt s o f
Agile testing is well suited fo r small p r o j ects. p ro j ects .

In t he wa ter fa ll mo d e l, t he p ro d uct i s t e sted at


As te s ti n g b e gi n s a t t h e st ar t o f t he p r o j ect, th e e nd o f t h e d e ve lo p m en t. Fo r a n y c ha n g es , t h e
er r o r s ca n b e fi x ed i n t h e mid d le o f t he p r o j e ct. p ro j ect ha s to star t fro m t he b e g i n ni n g .

T her e is ver y le s s d o c u me n ta tio n r eq uir ed fo r T he t es ti n g i n t he wat er fall ap p ro a c h req u ire s


ag il e t es ti n g . elab o r ate d o c u me n ta tio n .

I n t hi s ap p ro ac h, e ver y i ter a tio n h as i ts o wn


te st i n g p ha se. T he r e gr e s sio n te st s ca n b e r u n T he t es ti n g b e gi n s o n l y after t he co mp l et io n o f
ev er y t i me ne w fu n ct io n s o r lo gi c ar e r el ea sed . th e d e v elo p me n t p h as e.

I n a gi le te st i n g s hip p ab l e fea t ur e s o f t he p r o d u ct In t hi s trad it io nal ap p ro ac h, a ll fea t ure s


ar e d e li v ered to t h e c u st o me r a t t h e e nd o f a n d ev elo p ed are d el i ver ed alto g et he r a fter t he
iter at io n. i mp le me nt at io n p ha se .

T ester s a nd d e ve lo p er s wo r k c lo s el y i n Ag i le
te st i n g. T ester s a nd d e ve lo p er s wo r k sep ar ate l y.

Us er a ccep ta nc e i s p er fo r med a t t h e e nd o f e ver y Us er a ccep ta nc e ca n o nl y b e p er fo r me d a t t h e


sp r i n t. end o f t h e p ro j ect .

T he t es ter s ne ed to e st a b li s h co m m u n ic at io n wi t h
d ev elo p e rs to a n al yz e r e q ui r e me n t s a nd De ve lo p er s ar e no t i n vo l ved i n a n al yz i n g
p la n ni n g. req u ire me n t s a nd p l a n ni n g p ro ce ss .

Advantages of Agile Testing

 The benefits of the agile testing approach are as follows:


 It saves time and money
 Agile testing reduces documentation
 It is flexible and highly adaptable to changes
 It provides a way for receiving regular feedback from the end user
 Better determination of issues through daily meetings
Test Plan for Agile
In agile testing, the test plan is written as well as updated for every release. A test plan in
agile includes:

 The scope of the testing


 Consolidating new functionalities to be tested
 Types of testing/Levels of testing
 Performance & load testing
 Consideration of infrastructure
 Risks Plan
 Planning of resources
 Deliverables & Milestones

Agile Testing Lifecycle

The agile testing lifecycle includes the following 5 phases:


 Impact assessment
 Agile Testing Planning
 Release Readiness
 Daily Scrums
 Test Agility Review
Principles of Agile Testing
 Testing is continuous: Agile team tests continuously because it is the only
way to ensure continuous progress of the product.
 Continuous feedback- Agile testing provides feedback on an ongoing basis
and this is how your product meets the business needs.
 Tests performed by the whole team: In a traditional software development
life cycle, only the test team is responsible for testing bu t in agile testing,
the developers and the business analysts also test the application.
 Decrease time of feedback response : The business team is involved in
each iteration in agile testing & continuous feedback shortens the time of
feedback response.
 Simplified & clean code: All the defects which are raised by the agile team
are fixed within the same iteration and it helps in keeping the code clean
and simplified.
 Less documentation: Agile teams use a reusable checklist, the team focuses
on the test instead of the incidental details.
 Test Driven: In agile methods, testing is performed at the time of
implementation whereas, in the traditional process, the testing is performed
after implementation.
Ten principles for agile testers
Agile tester collaborates both with customer and technical people. To
work in an agile team, agile testing mind set is very necessary. There are
also some principles defined for agile testing.

1)Continuous Feedback:
Continuous feedback is very important for both customer team and for
developer team. In agile, requirements changes very often and during
testing, different problems might arise due to conflicts in requirements. It is
responsibility of tester to keep a keen eye on requirement change. And
based on these changes, provide feedback accordingly on risks as well as
overall progress to all stake holders.

2)Deliver value to the Customer:


Delivering value to customer should be first preference and it is
responsibility of whole team to collaborate closely. A tester is also
responsible to applying proper testing methodologies depending on nature
of the project. Even on each build, tester need to identify which testing
methodology should be adopted to give bug free build to customer.
Requirements must be very clear to tester in this regard. In testing process,
provide value able suggestion to improve process. These points will
definitely lead to quality of work delivered to customers.

3)Enable Face to Face Communication:


Some time, face to face communication with customer’s team become
necessary to know about change in requirements and other business logic.
Other than that, an agile tester must also enable this sort of communication
in UAT(User Acceptance Test). Some time, tester can explain a use case in
a better way than a developer. It will definitely add value into business by
gaining customer’s confidence and tester can play a vital role in it with face
to face communication.

4)Have Courage:
Courage is most important factor in agile environment to talk with
business stake holders and with other technical team. Some time, tester
feels hesitation to be a part of technical discussion. It needs to be avoided.
Talk with business stakeholder and product owner with confident for
updated requirements. Try to be a part of technical discussion. It will not
only help a tester to find loop holes during white box testing but domain
knowledge will also improve.

5)Keep It Simple:
A software tester should follow ‘Keep it simple’ approach to ensure
that software is meeting business requirement and client’s expectation. It
really does not mean to forget about negative cases. But it means, while
doing negative testing, do not forget about happy cases and posit ive test
cases.

6)Practice Continuous improvement:


Some people think that testers may not need to improve after some
years in industry. But ‘Continuous Improvement’ is also very necessary for
testers too as they need to communicate with customers and have to deal
development team. A tester should also have technical knowledge so that
over all architecture of system can be easily understandable to a tester.

7)Respond to change:
Respond to change is for testers too. They need to get updated
requirements as well. As testing team is part of planning meeting, Scrum
meeting so all requirements is clear to them. They should respond to
customer’s queries and quires of development team.

8)Self-Organize:
An agile tester should be self-organize. He needs to be competent,
motivated and persistent. Do respect of your other team members as a
person alone cannot produce quality of product but a team can. Continuity
is essential for the self-organized team. Pull work by yourself, take
ownership and then manage it acco rdingly.

9)Focus on People:

‘Agile is About People, Not Processes’. A project will be a successful


project if best people are allowed to do their best. By focusing on people and
freeing your teams from a process and structure -led response to disruption, your
organization can develop a culture that thrives in complex, unpredictable and
rapidly changing environments.

10)Enjoy:
In agile, there is a lot of pressure of work especially on production release.
After a successful delivery, it is important to enj oy the success too. It will keep
moral high of the whole team. Celebrating success also boast confidence of the
team.

Agile Testing - Quadrants

As in the case of Traditional Testing, Agile Testing also need to cover all the
Test Levels.

 Unit Testing
 Integration Testing
 System Testing
 User Acceptance Testing

Unit Testing

 Done along with Coding, by Developer


 Supported by Tester who writes Test Cases ensuring 100% Design Coverage
 Unit Test Cases and Unit Testing results need to be reviewed
 Unresolved major defects (as per priority and severity) are not left
 All Unit Tests are automated

Integration Testing

 Done along with Continuous Integration as the Sprints progress


 Done at the end after all the Sprints are completed
 All Functional Requirements are tested
 All Interfaces between Units are tested
 All the Defects are Reported
 Tests are automated where possible

System Testing

 Done as the Development progresses


 Users Stories, Features and Functions are Tested
 Testing done in Production Environment
 Quality Tests are executed (Performance, Reliability, etc.)
 Defects are reported
 Tests are automated where possible

User Acceptance Testing

 Done at the end of each Sprint and at the end of the project
 Done by the Customer. Feedback is taken by the Team
 Feedback will be an input to subsequent Sprints
 User Stories in a Sprint are pre-verified to be testable and are with defined
Acceptance Criteria

Agile Testing Quadrants


Combining the two aspects of Testing Types, the following Agile Testing Quadrants are
derived by Brian Marick −

The Agile Testing Quadrants provide a helpful taxonomy to help teams identify,
plan and execute the testing needed.

 Quadrant Q1 − Unit Level, Technology Facing, and supports the


developers. Unit tests belong to this Quadrant. These tests can be
Automated tests.
 Quadrant Q2 − System level, business facing, and conform product
behavior. Functional tests belong to this quadrant. These tests are either
manual or automated.
 Quadrant Q3 − System or User Acceptance Level, Business Facing and
focus on real time scenarios. User Acceptance Tests belong to this
quadrant. These tests are manual.
 Quadrant Q4 − System or Operational Acceptance Level, Technology
Facing and Focus on Performance, Load, Stress, Maintainability,
Scalability Tests. Special tools can be used for these tests along with
automation testing.
Combining these, the Agile Testing Quadrants that reflect What-Testing-
When can be visualized as follows −

Agile testing methods


There are various agile testing methods as follows:
 Acceptance Test Driven Development (ATDD)
 Behavior Driven Development (BDD)
 Exploratory Testing
Test Driven Development
The steps of test first development (TFD) are overviewed in the UML
activity diagram of Figure 1. The first step is to quickly add a test,
basically just enough code to fail. Next you run your tests, often the
complete test suite although for sake of speed you may decide to run only a
subset, to ensure that the new test does in fact fail. You then update your
functional code to make it pass the new tests. The fourth step is to run your
tests again. If they fail you need to update your function al code and
retest. Once the tests pass the next step is to start over (you may first need
to refactor any duplication out of your design as needed, turning TFD into
TDD).
I like to describe TDD with this simple formula: TDD = Refactoring +
TFD.

Figure 1:Test driven development

TDD completely turns traditional development around. When you first


go to implement a new feature, the first question that you ask is whether
the existing design is the best design possible that enables you to
implement that functionality. If so, you proceed via a TFD approach. If
not, you refactor it locally to change the portion of the design affected by
the new feature, enabling you to add that feature as easy as possible. As a
result you will always be improving the quality of your design, thereby
making it easier to work with in the future.
Instead of writing functional code first and then your testing code as an
afterthought, if you write it at all, you instead write your test code before
your functional code. Furthermore, you do so in very small steps – one test
and a small bit of corresponding functional code at a time. A programmer
taking a TDD approach refuses to write a new function until there is first a
test that fails because that function isn’t present. In fact, they refuse to add
even a single line of code until a test exists for it. Once the test is in place
they then do the work required to ensure that the test suite now passes
(your new code may break several existing tests as well as the new one).
This sounds simple in principle, but when you are first learning to take a
TDD approach it proves require great discipline because it is easy to “slip”
and write functional code without first writing a new test.

Behavior Driven Development (BDD)


Behavior Driven Development (BDD) improves communication
amongst project stakeholders so that all members correctly understand each
feature before the development process starts. There is continuous
example-based communication between developers, testers, and business
analysts.
The examples are called Scenarios which are written in a speci al
format called Gherkin Given/When/Then syntax. The scenarios hold
information on how a given feature should behave in different situations
with different input parameters. These are called “Executable
Specifications” as it comprises of both specificatio n and inputs to the
automated tests.

Acceptance Test Driven Development (ATDD)


ATDD focuses on involving team members with different perspectives
such as the customer, developer, and tester. Three Amigos meetings are
held to formulate acceptance tests in corporating perspectives of the
customer, development, and testing. The customer is focused on the
problem that is to be solved, the development is focused on how the
problem will be solved whereas the testing is focused on what could go
wrong. The acceptance tests are a representation of the user’s point of
view and it describes how the system will function. It also helps to verify
that the system functions as it is supposed to. In some
instances acceptance tests are automated.

Acceptance testing
An acceptance test is a formal description of the behavior of a
software product, generally expressed as an example or a usage scenario. A
number of different notations and approaches have been proposed for such
examples or scenarios. In many cases the aim is that it should be possible
to automate the execution of such tests by a software tool, either ad -hoc to
the development team or off the shelf.
Similar to a unit test, an acceptance test generally has a binary result, pass
or fail. A failure suggests, though does not prove, the presence of a defect
in the product.
Teams mature in their practice of agile use acceptance tests as the main
form of functional specification and the only formal expression of business
requirements. Other teams use acceptance tests as a complement to
specification documents containing uses cases or more narrative text.
Also Known As
The terms “functional test”, “acceptance test” and “customer test” are used
more or less interchangeably. A more specific term “story test”, referring
to user stories is also used, as in the phrase “story test driven
development”.

Expected Benefits
Acceptance testing has the following benefits, complementing those which
can be obtained from unit tests:
 Encouraging closer collaboration between developers on the one hand
and customers, users or domain experts on the other, as they entail
that business requirements should be expressed
 Providing a clear and unambiguous “contract” between customers and
developers; a product which passes acceptance tests will be
considered adequate (though customers and developers might refine
existing tests or suggest new ones as necessary)
 Decreasing the chance and severity both of new defects and
regressions (defects impairing functionality previously reviewed and
declared acceptable)
Exploratory Testing
Exploratory Testing is an important activity in an agile environment
as it can help software testers to keep up with the rapid development pace
of agile software projects.
In this type of testing, the test design and test execution phase go hand in
hand. Exploratory testing emphasizes working software over
comprehensive documentation. The individuals and interactions are more
important than the process and tools. Customer collaboration hold s greater
value than contract negotiation. Exploratory testing is more adaptable to
changes. In this testers identify the functionality of an application by
exploring the application. The testers try to learn the application, and
design & execute the test plans according to their findings.
First, a brief intro on agile methodology and exploratory testing:
In agile methodology, software is released in small iterations. Each
iteration goes through planning, estimation, development, integration,
testing and release. Because of frequent releases, test automation becomes
ever so important as developers need to get quick feedback on the status of
the application. The automat ed checks serve as regression tests to ensure
that with each release the software has not regressed.
Exploratory Testing is defined as simultaneous learning, test design and
test execution. It is an approach to testing that values the tester as an
integral part of the test process and shares the same values as the Agile
Manifesto:
Exploratory Testing is also complementary to test automation; that is while
automated checks are checking for regression issues, Exploratory Testing
focuses on new features which have been developed. This is important
because each sprint typically lasts only couple of weeks, which doesn’t
allow sufficient time for scripting tests cases and executing them later
against the application. On the other hand, exploratory testing in agile
environment allows testers to get familiar with the domain and the
application and on each iteration, that understanding is enhanced and hence
testers become more efficient .
agile-exploratory-testing

According to Brian Marick’s testing quadrant , there are two sides to


testing, ones which support programming, i.e. support writing code (unit
tests) or provide an indication of when the programmer might be finished
(acceptance tests) and the ones which critique the product, i.e. “look at a
finished product with the intent of discovering inadequacies.” It’s here, in
the area of critiquing the product, where exploratory testing can play a
major role in agile project.
In agile projects, the tests that support programming are mostly done
by developers and are almost always automated and is an indication of
done from a programmer’s point of view, whereas exploratory tests aim to
find possible issues which are beyond automated programmer tests . The
exploratory testers focus on areas where existing automated tests might
come up short.
Effective exploratory testers working on agile projects use the tactics
of exploratory testing to help inform the project team about possible issues
with the product. Their testing can be unstructured and freestyle or be
managed using charters and test sessions. Also due to the short intervals of
development, testing inherently becomes risk based, and exploratory
testing can focus on high risk areas to find potenti al problems.
Agile methodologies and exploratory testing are complimentary
methods which, when employed together, can create excellent synergy
within the testing experience.
Risk Based Testing

What is Risk Based Testing?


Risk based testing is prioritizing the feature's, modules and functions of the
Application Under Test based on impact and likelihood of failures. It
involves assessing the risk based on the complexity, business criticality,
usage frequency, visible areas, Defect prone areas, etc.
Risk is the occurrence of an uncertain event with a positive or negative
effect on the measurable success criteria of a project. It could be e vents
that have occurred in the past or current events or something that could
happen in the future. These uncertain events can have an impact on the
cost, business, technical and quality targets of a project.
Risks can be positive or negative.

 Positive risks: are referred to as opportunities and help in business


sustainability. For example investing in a New project, Changing
business processes, Developing new products.
 Negative Risks: are referred to as threats and recommendations to
minimize or eliminate them must be implemented for project success

When to implement Risk based Testing


Risk based testing can be implemented in
 Projects having time, resource, budget constraints, etc.
 Projects where risk based analysis can be used to detect
vulnerabilities to SQL injection attacks.
 Security Testing in Cloud Computing Environments.
 New projects with high risk factors like Lack of experience with the
technologies used, Lack of business domain knowledge.
 Incremental and iterative models, etc

Regression Testing -Definition, Test Cases (Example)


Regression Testing is defined as a type of software testing to
confirm that a recent program or code change has not adversely
affected existing features.
Regression Testing is nothing but a full or partial selection of
already executed test cases which are re -executed to ensure existing
functionalities work fine.
This testing is done to make sure that new code changes should
not have side effects on the existing functionalities. It ensures that
the old code still works once the new code changes are done.

Need of Regression Testing


Regression Testing is required when there is a
 Change in requirements and code is modified according to the
requirement
 New feature is added to the software
 Defect fixing
 Performance issue fix

How to do Regression Testing


Software maintenance is an activity which includes enhancements,
error corrections, optimization and deletion of existing features.
These modifications may cause the system to work incorrectly.
Therefore, Regression Testing becomes necessary. Regression Testing
can be carried out using the following techniques:
Retest All
This is one of the methods for Regression Testing in which all the
tests in the existing test bucket or suite should be re -executed. This is
very expensive as it requires huge time and resources.

Regression Test Selection


 Instead of re-executing the entire test suite, it is better to select
part of the test suite to be run
 Test cases selected can be categorized as 1) Reusable Test Cases
2) Obsolete Test Cases.
 Re-usable Test cases can be used in succeeding regression
cycles.
 Obsolete Test Cases can't be used in succeeding cycles.

Prioritization of Test Cases


 Prioritize the test cases depending on business impact, crit ical &
frequently used functionalities. Selection of test cases based on
priority will greatly reduce the regression test suite.

Selecting test cases for regression testing


It was found from industry data that a good number of the defects reported
by customers were due to last minute bug fixes creating side effects and hence
selecting the Test Case for regression testing is an art and not that easy.
Effective Regression Tests can be done by selecti ng the following test cases -
 Test cases which have frequent defects
 Functionalities which are more visible to the users
 Test cases which verify core features of the product
 Test cases of Functionalities which has undergone more and
recent changes
 All Integration Test Cases
 All Complex Test Cases
 Boundary value test cases
 A sample of Successful test cases
 A sample of Failure test cases

Regression Testing Tools


 If your software undergoes frequent changes, regression testing costs will
escalate.
 In such cases, Manual execution of test cases increases test execution time
as well as costs.
 Automation of regression test cases is the smart choice in such cases.
 The extent of automation depends on the number of test cases that remain
re-usable for successive regression cycles.

Agile testing not only facilitates the early detection of defects but
also reduces the cost of bugs by fixing them early. This approach also yields a
customer-centric approach by delivering a high -quality product as early as
possible.

The Importance of Agile Automation Testing


Software development has transformed over time from waterfall method to
Agile. With the advancement in technology, it is very m uch required to be up to
date with the latest technology and innovations in the field of software
development. Agile methodology involves software development to be carried out
throughout the Software Development Life Cycle. This allows the detection of
bugs earlier in the cycle, which results in immediate bug fixes. While testing
early in the software development life cycle, there are certain tests that need to
be repeated. Such cases, if handled manually, can take a lot of time and effort.
Here, test automation is the key that can overcome various challenges and
complexities, and result in better quality product in less time.
Why Agile Automation Testing?
Agile methodology focuses on building a high quality product, reducing the
risk associated with development. Since, agile methodology involves frequent
changes, it is important to have a test automation process for the same. Moreover,
one can consider using Continuous Integration (CI) as well to avoid and
repetitive task.
Agile development methodolog y is based on integration and regular analysis of
the product that is being developed.

There are various challenges associated with agile QA professionals. These


challenges can be overcome using test automation techniques. Some of the
challenges are mentioned below.

 Incomplete test coverage: Any future code changes that were not considered
before can lead to inadequate code changes. However, regression testing
can ensure the functionality of existing releases.
 Broken codes due to frequent build: Since the code is changed frequently, it
is more likely to get broken due to this. A proper automated technique with
CI could tackle this situation.
 Inadequate API testing: Due to the complexity in implementing complex
APIS, API testing they are sometimes overlooked . Automation tools can
overcome the need to have strong code skills while testing such APIs.
 Performance bottlenecks: With more functionality and enhanced experience,
a software application gets more complex and involves a high volume of
code and results in performance related issues. Load testing tools can be
handy in identifying performance bottlenecks and can track performance
over time.
 Complex mobile testing: With the number of mobile devices increasing in
the market day by day, mobile testing is becoming more complex. A strong
automation suite can ensure that the code doesn’t break with each build.

Since, there are various automation tools, an automation tool must be


decided based on the project requirement. Some of the automated validation
includes functional automation, API testing automation, mobile automation, and
more.

Advantage of Agile Test Automation in Agile Development


Automation in software development provides speed, reliability, programmability,
reusability, and more. Same is the case in Agile as well. However, in agile the importance
of automation is much more than in software development. Some of the advantages are
discussed below.

 Faster turnaround: Agile automation can help in quick turnaround for QA by


implementing continuous integration in agile.
 Repeat execution: The daily build execution can be certified using right
automation tool and approach.
 Ensured Quality: A perfect test automation suite can ensure a quality product at
any given time. However, the selected test case must cover the application
properly.
 Team’s Quality: Because of the requirement of automation at every step, the team
is responsible for the quality collectively.

Useful Open Source Testing Tools for Agile Testers

Are you a technical tester in the agile project? Various new platforms are
being developed every day, and testers are providing sharing their inputs with the
developers to improve the functionalities of the project as well as test numerous
features, etc. using various testing tools to verify the functionality of the
application. Here, we have compiled a list of useful tools to help your testing
activities in agile projects.

1.Selenium Web Driver

Selenium Web Driver is the most widely used test tool for browser test automation.
By running automated tests on the UI, we can simulate what the user sees when
they interact with the web application. One of the main advantages of using
Selenium WebDriver over other UI automation tools is that you can write your
automated tests in a variety of supported programming languages, such as Java, C#,
Ruby, Python, and PHP.

Selenium is often used in Agile projects because there is a heavy emphasis on


automated testing and that the whole team can contribute to automated tests.

2. Jmeter
Jmeter is an open source performance testing tool written entirely in Java. It can be
used to load test websites (HTTP, HTTPS) as well as Web Services(SOAP and
REST) and Databases. The HTTP(S) Test Script Recorder can be used to record
and replay requests. Jmeter can be extended by plugins to support further
functionalities and there is also a Jenkins plugin which means you can run
performance tests as part of the delivery pipeline.

3.SoapUI

SoapUI tool is primarily used for functional testing of Web Services. The tool is
relatively easy to use and you can create tests for web services in just a few
minutes. You can execute tests and analyze the reports all inside SoapUI GUI. A
nice feature of SoapUI is its ability to create mock web services which are handy
when you are creating tests for a web service which are not yet developed.

4.VirtualBox

These days, most applications need to be tested against multiple browsers and
operating systems. Instead of having physical servers with different operating
systems and browsers, VirtualBox provides an easy solution to create virtual
machines with different configurations. You can run VirtualBox on any operating
system to create virtual machines and you can even have multiple virtual machines
with different operating systems on the same box.
5.XMind

XMind in the most popular and feature-rich mind mapping tool. You can use it to
create stunning mind maps to highlight the features of a website, or to create a user
journey flow through the application. Mind maps have become very popular in the
world of software testing because they provide nice visuals and can be of great help
when designing test cases.

You might also like