top button
    Connect to us
      Why to Join

Regression Testing

+4 votes
41 views

Regression testing is any type of software testing that seeks to uncover software regressions. Such regressions occur whenever previously working software functionality stops working as intended. Typically, regressions occur as an unintended consequence of program changes. Common methods of regression testing include rerunning previously run tests and checking whether previously fixed faults have re-emerged.

Experience has shown that as software is fixed, the emergence of new and/or reemergence of old faults is quite common. Sometimes reemergence occurs because a fix gets lost through poor revision control practices (or simple human error in revision control). Often, a fix for a problem will be "fragile" in that it fixes the problem in the narrow case where it was first observed but not in more general cases which may arise over the lifetime of the software. Frequently, a fix for a problem in one area inadvertently causes a software bug in another area. Finally, it has often been the case that when some feature is redesigned, the same mistakes that were made in the original implementation of the feature were made in the redesign.

Therefore, in most software development situations, it is considered the good practice that when a bug is located and fixed, a test that exposes the bug is recorded and regularly retested after subsequent changes to the program. Although this may be done through manual testing procedures using programming techniques, it is often done using automated testing tools. Such a test suite contains software tools that allow the testing environment to execute all the regression test cases automatically; some projects even set up automated systems to automatically re-run all regression tests at specified intervals and report any failures (which could imply a regression or an out-of-date test). Common strategies are to run such a system after every successful compile (for small projects), every night, or once a week. Those strategies can be automated by an external tool, such as BuildBot.

Regression testing is an integral part of the extreme programming software development method. In this method, design documents are replaced by extensive, repeatable, and automated testing of the entire software package at every stage in the software development cycle.

Traditionally, in the corporate world, regression testing has been performed by a software quality assurance team after the development team has completed work. However, defects found at this stage are the most costly to fix. This problem is being addressed by the rise of developer testing. Although developers have always written test cases as part of the development cycle, these test cases have generally been either functional tests or unit tests that verify only intended outcomes. Developer testing compels a developer to focus on unit testing and to include both positive and negative test cases.

posted Oct 31, 2018 by Arunkumaarts

  Promote This Article
Facebook Share Button Twitter Share Button Google+ Share Button LinkedIn Share Button Multiple Social Share Button

Related Articles
+3 votes

The evolution of agile methodology enforced the enterprises to innovate and deliver at lightning speed. While delivery cycle time is decreasing, the technical complexity required to deliver positive user experience and maintain a competitive edge is increasing—as is the rate at which we need to introduce compelling innovations.

To meet the continuous integration and delivery needs, we have turned to continuous testing backed by automation but how do we test when these trends continue and gaps widen? As this is the time of digital transformation, we need Digital Testing to meet the quality needs of future driven by AI, IoT, robotics and quantum computing.

If we look at how testing practices changed over time, till 2018 it was focused on CI/CD, scalability and continuous testing.

Now the expectations from testing are more about real-time risk assessment. To cope up the testing expectations in current scenarios,  Artificial intelligence (AI), imitating intelligent human behavior for machine learning and predictive analytics, can help us get there.

Beyond Continuous Testing

If we analyze the journey since agile came into the picture, it has completely changed the way applications are delivered. Before agile, there used to be a release in a month or sometimes more than a month. With agile companies are aligned to have a two- weeks sprint and make a release in two weeks. To meet this, Continuous Testing came into the picture where automation suits were developed for regression and sanity testing. This supported quick deliveries and fast-paced testing cycles.

Now as the world is moving towards Digital transformation, the pressure to anticipate market requirements and build a system which is predictive and scalable enough to cater to future trends, going beyond continuous testing is inevitable. Testing will need additional assistance to accelerate the process. AI, imitating intelligent human behavior for machine learning and predictive analytics, can help us get there.

What is Artificial Intelligence?

Lets first understand what does artificial intelligence mean. Forrester defines AI as-

“A system, built through coding, business rules, and increasingly self-learning capabilities, that is able to supplement human cognition and activities and interacts with humans natural, but also understands the environment, solves human problems and performs human tasks. “

In simple words, AI enables machines to learn through data giving them the capability to make a decision. The algorithms are not written to solve a particular problem rather they are designed in such a way to enable the system to make a decision based on data.

How AI can be used in software testing?

Using AI and machine learning to automate-

a)Unit tests – Unit testing is very important to make sure that the build is stable and testable. With AI-powered unit test tools like RPA, a developer can get reduce the flaky test cases and maintenance of unit tests.

b)API testing- API testing saves time and effort by getting into the root cause of the issue. The problem with UI tests is that they are not reliable anymore as UI keeps changing in agile, while API tests give a deeper insight into the application and directly hit the root cause of an issue eventually making the application more robust.

There are many tools that are using artificial intelligence to help take the complexity out of API testing by converting manual UI tests into automated API tests, lowering the technical skills required to adopt API testing and helping organizations build a comprehensive API testing strategy that scales.

c) UI testing- The first step in automation is to convert manual UI tests into automated tests. There are tools that leverage AI to run the test cases on multiple platforms and browsers and also learn from the functional flow, reducing the maintenance effort and making testing more reliable.

Some of the most popular tools are mentioned below-

AI Powered testing tools- There are various testing tools which are using AI, though not harnessing the best of AI, they are still able to help testers a lot-

1. Applitools-  It is an AI-powered visual testing and monitoring tool that can run tests on different browsers and platforms. It uses AI to identify the meaningful changes in UI and also identify them as bugs/ desired changes.

It also leverages ML/AI-based for automated maintenance (being able to group together similar groups of changes from different pages/browsers/devices)

2. Testim- It leverages machine learning into the most critical part of automation which is the execution and maintenance of tests.

3. Sealights-  Sealights uses AI and machine learning to analyze the code and run tests that cover the impacted area. It can be any kind of test- unit, functional, performance, manual, etc.

It provides a useful insight ‘Quality Risks’ which focuses user efforts on the things that matter by letting him or she knows exactly which files/methods/lines have changed in the last build that wasn’t tested by a specific test type (or any test type).

4. Test.AI- Test.AI is building as a tool that will add an AI brain to Selenium and Appium. It was created by Jason Arbon, co-author of How Google Tests Software and the founder of Appdiff. Tests are defined in a simple format similar to the BDD syntax of Cucumber, so it requires no code and no need to mess with element identifiers.

  • AI just like a real person, IDENTIFIES the screens and elements in your app.
  • AI EXECUTES user scenarios—test on-demand whenever you’re ready
  • AI RECOGNIZES elements so that even if things change, your test doesn’t break.

5. MABL- Like the other AI-based test automation tools, MABL can automatically detect whether elements of your application have changed, and dynamically updates the tests to compensate for those changes. You just need to show the workflow that has to be tested and MABL does the rest.

6. Retest- Retest propagates an innovative testing approach, which is a combination of “intelligent” monkey testing and “difference testing” and works actually more like a GUI version management than conventional testing.

This tool does Monkey testing whereby the monkey( is called Surili) is artificially intelligent and can be trained by users by capturing user actions.

7. ReportPortal- ReportPortal, as the name suggests, is an AI-powered automation tool that focuses more on report analysis and management. As per its website it-

  1. Manage all your automation results and reports in one place
  2. Make automation results analysis actionable & collaborative
  3. Establish fast traceability with defect management
  4. Accelerate routine results analysis
  5. Visualize metrics and analytics
  6. Make smarter decisions together

8. Functionalize- Functionalize provides an overall solution for seamless automation with less/no efforts in maintenance all with the help of AI. Its AEA tool finds and fixes the broken test scripts thus eliminating the manual maintenance.

Functionalize uses machine learning for functional testing and is very similar to other tools in the market regarding its capabilities such as being able to create tests quickly (without scripts), execute multiple tests in minutes, and carry out in-depth analyses.

 

...