Software Testing Tutorial #24 - Regression Testing in Agile Development
Summary
TLDRThis tutorial explains regression testing within an agile development approach, particularly in a Scrum framework. It highlights the challenges of manual regression testing across multiple sprints as the number of test cases grows. The solution suggested is automating regression testing by identifying key test cases and building an automated regression suite throughout the development process. Tools like Selenium for UI automation or API-level automation tools are recommended to efficiently manage regression testing in agile projects, ensuring that previous functionalities remain intact as new features are introduced.
Takeaways
- 💡 Regression testing ensures that existing functionality continues to work after new code or features are added.
- ⚙️ In agile development, specifically Scrum, the project is divided into sprints, typically lasting 2-4 weeks.
- 📋 User stories, which represent the project requirements, are assigned to each sprint for development and testing.
- 🧪 Testers write test cases for each user story and test the functionality based on the acceptance criteria during the sprint.
- 🔄 Regression testing ensures that code changes or additions do not break previously working functionalities.
- 🚧 Manual regression testing becomes increasingly challenging with each sprint due to the growing number of test cases.
- 🤖 Automation is a key solution for handling regression testing in agile projects to save time and ensure accuracy.
- ✅ Test cases are prioritized and marked as regression candidates based on their importance and usage frequency.
- 🔧 Automated regression suites are built gradually, sprint by sprint, reducing the need for manual testing.
- 🛠️ Tools like Selenium and API-level testing tools can be used for automating both UI and API regression tests.
Q & A
What is regression testing, and how is it different from retesting?
-Regression testing ensures that existing functionality continues to work after code changes, while retesting focuses on verifying if specific defects or issues have been fixed. Retesting is part of regression testing but they serve different purposes.
What is the main challenge of performing regression testing in an agile development approach?
-The primary challenge is that with each sprint, the number of test cases grows, making manual regression testing increasingly time-consuming and unfeasible, especially with short development cycles like 2-week sprints in Scrum.
How are test cases organized in Scrum for each sprint?
-Test cases are organized based on user stories, which define specific functionalities or requirements. Each user story has acceptance criteria and corresponding test cases, which are tested during the sprint to ensure functionality is as expected.
Why is manual regression testing difficult to manage in agile projects?
-Manual regression testing becomes difficult in agile projects because, as more sprints are completed, the number of test cases that need to be re-executed continues to grow. This makes it unfeasible to manually test all cases without significantly increasing the team size.
How can automation help with regression testing in agile projects?
-Automation helps by reducing the manual effort required to re-execute test cases. As each sprint progresses, test cases marked as critical for regression are automated, allowing them to be quickly executed in future sprints, saving time and resources.
What criteria should be used to select test cases for automation in regression testing?
-Test cases should be selected for automation based on their importance, frequency of use, and impact on the project. It’s essential to prioritize which test cases are most critical, rather than automating all test cases, to build an efficient regression test suite.
What is the role of user stories in agile testing?
-User stories in agile testing define the requirements and functionalities that need to be implemented. Each user story includes acceptance criteria, which are used to create corresponding test cases. These stories guide the development and testing processes in each sprint.
How does automation benefit the team in future sprints?
-By automating test cases in each sprint, the team can run automated regression tests in future sprints without having to manually re-execute test cases. This increases efficiency and allows the team to focus on testing new functionalities rather than re-testing existing ones.
What tools are typically used for regression test automation?
-Common tools used for regression test automation include Selenium for UI testing and various API testing tools. These tools allow teams to automate repetitive test cases and ensure that previously tested functionalities continue to work after code changes.
What is the importance of identifying regression test candidates during sprints?
-Identifying regression test candidates during sprints ensures that only the most critical and relevant test cases are included in the regression suite. This prioritization is crucial for managing the increasing number of test cases over multiple sprints and avoiding unnecessary automation.
Outlines
👋 Introduction to Regression Testing in Agile Development
The first paragraph introduces the concept of regression testing in the context of agile development, specifically focusing on the Scrum framework. The speaker recalls previous lessons about regression testing and its distinction from retesting. The main focus is on understanding how regression testing fits into the fast-paced, iterative nature of agile projects, particularly in two-week sprints. The paragraph explains that agile teams work on 'user stories' and develop and test functionalities during these sprints, with the need to continuously ensure that previously working features remain functional as new code is integrated.
🔄 Regression Testing Across Multiple Sprints
The second paragraph dives deeper into how regression testing is performed in agile projects. It emphasizes the challenge of executing all test cases from previous sprints in addition to the current sprint’s functional testing. The speaker explains that as new stories and test cases are added in subsequent sprints, the regression suite keeps expanding, making manual regression testing increasingly difficult. As the project progresses, the number of test cases increases significantly, and manually executing all of them becomes unrealistic. The need for a sustainable testing strategy, like automating test cases, is introduced.
🤖 Importance of Test Automation in Agile Regression
This paragraph focuses on the solution to handling regression testing in agile projects—automation. It explains that automating test cases helps manage the growing number of regression tests across multiple sprints. The speaker suggests marking critical test cases as 'regression candidates' early in the project and automating them. This allows the team to run automated regression tests in future sprints, ensuring that the core functionalities continue to work without requiring manual re-execution of all test cases. The importance of prioritizing and selecting the most impactful test cases for automation is also highlighted, as not every test case needs to be part of the regression suite.
🏃♂️ Automating Regression Testing in Scrum
In this final paragraph, the speaker reiterates how automation plays a crucial role in agile regression testing, specifically within the Scrum framework. They discuss the process of building an automated regression test suite over multiple sprints by identifying regression candidates and automating them. Tools like Selenium for UI testing or API automation tools are mentioned as helpful for this process. The automated suite reduces manual testing efforts in future sprints, ensuring efficient and scalable regression testing. The conclusion highlights the benefit of this approach in achieving agile testing goals efficiently.
Mindmap
Keywords
💡Regression Testing
💡Agile Development
💡Sprint
💡User Story
💡Scrum
💡Automation
💡Test Cases
💡Sprint Backlog
💡Manual Testing
💡Progression Testing
Highlights
Introduction to regression testing in the agile development approach.
Clarification of the difference between regression testing and retesting.
Explanation of the Scrum framework, its two to four-week development cycle, and sprints.
Description of user stories in agile, including their role in defining functionalities and acceptance criteria.
Manual regression testing challenges in agile projects due to increasing test case volume with each sprint.
Identification of the need for regression testing to ensure existing functionality remains intact after new features are added.
Discussion of the impracticality of manually executing all test cases as the project progresses through multiple sprints.
Importance of prioritizing and selecting the most important test cases for regression testing.
Suggestion to automate regression test cases to reduce manual testing workload in future sprints.
Overview of how to build a regression test suite by identifying regression candidates during functional testing.
Emphasis on selecting and automating high-priority test cases for the regression test suite.
Explanation of how to use automation tools like Selenium for UI testing and API tools for backend automation.
Guidance on continuously building and expanding the automated regression test suite throughout the project.
Suggestion that automating test cases in each sprint reduces future regression testing efforts.
Conclusion: Tackling regression testing in agile by leveraging automation ensures efficient testing as the project scales.
Transcripts
hello everyone welcome again in this
software testing tutorial
we are going to learn regression testing
in
agile development approach so in the
previous tutorial we have understood
what is
regression testing and how it is you
know different
from retesting or you can say retesting
is sort of
part of regression testing but they are
not same so re-testing and regression
testing are different
and i explain i will explain it in the
next tutorial
now in continuation to what is
regression testing when do you do it
you know we also need to understand what
is regression testing in agile or how
you need to basically
uh you know approach regression testing
in agile development approach
so uh if we talk about the agile
development approach
uh say for example you are following
scrum so scrum
is two to four weeks development cycle
now in the two to four weeks development
cycle or iterations which are also known
as prints
so say for example your project follows
two weeks print so what you
will have in two weeks sprint is you
will have the sprint backlog and sprint
backlog is nothing but
the set of stories or the features that
you will be you know
implementing in those two weeks as a
team and
developing that and basically showcasing
or
demoing the working software
after the two weeks or the sprint gets
over right
so say for example if i say sprint one
is your first sprint which is basically
uh you know two weeks cycle okay so in
scrum you will be having you know
two weeks or whatever cadence that you
choose so
if your project has chosen two weeks
sprints then you will be following two
weeks prints until
the completion of the project so in the
two weeks
for example you have picked you know
four stories so story one
story two story three and story four and
stories are nothing but the requirements
in the agile project or scrum so these
stories are basically the
functionalities that will define that
will have the functionalities and the
uh or the requirement and the acceptance
criteria
which is defined in these stories and
these will be implemented in the sprint
right so developers will start working
using these requirements which are
nothing but the stories user stories and
they'll start
developing those user stories testers
will collaborate with developers bas and
they'll start
you know documenting or writing the test
cases and as soon as the functionalities
are available testers will start testing
the stories and ensure that the
acceptance criteria
that is met in these stories is as
expected
right so when we talk about regression
testing in agile
how it is it becomes challenging in
agile
if you cater for the manual regression
testing we'll understand that so say for
example this is the first print
and you have four stories and each story
has say for example this story has four
test cases this has five
this has you know seven and this has ten
test cases right
so these are the test cases that you
have written for these
four user stories to verify that the
functionality that is defined in these
user stories is as
expected right now this is the
number of test cases that you have
written and executed in sprint one
now once print one got over say for
example
here you have executed all of these you
know manually right so there will be
another next print which is sprint two
and in sprint two which is again
next two weeks cycle and in sprint two
you will get another
user requirements right so another user
story is based on the priority say for
example
five six seven eight right so four
stories again
or maybe you know like nine stories
depending on you know capacity
of the team and the size of the stories
so in the next print now you have
five more user stories to actually test
and you are documenting the test cases
for these user stories
okay so you have couple of test cases
written for
these user stories and now these are the
number of test cases that you have
written
for these user stories for sprint two so
you will be doing the progression
testing which is
functional testing of these user stories
in the second sprint
as well as because in the second sprint
the code that has been written in the
first print there will be new addition
to the code
that is written in sprint 1 from sprint
two as well then you need to ensure that
the existing functionality that was
working in sprint one
hasn't broken right so that is what a
regression testing
is to ensure that any existing
functionality of the application
that has already been working prior to
the new implementation
beat addition of the new functionality
which is which is in this case
you know addition of the new
functionality that are part of the user
stories
or if say for example there was a defect
that you raised in sprint one
and that got fixed so you re-executed
so any updates that happen you need to
re-execute
the existing functionality or a subset
of existing functionality
uh based on the addition uh whatever
updation has been done and ensure that
existing functionality
works so in this particular
case what you need to do is you need to
either pick all of these test cases that
you have picked in sprint 1
and re-execute in sprint 2 to ensure
that everything that was passed in
sprint 1
is still working right but that is
really really not feasible in agile
project if you are doing the manual
testing or even if you are doing the
automation testing
so what you do in agile projects um you
know the reason for that is why it is
not feasible so for example there is
another sprint
three okay so they'll be in like 10 15
20 sprints you know until you
release the software it depends how big
your project is
so in sprint three which is another two
weeks you will be having
some more stories right so 10 11
12 13 14 so like four
five more stories there will be you know
new test cases
and then here if you want to execute the
overall
test cases or regression test cases you
have to execute
these plus these and then plus the
functional test cases that you write in
sprint three so with each and every
upcoming sprint your number of test
cases
that need to be executed as part of the
regression suite
will keep increasing right and
that is not possible with the size of
team that you will be having you can't
keep adding new members or new addition
to your team
in each sprint so this is the biggest
challenge
in the agile testing approach right
now how you can tackle it is basically
through
automation right so the first thing is
to basically
if say for example in this particular
sprint
you have couple of test cases so you can
target
as part of the automation you automate
the regression test cases that you have
identified from this list
so in the sprint one as you do the
progression test cases or the test cases
that have been part of these
stories you also keep marking them which
of them are very important and
need to be part of the regression suite
so you
in the tool itself you mark those test
cases as a regression so that your
regression test suite gets
built as you progress with within the
sprint
along with that you need to say for
example out of these four test cases you
marked one as regression candidate
you mark two out of these five as
regression candidates
uh two out of these seven and then two
out of these ten
as a regression candidate you should not
try to include
all of the test cases that you have
tested as part of the functional testing
as
the regression test suite if you are
doing that then you are basically
you know not segregating what is really
important and what is less
important in the project and in a
project or in
the features uh everything can't be
important right so it has to be
prioritized based on the highest
priority or the highest usage
and the low usage and the low priority
so based on that you basically come up
with the test cases that will
form your regression test suite right
and these test suite you try to automate
as you progress along in the sprint in
the agile project
right so say for example now i have you
know seven test cases
uh in the next sprint uh i'll have a
team or i'll have
team members who will automate these
test cases so that
when we are in the next print we can
basically rather than executing these
test cases manually as part of the
regression testing we will
in sprint to run these test cases
with the automation tool so you can use
you know selenium or if you can you are
automating using the api tools
at the api level you can you do the api
test automation
and there are number of tools available
to do the ui automation
so you can use those tools to automate
and
you know once you are in sprint 2 you
have the automated suite ready
then when you go to the sprint 3 you
identify the regression candidates in
sprint 2
automate those and sprint 3 you are
having that
automated test suite built and ready
that is automated regression test suite
and that will
reduce the amount of effort that you
need to put
manually each and every sprint and will
help you to achieve
the regression target and regression
testing in the agile
project and scrum um agile scrum
basically so scrum
is uh the framework uh which is very
widely used
agile used agile development methodology
nowadays right
so this is how you can tackle regression
testing in
agile development approach so that's all
for this tutorial hope it was helpful
please do share and subscribe and thank
you very much for watching
Посмотреть больше похожих видео
Software Testing Tutorial #23 - What is Regression Testing
API Testing Interview Questions and Answers| 3+ YOE
ISTQB FOUNDATION 4.0 | Tutorial 20 | Retesting | Confirmation Testing | Regression Testing | CTFL
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)