Regression Testing By Akanksha Akanksha

Software Testing
Name of Skill

Regression Testing

Classification of Skill

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.

Prerequisites for Skill
  1. Code that is being regression tested should be under a configuration management tool.
  2. No changes must be allowed to code, during the regression test phase.
  3. Regression test code must be kept immune to developer changes.
  4. The database used for regression testing must be isolated.
  5. No database changes should be allowed.
  6. Configuration management.

To plan an effective regression testing one should determine first:

  1. what test-cases must be executed
  2. what must be improved and changed in the test-cases
  3. when it is necessary to execute regression testing of the system
  4. what and how should be automated
  5. what is needed to perform the automated testing
  6. how to analyze the outcomes of the regression testing

Technical skills that one should master to become a brilliant regression testing engineer:

  1. Knowledge of Programming languages
  2. Database concepts
  3. Project life cycle
  4. Testing concepts
  5. Testing types
  6. Test plan idea
  7. Ability to analyze requirements
  8. Documentation skill
  9. Testing tools
Related Software Engineering Area(s)

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.

Rationale for Skill

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.

Roles for Skill
  • 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).
Work Related to Skill

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
  • Fixing of defects
Real-World Example

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

Role of Academia or Industry in Cultivating the Skill

Top Regression Testing Companies:

  1. SPEC INDIA
  2. QA Mentor
  3. Testlio
  4. QualityLogic
  5. UTOR - QA and Testing partner
  6. KiwiQA Services
  7. DeviQA
  8. Testscenario

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
Tools Supporting the Skill

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.
Skill Self-Assessment

MY SKILL SCORE: 8/10

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 .

References
Icon