Software Testing Tutorial #23 - What is Regression Testing
Summary
TLDRThis tutorial covers regression testing, a crucial type of software testing performed to ensure that new code, defect fixes, or added functionality do not affect existing features of an application. The instructor explains the differences between regression testing and retesting, providing examples like an e-commerce website's registration functionality. Key topics include when to perform regression testing (e.g., after bug fixes, new features, or code refactoring), techniques for conducting it, and methods for selecting test cases, such as focusing on critical, high-priority, and integration test cases. The video concludes with tips on creating an effective regression test suite.
Takeaways
- π Regression testing is a widely used software testing type done in every release, especially when a new feature or defect fix is introduced.
- π The purpose of regression testing is to ensure that the existing functionality of an application works as expected after code changes or bug fixes.
- π Regression testing is different from retesting, though retesting is a part of regression testing. Retesting focuses on verifying fixed defects, while regression ensures overall functionality.
- π Example: In an e-commerce website, if a Facebook registration bug is fixed, regression testing ensures that other registration options (email, Google, etc.) are unaffected.
- π§ Regression testing is necessary when a defect is fixed, new functionality is added, or code refactoring is done to improve performance or maintainability.
- βοΈ Configuration changes in the application may also necessitate regression testing to ensure no unintended impacts on existing functionality.
- π‘ Techniques for regression testing include selecting all test cases, selecting specific test cases based on impacted areas, or prioritizing critical test cases.
- π Critical, frequently used functionalities should be included in regression testing to ensure core application features work post-changes.
- 𧩠High-priority test cases and integration test cases should be part of regression test suites to cover key aspects and integrations of the application.
- π Test case selection should consider the module being changed, analyzing which parts of the application may be impacted and adjusting the regression test cases accordingly.
Q & A
What is regression testing in software development?
-Regression testing is a technique used to ensure that existing functionality of a software or application works as expected after new code, bug fixes, or additional features have been introduced.
How is regression testing different from retesting?
-Regression testing ensures that new code changes do not negatively affect the existing functionality, while retesting focuses on verifying whether specific defects have been fixed. Retesting is a part of regression testing, but their purposes differ.
When should regression testing be performed?
-Regression testing should be performed after any defect fix, new functionality addition, code refactoring, or configuration changes to ensure that the existing functionalities are not impacted by these changes.
What is an example of regression testing in an e-commerce website?
-In an e-commerce website, if a developer fixes a bug related to registration via Facebook, regression testing would involve checking other registration methods (e.g., via email or Google account) to ensure they were not affected by the Facebook registration fix.
What are the main techniques for conducting regression testing?
-The main techniques for regression testing include: 1) selecting all test cases, 2) regression test selection (choosing only relevant test cases), and 3) prioritizing test cases based on critical functionality.
What is the 'regression test selection' technique?
-Regression test selection involves analyzing which parts of the application are impacted by a change and executing only the test cases related to those modules, instead of running all test cases.
Why is selecting all test cases for regression testing uncommon in manual testing?
-Selecting all test cases for regression testing is uncommon in manual testing because it requires significant effort to manually execute all test cases. This approach is more feasible when there is a fully automated regression suite.
How does prioritization help in regression testing?
-Prioritization helps by allowing testers to focus on the most critical functionalities of an application, ensuring that essential features are thoroughly tested after any change.
What are some key criteria for selecting regression test cases?
-Key criteria for selecting regression test cases include frequently used functionalities, high-priority test cases, integration test cases, and module-specific test cases.
What is the role of integration test cases in regression testing?
-Integration test cases play a crucial role in regression testing by ensuring that the application continues to function properly with external systems and other integrated components after any code changes.
Outlines
π Introduction to Regression Testing
This paragraph introduces regression testing, describing it as one of the most widely performed testing types in software projects. It highlights that regression testing ensures that existing functionality continues to work correctly after code changes, new feature additions, or defect fixes. A key distinction is made between regression testing and re-testing, with regression testing focusing on the overall applicationβs behavior while re-testing is a part of it. The need to understand both concepts from an interview point of view is emphasized.
π οΈ When to Perform Regression Testing
This section discusses various scenarios where regression testing is needed. The first scenario is when a defect fix has been applied, requiring verification that the fix hasn't affected other areas of the application. Another situation is when new functionality is added, such as features or code refactoring to improve performance. Each scenario involves ensuring that the applicationβs functionality remains unaffected by the changes. The importance of selecting test cases for critical areas and configuration changes is also mentioned.
π Regression Testing Techniques
The paragraph explains different techniques for performing regression testing. One method is to execute all test cases, although this may be impractical without an automated suite due to the manual effort required. Another approach is regression test selection, where testers analyze the affected modules and select specific test cases based on impact. Prioritization of test cases is the third approach, where critical tests are executed to ensure the stability of the key application functionalities. Developersβ input is crucial in determining impacted areas.
π How to Select Regression Test Cases
This section focuses on criteria for selecting regression test cases. Frequently used functionalities and high-priority test cases are highlighted as critical for inclusion in regression suites. The importance of testing integration points in applications that interact with other systems is also emphasized. Test case selection can also be based on module analysis, where impacted areas of the application are identified and corresponding test cases are selected for regression testing. These techniques help ensure that any changes to the application do not affect existing functionality.
π Final Thoughts on Regression Testing
The concluding paragraph summarizes the importance of regression testing in ensuring application stability after code changes, defect fixes, or the introduction of new functionalities. It revisits the strategies for selecting test cases and highlights the need for continuous analysis of the application to ensure proper regression coverage. The video concludes with a reminder to share and subscribe, thanking viewers for watching the tutorial.
Mindmap
Keywords
π‘Regression Testing
π‘Retesting
π‘Defect Fix
π‘New Functionality
π‘Code Refactoring
π‘Test Case Selection
π‘Prioritization of Test Cases
π‘Frequently Used Functionalities
π‘Integration Test Cases
π‘Configuration Changes
Highlights
Regression testing is one of the most widely done types of software testing, used in nearly every release.
Regression testing ensures that the existing functionality of the software works as expected after new code is introduced or defect fixes are applied.
Regression testing is different from retesting, although some retesting is included within it.
Regression testing verifies that other functionalities, not directly related to the fix, are still working correctly after a defect fix.
An example is given using an e-commerce website, where a defect in the registration process using Facebook login could affect other registration methods.
Regression testing may involve a complete set of test cases, or only a subset depending on the changes made.
The key times to perform regression testing are after defect fixes, new feature additions, and code refactoring.
Regression testing can be triggered by configuration changes, which might affect the application's overall functionality.
There are several techniques for regression testing, including executing all test cases or selecting only those affected by the change.
Regression test selection involves analyzing the areas of the application affected by the changes and testing only those parts.
Prioritizing test cases for regression testing focuses on critical functionalities that are frequently used or most essential to the application.
Regression test cases can be chosen based on frequently used functionalities, high-priority test cases, and integration test cases.
In some situations, you select test cases based on modules affected by the changes, analyzing which modules may have been impacted.
Automated regression testing can significantly reduce manual effort and allow for re-execution of test cases across multiple releases.
The goal of regression testing is to ensure the software's integrity after modifications and maintain consistency in its performance.
Transcripts
hello everyone welcome again in the
software testing tutorial
we are going to learn what is regression
testing
so regression testing is
the most widely done you know software
testing type in any software testing
project
because this is the testing that you
will be
doing in mostly every release and every
you know new feature being added or
defect fix
being added so before we get into the
details let's first understand
what exactly regression testing is so if
we talk about the definition regression
testing
is the technique or the testing type
which is performed to ensure that the
existing functionality
of the software or application works
as expected if there is any new code
introduced or
new defect fix has been done or any new
functionality added in the application
so please note that regression testing
is uh you know different from retesting
so retesting is
sort of you know you can say it's a part
of regression testing
but there is a very fine difference
between regression testing and
re-testing right so you need to
understand from interview point of view
that regression testing is not same
as re-testing but in regression testing
you
do some re-testing so you can say there
are
you know some re-testing or the test
case that you execute as part of
regression testing
are the test cases that you are actually
retesting
but the definition and the purpose of
regression testing and retesting
is completely different so let's first
understand
what exactly regression testing is and
when you do it how you do it
what are the different strategies or
techniques that you use to do
regression testing now let me take an
example to explain you
exactly what regression testing is so in
terms of definition
we know that any you know testing
that you perform if there is any bug fix
or
code changes or new functionality
addition into the software
that you know set of test cases that you
execute is
the regression testing now say for
example if i take an example of the
e-commerce website so e-commerce website
will have the register functionality
right so that is the example that we
have been taking till now
now in the registration page
say for example there is a register
link and once the user clicks on a
register link
he has the option to register using
email using facebook account using
google account and
other social media accounts right so in
the register
module there are many different
options basically or different
implementation
to register a user on the particular
website or
e-commerce website now when the user
registers on e-commerce website
then in that particular case if there is
any change say for example you are
testing the registration functionality
and
during the testing of the registration
functionality
with the facebook registration or
registration using facebook login id
the registration fails or registration
is not successful
so that is the defect that you found
during the functional testing
now when the developer is fixing that
particular
defect then in that case
that fix could impact other registration
functionality as well in the application
right so
when the defect of registration got
fixed then in that
case what you need to do is you need to
basically
verify that other registration
functionality is also working as
expected
now when you are verifying the
other registration functionality or you
are testing
the registration functionality using
email using google
account as part of the defect fix that
was fixed
for the facebook account then those
test cases that you execute as part of
this defect fix
are known as regression test cases right
or regression testing
now regression testing is not limited
only to
that set of test cases it could be a
complete set of regression test cases so
in this particular case
if say for example you want you can test
the overall critical functionality of
the whole e-commerce website
because there has been a fix that is
done
um within the application so there are
different techniques that can be chosen
to do the regression testing
so this is a brief introduction and what
exactly irrigation testing
is and when you should do regression
testing
now let me first understand ah you know
what all
scenarios could be there when you can
perform regression testing right
so let me say when you can do regression
testing
so if i talk about when so the first
example that we took
is when the defect fix happened
right so in the case of defect fix so
when we say defect fix
defect fix will be done when there is a
code fix right so if there is any defect
there could be another code fix or there
could be configuration
changes that could fix that defect right
so in case of defect fix
there will be the need of the regression
testing okay
and the second option could be
new functionality that's right so new
functionality added
so new functionality functionality or
feature
being added into the application so that
could be the second case
third case could be code refactoring
right so code refactoring wherein
developers
or the development development team
refactors the existing code to improve
the performance
or improve the maintainability of the
code
then in that particular case the overall
structure
or the code is being refactored in that
case
you need to pick a set of test cases
that are
critical for that application and are
basic to that particular application
and ensure that the application
functionality has not been impacted
because of
code refactoring or because of adding
the new functionality or
because of you know having the defect
fix in the application
so any you know verification that you do
to ensure that the existing
functionality of the application
because of you know defect fictional
functionality code refactoring there
could be n number of you know other
factors as well
um and ensure that the existing
functionality of the application works
as expected
then that is regression testing and
these are
you know some of the places when you do
regression testing there could be you
know like this is not the comprehensive
list there could be many more factors
when you choose to do regression testing
uh other i can think of
is say for example configuration changes
right so config changes
so if there are any config changes in
the application
then in that case as well you do
regression testing
so this is one part of the regression
testing so when you do the regression
testing
um now if i talk about the techniques of
the regression testing so let me say
techniques let me rub this and
in the techniques so
so in the techniques of regression
testing what you can do is say for
example
there is a defect fix that we have seen
in the e-commerce portal
so in the techniques you can
first technique will be you can select
all the test cases right so you can
select
all um the test cases that existing test
cases for the application so in the
e-commerce
portal whatever test cases you have
written till now
say for example whatever functionalities
have been you know implemented
you can select all the test cases and
execute all those test cases
so that could be one of the technique or
approach to
do the regression testing in case of any
fix or any new
uh you know functionality being added
but this is
this is very highly you know unlikely
unless you are
having 100 automated regression test
suite
because it will require a lot of manual
testing effort to do the
you know complete regression test after
each of the defect fix because you have
to re-execute say for example
till release 2 you have written 100 test
cases
then with every defect fixed you have to
basically re-execute those handed test
cases
right or with any new functionality
being added you have to re-execute those
100 test cases if you do select all or
you select all the test cases
the second technique you can use is
basically
you know regression
test selection okay so in this case
what you do is you basically see what
area of the application has been changed
now in this
in in the previous example we have seen
the registration functionality
so in the registration functionality
only
the registration with facebook was
failing say for example right
now that fix has been done
in the register okay so in the
registration
pardon my handwriting just
let me change it okay so in the
registration
only the facebook registration defect
has been fixed
fixed so what you can do is when you
choose this particular technique so what
you do is you
you select the test cases that you want
to
execute or basically you analyze the
modules that could be impacted
because of that particular fix so now we
see registration functionality
uh is you know related uh so we'll test
all the registration test cases with
different you know
social media account and email account
and we'll also
test the login functionality along with
that right so you can have a subset of
test cases you can select the subset of
test cases
based on your analysis of the module
that has been
changed or updated by the developer
and developers if you talk to developers
they'll help you out
about the impact or the changes that
they have done in the code which will
help you to analyze
which test cases you need to basically
re-execute when you
when you select uh the test selection
for the regression
the third approach will be uh basically
you prioritize the test cases right so
prioritize
so in the prioritize test cases
what you do is you prioritize the
critical test cases of your application
okay so when say for example your
application is already in production
and all the major functionality or the
critical functionality that is being
used
uh you know every day so those test
cases
will be prioritized and in case of any
functional changes any defect fixes
those prioritized
test cases will be executed as part of
the regression
testing right so these are some of the
techniques that you'll utilize to do the
regression
testing now when we talk about you know
how you can select the regression test
cases
so let me explain how part of the
regression testing as well
so how to select
how to select tests all right
now to understand how to select
regression test cases what you need to
understand is basically say for example
first thing is to
say frequently used functionalities
right
so frequently used functionalities
so this is one of the criteria that you
can utilize to
identify your regression test cases so
in the project when you're working you
will have
the prioritized um
you know functionalities or the critical
functionalities that are used very
widely by the
by the end user or by the customer then
if
those are the used functionalities or
the frequently used functionalities
then those functionalities or any test
cases related to this
that functionality will have the test
cases those test cases will be critical
for your regression testing and you need
to pull out those test cases
and have those into your regression test
suite
so this is the first you know approach
that you can use to select
the test cases so critical functionality
pull out the test cases for those
critical functionality
uh in your application the second is
basically
high priority so based on uh the
priority so high priority
so if you have you know the test cases
you will have the priority
assigned to those test cases so second
approach is
uh in case of any changes or new
functionality or new
uh implementation new feature being
added into the application
you pick all the higher priority test
cases that
you already have and you allocate those
as a regression test suite and execute
those
the third criteria could be your
say for example integration test cases
right
so integration test cases are uh you
know another
very important test cases because when
you have the application it will be
integrated with other n number of
applications and if there are any
updates in the application you want to
ensure
that all the integration points are
working as expected
so this is another criteria to pull out
the regression test cases
so these are some of the key criteria
that you can utilize to pull the
regression test cases and create your
regression test suite
and make it ready to be executed when
whenever there is a you know
defect fix or new functionality added
right uh the third
the the next one could be you know say
for example
select test cases as per module so as
per module
so when you when you do this so when you
select as per module
then in that case same example uh login
functionality so in that case
you analyze what fix has been done in
the software application
and based on that change you
analyze the module and see what all
changes have been done
which all modules could have been
impacted and you
make the selection of the test cases
based on that
change in the module right so this is
you know this could be another
criteria to select the test cases so
these are some of the criteria but when
you start you know working in
in the project and you will start to
analyze
analyze the overall you know application
and how to figure out the test cases
there
could be you know like another and
number of you know selection criteria
that you will come to know
but these are some of the very commonly
asked
criterias and very widely used criteria
is basically
to pull out the regression test cases
and
verify the regression uh that the
application is working as expected in
case of any
you know changes to the code because of
bug fix or functionality changes or
addition of the
new requirement or implementation of the
new requirement in the
application so that is all about
basically what is regression testing and
you know when
to perform regression testing we have
covered some of the techniques
of regression testing and then how you
can select the regression test cases
uh and ensure that your application
works as expected
if there is any you know new code
introduced into the application because
of defect fix
or any other changes into the
application
so that's all for this tutorial hope it
was helpful
please do share and subscribe and thank
you very much for watching
Browse More Related Video
Software Testing Tutorial #24 - Regression Testing in Agile Development
Software Testing Tutorial #26 - Smoke Testing Vs Sanity Testing
Software Testing Tutorial #27 - Verification and Validation in Software Testing
ISTQB FOUNDATION 4.0 | Tutorial 22 | Sample Questions on Chapter 2 | ISTQB Foundation Mock Questions
ISTQB FOUNDATION 4.0 | Tutorial 18 | Test Types | Functional Testing | Non-Functional Testing | CTFL
CH01.L04. Fundamental Test Process
5.0 / 5 (0 votes)