Showing posts with label regression testing services. Show all posts
Showing posts with label regression testing services. Show all posts

Thursday, 18 June 2020

Debunking the Common Regression Testing Myths



With customer experience driving enterprises towards delivering better quality products, they are going the Agile-DevOps way. In this, any product or service needs to be continuously upgraded to meet the changing realities of the day. The realities may include the following:
·       Advent of new technologies that have the potential to increase efficiency, quality, and productivity
·       Changing customer preferences about products or specific features of any product
·       New and better quality products being brought to the table by the competitors
·       The products need to comply with the new security or industry guidelines
·       The products should be workable across devices, browsers, or operating systems, and their updates
Therefore, while in pursuit of Continuous Integration and Delivery (CI and CD) goals as required by Agile and DevOps, the product needs to be updated periodically. While this is a good practice, for it ensures the product remains trendy and technically superior, it can be challenging as well. The updates to one part of the software or the whole software can trigger unlikely changes. These changes can affect the smooth functioning of the software or introduce glitches. So, on one side, the software is updated in consonance with the market or customer demand, on the other, it fails to deliver the best customer experience. To pre-empt such a situation from developing, the QA team performs software regression testing.
What is regression testing?
It is a type of testing that ensures the functionality of an application is not affected by a fix or change made in that application. When a tested software undergoes a fix or update, which does not necessarily affect the whole software, the QA team does not test all the modules. Instead, only a few test cases are executed ensuring adequate test coverage. Any regression testing in software testing can be a fit for test automation due to the overwhelming number of repetitive tests to be conducted.
Benefits of regression testing
QA regression testing accrues a number of benefits for the QA team. These include
·       Ensuring any changes (enhancements or bug fixes) made to the application or a specific module of the application do not affect the tested code
·       Improving the overall quality of the product and making it trendy and customer friendly
·       Reducing the testing time as only a limited area of the software is tested
·       Identifying the bugs or glitches causing the issue and fixing them
·       Helping to implement a Continuous Integration (CI) setup. Here a build triggered by a code is tested automatically in the form of an automated regression testing
Debunking the common myths about regression testing
With time, some myths have gained credence in the minds of QA testers related to regression testing.
Limited testing of functionalities may not be a good idea: Here, instead of testing the already tested codes, only a specific area/feature/functionality of the software is tested. And since the entire software is not tested, the glitches triggered by the fixes or updates in one part of the application may not be identified. This is where the QA specialists need to be meticulous with their planning.
Automation is mandatory to plan any regression testing strategy: Since repeated testing of the already tested code (not the whole application) is done in such type of testing, automation is preferred to save time. However, this does not mean that manual testing can be completely replaced. It is helpful to get a human insight into testing, which automated testing may not always offer. Also, test automation requires proper maintenance of test scripts and test cases lest they deliver the wrong outcome. Further, in cases where quick fixes are needed, manual testing can do the necessary QA regression testing since test automation may take time to setup.
Regression testing lasts long: Any automated regression testing can check and recheck the codes, which no manual checking can accomplish in a reasonable period. Since the scope of testing is small, the testing need not take ages to complete.
Regression testing is not obligatory: This is often put forth by enterprises that give precedence to ‘faster time to market’. However, doing away with regression testing services can backfire as any quick fix to an already tested product can trigger changes elsewhere. And without identifying and fixing those changes (read inclusion of glitches or bugs,) the final product will not be of superior quality.

Conclusion
Notwithstanding the above-mentioned myths, the need for regression testing has become mandatory given the frequent updates received by software applications. It helps QA specialists to do away with any unfavourable changes to the application and delivers the best possible user experience.

Thursday, 12 March 2020

The Inevitability of Regression Testing



When it is all about staying competitive and earning revenues, enterprises are going all out to develop new applications with better user experiences. With users becoming choosy, enterprises are constrained to offer features and functionalities that are different from their competitors. However, there is a catch when it comes to adding new features in an application - regression! Yes, the unintended consequence of any code change, which instead of enhancing the user experience can, at times, act as a bummer.
Let us understand the same with an example. You take your car to the mechanic to fix an issue with its heating function. But after receiving the car with its heating function fixed, you find another function, say its fog lights not working. This turns out to be an unintended consequence, which you never imagined would hit you from nowhere.
To make it further easier to understand, let us relate it to software. For example, an application adding a photo-sharing service ends up nixing its loading speed upon delivery. So, to ensure such unintended changes do not hamper the user experience, testers need to implement a robust regression testing strategy.

So, what is regression testing and why is it needed?
It is aimed at ensuring the seamless functioning of an application in-spite of any addition/modification to its feature(s). This is important as regression testing can identify issues and fix them arising out of any code change. It is different from retesting and ensures the entire application to work in accordance with the expectations post changes. In retesting, on the other hand, only the specific code change is tested for its expected outcome. Hence, any comprehensive software regression testing can be quite complex and time-consuming.

Checklist for regression testing in software testing
A change in one part can create an unintended change in another part of the software. And unless the entire software is monitored post introducing the change, the consequences can impact the software’s functionality and user experience. The below-mentioned scenarios or test cases can be fit cases for conducting software regression testing.
·         Functionalities to have undergone changes
·         Cases related to integration
·         Cases with boundary values
·         Functionalities most visible to the users
·         All core features
·         Scenarios facing frequent defects

Should regression testing be automated?
Since regression testing services are often iterative, they are good candidates for automation. The test cases for automated regression testing should be easy-to-maintain, stable, and frequently repeated. As this type of testing checks the quality of an existing functionality, it needs to be repeated for various parameters. Automated regression testing frees up testers and allows them to further explore the production environment for any unusual responses. Further, not all software regressions are a result of code change. For example, some may be the result of updates to databases or browser versions.

Challenges to regression testing
The quality of an existing functionality can be ensured with more automation. However, it also requires testers to maintain such test suites for their prolonged usage. So, the test suites need to be flexible to incorporate any future changes. Let us discuss some challenges associated with regression testing services.
·         Expensive: As the same function is tested repeatedly, there is no immediate ROI to speak of but mainly expenses.
·         Not adequate time for testing: Since a project needs to be completed in a timebound manner, it is not possible to let the iterative regression testing to continue for a longer duration. So, testers often execute critical regression tests only and skip others. This can leave a few quality issues to remain unchecked.
·         Maintenance and optimization: The automated test suites should be optimized and maintained to meet the rigors of any new testing requirement.

How to manage regression testing
Given the inevitability of such testing in preempting the ingress of any unintentional quality issues during a code change, the tests should be managed well. The steps to ensure the same are:
·         Executing smoke test and automation
·         Analyzing the test requirements
·         Preparing to deal with the impact of changes
·         Prioritizing tests
·         Choosing the right automation tools
·         Analyzing the final glitch report in detail
·         Optimizing and maintaining the test suites
·         Creating criteria for entry or exit of regression testing
·         Executing testing randomly
·         Keeping the testers motivated

Conclusion
The rapidly changing digital landscape owing to the addition of new features and versions of software applications, browsers, and operating systems requires businesses to set up a robust regression testing strategy. So, even though the testing per se is expensive and time-consuming, it should be taken to its logical conclusion.

This article is originally published on dev.to.

Tuesday, 3 September 2019

Bridging new and old features through Regression Testing

Regression Testing

To remain competitive, companies need to reinvent their products with new features and functionalities from time to time. It is observed that the end consumers are wont to change their preferences for products based on factors like new features, faster loading, cost, and seamless functioning. Hence, the incorporation of the above-mentioned factors can increase the adaptability of the software applications to their end customers. However, the newly added features or changes can trigger changes in the old features, which if not addressed, can impact the user experience adversely. This is where regression testing comes into play, wherein the functioning of the existing or old features is tested. It ensures that the new code additions do not render the existing functions infructuous. A well-planned regression testing strategy investigates the bugs that might creep into any new build inadvertently, while making sure that the previous ones are eliminated.

Remember, any change in a software application can cause unforeseen consequences, thus, adversely affecting the user experience. These unforeseen consequences or side-effects aka regressions can appear in components, features, functionalities, and systems that are not part of the software changes.

 A regression testing exercise flags such regressions or changes and helps the QA team to:

·         Identify and fix the inherent or newly-introduced glitches into the existing system because of the new build.
·         Boost the performance of the software application.
·         Look into any changes to the hosting environment. 

Regression testing can be executed during any of the below mentioned QA tests –

·         Unit Test: In this type of QA testing, the smallest testable components of any application aka units are tested to check if they are performing as expected. Any glitch in the individual components can have a cascading effect on the whole software when the same gets integrated.
·         Integration test: This is unlike the unit test where the integrated groups (a combination of units) or modules of an application are tested in various ways.
·         System test: This follows up from integration testing where the performance and functioning of various components are tested to check how they interact with each other as part of an integrated system.
·         Acceptance test: Since every application needs validation on the litmus test of user acceptability, the acceptance test finds out the degree to which the application addresses the user requirements and gets their approval. This type of testing is named as beta testing, field testing, end-user testing, or application testing. 

Therefore, regression testing in software testing usually takes place at the end of each test cycle. Importantly, it includes unit regression testing where each unit code is validated by rerunning the unit tests. Since regression testing can be repetitive and time consuming, it is often automated to reduce the execution time and free up the testers for other important tasks. 

When do you execute a regression testing strategy?

Whenever a software application is modified by adding, changing, or removing features or functionalities, regression testing is needed to be carried out. Let us understand the same with the following examples. 

Addition of new functionalities:  A software application allows a user to login using their email credentials. However, a new functionality is added wherein the login can be executed using Facebook as well. Here, regression testing would check if the old functionality of logging in with email is working or not.
Any Change Requirement (CR) is implemented: The password option is removed from the login page to facilitate quicker login.
Fixing a defect: In case the login button develops a glitch and is fixed by the developers, the QA team should perform an automated regression testing to check the fixed login button and other associated functionalities are performing as expected.
Fixing a performance issue: In case a slow loading software application is fixed, reducing the load speed from, say, 5 seconds to 2 seconds. So, when the code changes are made to reduce the loading speed, some glitches may enter or old functionalities might get affected. This is where regression testing services can execute the test and pre-empt any glitch from affecting the performance of the application.
Change in the framework or environment: If the database is updated from MySQL to Oracle, the resultant code changes need to be validated to prevent any unforeseen consequences. 

How to go about executing regression testing – manual or automation?

Given the tedium and complexity of such tests, they need to be automated. Since these tests are needed to be executed after every build or deployment, they should be automated to save time and effort. Moreover, running thousands of test cases manually would be practically impossible and can lead to several glitches remaining unchecked. 
 
How to strategize a sound regression testing methodology

The success of any product change depends on the success of its regression testing. Let us find out the steps that QA experts should take in executing a sound regression testing strategy.
·         Monitor any changes in the test cases, which are based on the modifications done on the software application.

·         Analyze the changes (if any) and their impact on the components.

·         Identify the risk prone areas in the test cases.

·         Set priority for the test cases. Select the right automation tool and test environment.

·         Automate test cases and set them for testing.

·         Keep the test suite with the latest test cases. Remove the redundant ones.

·         Execute the tests for different scenarios and dependencies.

Conclusion
Any successful regression testing ensures a software application runs all guns blazing, especially on parameters like speed, accuracy, security, efficiency, and performance. The testing should not be an afterthought but put into practice the moment any new build is initiated.

Check out this case study to find out how Automated Regression Testing helps in the healthcare sector to reduce its Maintenance Costs significantly.

Diya works for Cigniti Technologies, Global Leaders in Independent Quality Engineering & Software Testing Services to be appraised at CMMI-SVC v1.3, Maturity Level 5, and is also ISO 9001:2015 & ISO 27001:2013 certified.