Functional testing is testing the ‘Functionality’ of a software or an application
under test. It tests the behavior of the software under test. Regression testing
is a type of functional testing.
Regression testing is carried out on receiving the build of the software after
fixing the bugs that were found in the initial round of testing. It verifies
whether the bugs are fixed and checks if the entire software is working fine
with the changes.
UNIT TESTING:
Unit testing is a level of software testing where individual units or
components
of a software are tested. The purpose is to validate that each unit of
the
software performs as designed. A unit is the smallest testable part of
any
software. It usually has one or a few inputs and usually a single
output.
INGTEGRATION SYSTEM:
Integration testing is a level of software testing where individual
units are
combined and tested as a group. The purpose of this level of testing is
to
expose faults in the interaction between integrated units. Test drivers
and test
stubs are used to assist in Integration Testing.
SYSTEM SYSTEM:
System testing is a level of testing that validates the complete and
fully
integrated software product. The purpose of a system test is to evaluate
the
end-to-end system specifications. Usually, the software is only one
element of a
larger computer-based system.
ACCEPTANCE TESTING:
Acceptance testing, a testing technique performed to determine if the
software
system has met the requirement specifications. The main purpose of this
test is
to evaluate the system's compliance with the business requirements and
verify if
meets the required criteria for delivery to end users.
The purpose of Regression Testing is to verify if code change introduces
issues/defects into the existing functionality. There are so many kinds
of
possible changes that can impact the existing functionality in an
application
system. Even the simplest change to the code could impact the previously
tested
functionality. Regression is initiated when a programmer fixes any bug
or adds a
new code for new functionality to the system. There can be many
dependencies in
the newly added and existing functionality. It is a quality measure to
check
whether the new code complies with the old code so that the unmodified
code is
not getting affected. Most of the time the testing team has the task to
check
the last minute changes in the system. In such a situation, testing only
affected application area is necessary to complete the testing process
on time
by covering all the major system aspects.
This test is very important when there is a continuous
change/improvement added
in the application. The new functionality should not negatively affect
the
existing tested code. Regression is required to find the bugs that
occurred
because of a change in the code. If this testing is not done, the
product might
get critical issues in the live environment and that indeed can lead the
customer into trouble.
Regression testing can be used not only for testing the correctness of
a
program but often also for tracking the quality of its output. For
instance, in
the design of a compiler, regression testing could track the code size
and the
time it takes to compile and execute the test suite cases. Change in
requirements and code is modified according to the requirement
New feature is added to the software
Defect fixing
Fixing performance issues
The overall purpose of regression testing is to easily and effectively
uncover
all possible software regressions, whether they were newly created
(local /
remote) or previously undiscovered (unmasked).
An integral part of software testing, test artifacts are the various
by-products
generated during the process of software testing, which are then shared
with the
clients, team managers, team lead, and other team members and
stakeholders
associated with the project. The main purpose of these artifacts is to
establish
transparency among the team members and therefore are recorded properly
with
accurate information and details.
These artifacts help testers know the requirements of the clients and
the
stakeholders as well as allows them to ensure that there is no
miscommunication
between them.
Responsibilities of Regression testers are:
Planning the test
Making sure that all the necessary resources required for the execution
of
testing activities are available.
Making sure that the test is passing hand to hand through all the
planned
passes or not
Preparation of the status report of the testing activities
Interaction with the customers
Regular updating of the testing activities to the project manager
Reading and understanding of all the necessary documents that need to
be
tested
Deciding how to test based on the above-procured information
Informing the test lead regarding the requirement of resources for the
testing
to be done
Development of test cases and prioritization of testing activities
Execution of all the test cases
Reporting of defects
Defining the severity and priority for each defect
A real-world example of regression testing is that you take your car to
a
mechanic to get the air conditioning fixed, and when you get it back,
the air
conditioning is fixed but the gas tank sensor no longer works. Another
example
has been explained in the video below.
Practical Application of Regression Testing Example with a Video
Infostretch, an IT company optimizes Regression Testing for the
digital age.
The IT industry had contributed massively to the cultivation of
regression
testing with the emergence of automated regression testing.
Automated regression testing is a way for a development team to
improve the
maintenance of a project, ensure high user retention rates, and
reduce
potential tech debt. With a wide range of third-party tools,
automating
regression testing is not as challenging as it would seem at first
glance.
An intelligent regression testing strategy includes knowing how to
automate
and prioritize cases, monitor their execution, and write
comprehensive test
summary reports.
A few Research papers on Regression Testing have been listed
below:
Multiple regression: Testing and interpreting interactions
LS Aiken, SG West, RR Reno - 1991 - books.google.com
Insights into regression testing (software testing)
HKN Leung, L White - Proceedings. Conference on Software …, 1989 -
ieeexplore.ieee.org
Prioritizing test cases for regression testing
G Rothermel, RH Untch, C Chu… - IEEE Transactions on …, 2001 -
ieeexplore.ieee.org
Incremental regression testing
H Agrawal, JR Horgan, EW Krauser… - 1993 Conference on …, 1993 -
ieeexplore.ieee.org
Regression testing minimization, selection and prioritization: a
survey
S Yoo, M Harman - Software testing, verification and reliability,
2012 -
Wiley Online Library
A study of effective regression testing in practice
WE Wong, JR Horgan, S London… - … The Eighth International …, 1997 -
ieeexplore.ieee.org
Books on Regression Testing:
Regression Testing in Era of Internet of Things and Machine Learning
Software Regression Tools and Methods
Modeling of Test Suite Optimization Framework
An Enhancement of Regression Testing Techniques
Path Selection Strategy for Regression Testing
Software Metrics Based Approach
Following are the most important tools used for regression testing in
software
engineering.
Selenium: This is an open source tool used for automating web
applications.
Selenium can be used for browser-based regression testing.
Quick Test Professional (QTP):HP Quick Test Professional is automated
software designed to automate functional and regression test cases.
It use
VBScript language for automation. It is a Data-driven, Keyword based
tool.
Rational Functional Tester (RFT):
IBM's rational functional tester is
a Java
tool used to automate the test cases of software applications. This
is
primarily used for automating regression test cases and it also
integrates
with Rational Test Manager.
Testimony:Testimony, from Basis Technologies, is a part of the only
DevOps
and test automation platform engineered specifically for SAP
software. It
reinvents SAP regression testing by eliminating test script creation
and
maintenance and removing the need for test data management.
Digivante:
Digivante sets the standard for regression, usability and
conversion testing. It does Regression testing through scripted and
non-scripted tests that can take as little as 4 hours to complete.
Testsigma:
An ideal automated regression testing tool that suggests relevant or
affected test cases after a feature enhancement/bug fix. Testsigma
lets you
run regression tests right after the first check-ins, automatically,
within
a sprint.
Sahi Pro:
Sahi Pro is a tester focused automation regressing testing tool. It
is one
of the most popular regression testing tools that suits best for
testing
large web applications quickly and with lesser maintenance effort.
Watir:
Watir (pronounced as water) is a short form for Web Application
Testing in
Ruby. It uses the Ruby programming language. Watir can be used to
automate
regression testing suites
TestComplete
Katalon Studio
Katalon Studio is an automated testing solution built on top of
Selenium and
Appium for web, API, mobile, and desktop. It is recommended as a top
Customer's Choice by Gartner Peer Insights.
TimeShiftX
TimeShiftX is a date shifting software that lets you time travel
apps to
perform temporal testing.
Ranorex Studio:
Used by over 4,000 companies worldwide, Ranorex Studio is easy for
beginners
with a codeless click-and-go interface and helpful wizards, but
powerful for
automation experts with a full IDE.
TestDrive
TestDrive is an automated software quality (ASQ) solution that lets
you do
automated regression testing rapidly. It lets you come up with
dynamic,
flexible and easy deployable tests.
On the scale, I score myself as a 8. Working on this project helped me
get a
thorough understanding of regression testing. I was aware about software
testing
and various kinds of testing, but never studied anything in depth about
it.The
task of developing my skill template led me to research all I could
about
regression testing.Hence overall, it was an excellent learning
experience for me
.