US based early edge startup came to us with a specific scenario. They already had a beta ready product. However, they were stuck in a loop wherein any new feature or change in the existing feature was crashing some other feature in the application. The implications were so severe that they were afraid of making further changes to the application before going live. This situation is not new. It’s been faced by many startups and enterprises who are building new software products or upgrading their existing ones.
What is Regression Issue?
In software engineering term “regression issue” is a type of software bug where a feature that has worked before stops working. The reason for this could be some change implemented in source code – like adding new features or changing existing features or fixing any bug. Complexity with the regression issue is that it is unexpected, unpredicted and not often found in features where change had been made. Even in many cases it may not be necessarily a functional issue, it can be an issue related to the performance, security or data loss also.
Simple example of a regression issue could be this “You may have asked the developer to make the cell number field optional in user registration, however in some other module the user’s cell number might have been used to send SMS alerts. In case a newly registered user cell number is not entered then SMS notification module may generate run-time error, this is considered as a regression issue.”
Why is it Difficult to Deal with Regression Issues?
Regression issues are part of any software development lifecycle, that means you can not actually avoid it completely. Usually developers may not be able to identify these issues in advance as they may not have knowledge of all the modules. Moreover during unit testing they can not check all the modules of the system. Also regression issues are usually found at the stage where one or two full QA cycles may have been performed already. Hence usually it is quite time and cost consuming for the companies to allow another full round of QA cycle to find the regression issues.
How to Prevent Regression Issues in Software?
To reduce regression issues we recommend certain action items which are mentioned below:
1. Have Proper Project Documentation
Due to fast moving agile development, usually teams avoid making detailed documents for all the features. However we recommend that user stories need to be written with complete details and it should also mention its connectedness with other features and modules. These user stories can help the development & QA team understand the requirements better. Moreover, the QA team can design test cases which cover all the scenarios based on user stories documentation. We have also observed that preparing a detailed dependency matrix among the modules helps the QA team identify any regression issues quickly.
2. Analyze & Reduce Technical Debt
While aiming for speedy delivery of the software, sometimes the development team writes a piece of code without considering its long term impact on portability, scalability or security of the product. In such cases the development team has to refactor the code in future for one or another reasons. This type of code is considered as Technical Debt, because it has to be corrected after some period, mostly due to regression issues emerging from this. When regression issues are increasing in your product, that means that you must analyze the code to identify such technical debt and make a plan for reducing the same quickly. Ideally tech leads should do frequent code reviews to identify such technical debts in the code, before it goes in beta or production.
Typical example of technical debt is, “The developer might have hardcoded certain payment gateway related settings, which makes it difficult to switch to another payment gateway without altering the code once again.”
3. Adopt Automation Testing
Regression errors are difficult to find, it also requires testing the software repeatedly on each change in the code, which makes it a tedious job for the QA team. Overall it is quite expensive to do complete QA of the software frequently. Considering these points we always recommend to our tech startup clients to go for the automation testing from the early stage of the development.
Nowadays most of the software products are built using microservice architecture or multi-layered architecture. In such cases it is advisable to start with APIs automation framework like Rest Assured, Postman, Apache Jmeter etc. Automated APIs testing helps in reducing cost of frequent manual testing, identifying & lowering technical debt by writing & executing extensive test scenarios and finding issues in the system proactively before the deployment.
Similar to APIs automation – one the product is stable and doesn’t require much changes in User Interface then one can go for the UI automation as well. Selenium, Appium etc. are popular tools for UI automation. UI automation helps identifying platform specific bugs quickly, moreover it helps running end to end user scenarios in a beta or production environment as if the actual user is running it.
Software bugs and especially “regression issues” are bound to happen, however it depends on the experience & understanding of your software development team how they deal with the same. Carefully designed project architecture/implementation plan along with detailed user stories, code review & automation QA can deliver a good quality software product in less time.
In case you are stuck in any kind of regression cycle or if you want to prevent your software product from reporting lot of regression issues, then contact Sufalam Technologies for automation QA and devops integration services today.
What is a Software Regression Issue & How to Solve It?- By Pranav Thakker: