Case Study

AI in SOFTWARE TEST AUTOMATION

21 Jun 2020
Manuel Perez Prada

AI in SOFTWARE TEST AUTOMATION

The use of AI in software development is still in its infancy, and the level of autonomy is much lower than seen in more evolved areas such as self-driving systems or voice-assisted control, although it is still driving forward in the direction of autonomous testing. The application of AI in software testing tools is focused on making the software development lifecycle easier. Through the application of reasoning, problem solving, and, in some cases, machine learning, AI can be used to help automate and reduce the amount of mundane and tedious tasks in development and testing.

“Don’t test automation tools do this already?” you might ask.

And the answer is of course, “Yes! They do!” …but they have limitations.

Where AI shines in software development is when it is applied to remove those limitations, to enable software test automation tools to provide even more value to developers and testers. The value of AI comes from reducing the direct involvement of the developer or tester in the most mundane tasks. (Human intelligence is still very much needed in applying business logic, etc.)

For example, consider that most (if not all) test automation tools run tests for you and deliver results. Most don’t know which tests to run, so they run all of them or some predetermined set. So what if an AI-enabled bot can review the current state of test status, recent code changes, code coverage, and other metrics, decide which tests to run, and then run them? Bringing in decision-making that’s based on changing data is an example of applying AI . The software is effectively able to replace the developer/tester in the decision-making process. The benefit of applying this to a CI/CD pipeline is clear.

AI in Software Testing

WHERE IS AI USED CURRENTLY in SOFTWARE TESTING?

Self-Heal Execution of Selenium Tests

AI-based tools can be made to learn the internal data during regular tests such as detailed information on web UI content, DOM elements attributes, locators etc. Upon observing and learning through the historical observation of these tests, the AI tool can become smarter and save a lot of time in testing.

Automating Unit Test Generation and Parameterization

For JAVA developers, the gaps in testing can cause a lot of problems, especially when starting from a sparse JUnit Harness. AI-based software testing tool, on the other hand, can include static analysis, unit testing, coverage and traceability along with automatic test case generation. With added automation, JAVA applications can be tested in one click. Not only this but creating, scaling and maintaining unit test cases can also become a seamless task.

Defect Analytics

One of the prime areas where artificial intelligence can be used is in defect analytics. Cigniti’s intelligent test case management strategy includes algorithms for defect analytics. This makes sure that every bug that causes a defect is caught at its root. An AI-based algorithm can easily learn from past trends and go through the standard defect analysis process in the least amount of time.

Test Prioritization

Test prioritization , one of the most widely studied regression testing approaches , aims to reorder test executions with the goal of detecting more faults earlier.

Test Suite Optimization

AI BOTS can help clear the backlog and enable focusing on testing right. BOTs can identify similar/redundant and unique test cases, thereby removing the duplicates and enhancing traceability.

Code Coverage

Smart bots fully map out the Application-Under-Test by exploring each and every path through it. They create a comprehensive set of use cases as they go. These use cases number anywhere from the hundreds to the thousands, and result in complete coverage of the AUT.

Scriptless Automation

One way to reduce the time and resources spent on the creation of automated test cases is by using scriptless test automation. Scriptless Test Automation requires a minimum learning curve and also is easier to use.

Defect Prediction

Certain patterns in the software project’s code base carry a higher risk of introducing a bug. For example, if a new developer is making changes on a file that historically has higher incidence of bugs, a commit involves files across multiple directories or the code update is spread across multiple regions in the file. These patterns can be learnt by a classification learning algorithm to predict the prospect of a file in a commit having a bug. This allows shift left of defect discovery thus minimizing the cost of fixing defects.

Defect Classification

Defects can be categorized after testing to be able to assign right person to fix each defect. This can be done automatically with the help of AI.

Cognitive bots

The process of using artificial cognitive abilities to achieve optimized high quality automation at fast rate.

Code analysis

Static code analysis is a method of debugging by examining source code before a program is run. It’s done by analyzing a set of code against a set (or multiple sets) of coding rules.

UX Analysis

User experience analysis is the process of measuring the interaction between a user and  a user interface, often a website, an application or a design.

Share
Share on linkedin
Share on twitter
Share on facebook
en_GB