As the development of software makes its progress, there comes a stage where it needs to be evaluated before concluding it as the final output. This phase is usually known as testing. Testing detects and pinpoints the bugs and errors in the software, which eventually leads to rectification measures. There are instances where the rectifications bring in new errors, thus sending it back to another round of testing, hence creating a repeating loop. This repeated testing of an already tested application to detect errors resulting from changes has a term — Regression Testing.
Regression testing is the selective retesting of an application to ensure that modifications carried out has not caused unintended effects in the previously working application.
In simple words, to ensure all the old functionalities are still running correctly with new changes.
This is a very common step in any software development process by testers. Regression testing is required in the following scenarios:
- If the code is modified owing to changes in requirements
- If a new functionality is added
- While rectifying errors
- While fixing performance related issues
Although, every software application requires regression testing, there are specific points that apply to different applications, based on their functioning and utility. Computer-Aided design or CAD software applications require specific points to keep in mind before undergoing regression testing.
Regression testing can be broadly classified into two categories, UI Testing and Functionality Testing. UI testing stands for User Interface which is basically testing an applications graphical interface. Numerous testing tools are available for carrying out UI testing. However, functional testing presents situation for us. This content focuses on the points to take care while carrying out functional regression testing.
Here are most effective points to consider for functional regression testing:
- It is important to know what exactly needs to be tested and the plans or procedures for the testing. Collect the information and test the critical things first.
- It is important to be aware of market demands for product development. Document or matrix should be prepared to link the product to the requirement and to the test cases. Matrices should be modified as per the changes in requirement.
- Include the test cases for functionalities which have undergone more and recent changes.
It’s difficult to keep writing (modifying) test cases, as the application keeps on getting updated often, which leads to some internal defects and changes into the code which in turn might break some already existing functionalities.
- It is preferred to run the functionality testing in the background mode (non-UI mode) because often it is faster and eliminates problems associated with display settings on different machines.
- One needs to lay down precise definitions of the output parameters that are of interest. Anything from the number of faces, surface area, volume, weight, centre of gravity, surface normal, curvature at a particular point etc. It is always a good idea to have a quantifiable output parameter that can be compared.
- It is often advisable to develop a utility to write the parameters that are of interest in an output file it could be text, CSV or xml file.
- Creating baseline versions of output data files is a good idea to visually see every part for which the baseline data is created.
- Developing automation script enables the entire test suite to run without any manual intervention and the results can be compared.
- Compare the output data generated with the baseline version, for every run of test case, for it is very important to keep in mind that if there are doubles or floats in the output data, tolerance plays a very important role.
- Some areas in the application are highly prone to errors; so much that they usually fail with even a minute change in code. It is advisable to keep a track of failing test cases and cover them in regression test suite.
Failure to address performance issues can hamper the functionality and success of your application, with unwelcome consequences for end users if your application doesn’t perform to expectations.