Professional Documents
Culture Documents
Test case means detailed documenting the Test Scenario means talking and thinking
cases which help executing while testing. requirements in detail.
Writing test cases is one time effort which In new software testing generation it is new
can be used in future while executing idea and time saver activity. The addition
regression test case. and modification (easy maintainability) of
While reporting defects it will help tester to test scenarios is easy and independent on
link the defect with test case id. specific person.
The detailed test case document is full proof
One of the most positive point about test
guard for new software tester. If developer
scenario is good test scenarios reduces the
missed something then it is easy to catch
complexity and repeatability of product.
while executing these full-proof test cases.
Example:
Sample Requirement: Use case ID: UC0001 Verify and validate the end to end functionality of
e-commerce website. Only register customers should be login into site using valid credentials
and place the order.
Test Scenario:
Test Case:
Explain regression testing?
Whenever changes happen to software, regression testing is done to ensure that these do not
adversely affect the existing functionality. A regular regression testing can use multiple builds for
the test cases to be executed. However, an unchanged build is highly recommended for final
regression testing. The test cases that failed due to the defects should be included for future
regression testing.
It is necessary to perform regression testing when:
A test methodology for an effective regression testing made up of the following steps:
1. Performing an initial Smoke or Sanity test.
2. Understanding the criteria to select the test cases for Regression Testing.
3. Prioritization of test cases.
4. Methodology for select test cases
5. Resetting the test cases for test execution.
6. Concluding the result of a regression test cycle.
1. Performing an initial Smoke or Sanity test
A subset of the regression test cases can be set aside as smoke tests. A smoke test is a group of
test cases that establish that the system is stable and all major functionality is present and works
under normal conditions. Smoke tests are often automated, and the selection of the test cases
are broad in scope. The smoke tests might be run before deciding to proceed with further testing
(why dedicate resources to testing if the system is very unstable). The purpose of smoke tests is
to demonstrate stability, not to find bugs with the system. Sanity testing is done to test that major
functionality of the system is working or not. If sanity test fails, the build is rejected to save the
time and costs involved in a more rigorous testing
It was found from industry data that 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.
Requires knowledge on the bug fixes and how it affect the system.
Includes the area of frequent defects.
Includes the area which has undergone many/recent code changes.
Includes the area which is highly visible to the users.
Includes the core features of the product which are mandatory requirements of the
customer.
Selection of test cases for regression testing depends more on the criticality of bug fixes than the
criticality of the defect itself. A minor defect can result in major side effect and a bug fix for an
extreme defect can have no or a just a minor side effect. So the test engineer needs to balance
these aspects for selecting the test cases for regression testing.
3. Prioritization of test cases
Prioritizing the test cases depends on the business impact, critical and frequently used
functionality. Selection of test cases based on priority will reduce the test suit. The test cases may
be classified into three categories:
Priority-0: These test cases can be called as Sanity test cases which checks the basic
functionality and are run for accepting the build for further testing. These are also run when a
project goes through major changes. These test cases deliver a very high project value to both
development teams and to customers.
Priority-1: Uses the basic and normal setup and these test cases deliver high project value to
both development teams and customers.
Priority-2: These test cases deliver moderate project value and are executed as a part of software
testing life cycle and selected for regression on need basis.
Once the test cases are prioritize, test cases can be selected. There could be several approaches to
regression testing which need to be decided on case to case basis. For example:
Case 1: If criticality and impact of the defect fixes are low then it is enough to select few test
cases from Test Case DataBase (TCDB) and execute them. These can fall under any priority (0,
1, or 2).
Case 2: If the criticality and the impact of the bug fixes are Medium, then we need to execute all
Priority-0 and Priority-1 test cases. If bug fixes need additional test cases from Priority-2, then
those test cases can also selected and used for regression testing. Selecting Priority-2 test cases in
this case is desirable but not a must.
Case 3: If the criticality and impact of the bug fixes are High, then we need to execute all
Priority-0, Priority-1 and carefully selected Priority-2 test cases.
The above methodology requires Impact Analysis of bug fixes for all defects. It can be a time
consuming process. If there is not enough time and the risk of not doing Impact Analysis is low,
then the following alternative methodologies:
1. Regress All: For regression testing, all priority 0, 1, and 2 test cases are re-run.
2. Priority bases Regression: For regression testing, based on the priority, all priority 0, 1, and 2
test cases are run in order, based on the availability of time.
3. Random Regression: Random test cases are selected and executed.
4. Regress Changes: Code changes are compared to the last cycle of testing and test cases are
selected based on their impact on the code.
An effective regression strategy is usually a combination of all of the above.
Resetting of the test cases needs to be done with the following considerations:
Regression testing uses only one build for testing (if not, it is strongly recommended). It is
expected that all 100% of those test cases pass using the same build. In situations where the pass
% is not 100, the test manager can look at the previous results of the test case to conclude the
expected result.
1. If the result of a particular test case was PASS using the previous builds and FAIL in the
current build, then regression failed. We need to get a new build and start the testing from
scratch after resetting the test cases.
2. If the result of a particular test case was a FAIL using the previous builds and a PASS in
the current build, then it is easy to assume the bug fixes worked.
3. If the result of a particular test case was a FAIL using the previous builds and a FAIL in
the current build and if there are no bug fixes for this particular test case, it may mean that
the result of this test case shouldnt be considered for the pass %. This may also mean that
such test cases shouldnt be selected for regression.