# US 11,645,139 B2 · Software testing

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,645,139 B2
- Document ID: US11645139B2
- Status: Granted
- Kind: B2
- Application number: 17/281,566
- Filed: 2019-10-02
- Published: 2021-12-16
- Granted: 2023-05-09
- Earliest claimed: 2018-10-02
- Assignees: Functionize, Inc.
- Applicants: Functionize, Inc.
- Inventors: Tamas Cser; Jonathon R. Seaton
- Web page: https://patentgrep.com/patent/US11645139B2

## CPC

- G06F 9/451: Execution arrangements for user interfaces
- G06F 11/079: {Root cause analysis, i.e. error or fault diagnosis (in a hardware test environment G06F11/22; in a software test environment G06F11/36)}
- G06F 8/70: Software maintenance or management
- G06F 11/3684: {for test design, e.g. generating new test cases}
- G06F 11/3688: {for test execution, e.g. scheduling of test suites}
- G06F 11/3692: {for test results analysis}
- G06N 3/0464: Convolutional networks [CNN, ConvNet]
- G06N 3/047: Probabilistic or stochastic networks
- G06N 3/08: Learning methods
- G06N 3/09: Supervised learning
- G06F 11/1438: {Restarting or rejuvenating}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

Provided herein is technology relating to testing software and particularly, but not exclusively, to methods for identifying the cause of a failed software test using probabilistic graphical models and/or a rules engine to evaluate and sort test steps by likelihood of failure for dynamic applications.

## Claims

### Claim 1

A method for identifying a root cause of a failed software test of a web application comprising a user interface, said method comprising:
providing a web application comprising a user interface;
providing a script comprising a series of test steps, wherein each test step comprises an action performed on an element of said user interface;
running said script on said web application;
identifying an error step of said script at which a failed software test reports a failure;
identifying first elements of a first version of said user interface using computer vision and determining element attributes for each element of said first elements;
identifying second elements of a second version of said user interface using computer vision and determining element attributes for each element of said second elements;
identifying differences between said first version of said user interface and said second version of said user interface by comparing said element attributes for each element of said first elements with said element attributes for each element of said second elements;
training a probabilistic model using a plurality of test steps and said differences to produce a trained probabilistic model; and
assigning to each test step and/or to each element of said user interface a likelihood that each test step and/or each element is a root cause of said error step of said failed software test; and
producing a list of suggested test steps and/or elements ranked by said likelihood that each suggested test step and/or element is the root cause of said error step of said failed software test.

### Claim 2 (depends on 1)

The method of claim 1 wherein using computer vision comprises detecting a text box, recognizing characters, detecting an element, detecting an object, and/or detecting a layout.

### Claim 3 (depends on 1)

The method of claim 1 wherein identifying differences between said first version of said user interface and said second version of said user interface comprises comparing a first graphical and/or attribute model of said first version of said user interface with a second graphical and/or attribute model of said second version of said user interface to produce a probabilistic graphical and/or attribute model.

### Claim 4 (depends on 1)

The method of claim 1 wherein said training comprises assigning weighted scores to attribute categories, elements, and/or test steps.

### Claim 5 (depends on 1)

The method of claim 1 wherein said assigning step comprises evaluating said probabilistic model to determine said likelihood that each test step and/or each element is a root cause of said failed software test.

### Claim 6 (depends on 1)

The method of claim 1 wherein said training comprises using a machine learning model.

### Claim 7 (depends on 1)

The method of claim 1 wherein determining element attributes for each element of said first elements and/or determining element attributes for each element of said second elements comprises analyzing source code associated with each element of said first elements and/or analyzing source code associated with each element of said second elements.

### Claim 8 (depends on 1)

The method of claim 1 wherein each suggested test step and/or element is evaluated by a rules engine to provide suggested corrections to correct said root cause.

### Claim 9

A method for correcting a failed software test case configuration comprising a failed test step, the method comprising:
receiving a list of candidate failed test steps and/or candidate elements of said failed test steps ranked by a likelihood that each candidate failed test step is the root cause of a failed software test;
providing each candidate failed test step of said list of candidate failed test steps to a Markov decision process to produce a plurality of trial test case configurations for each candidate failed test step;
executing each trial test case configuration for each candidate failed test step;
identifying a successful software test;
identifying a trial test case configuration that produced the successful software test;
comparing said failed software test case configuration and said trial test case configuration that produced the successful software test to identify differences in the trial test case relative to the failed software test case; and
correcting said failed software test case configuration by replacing a failed step with a corrected step, wherein said corrected step implements said differences in the trial test case relative to the failed software test case.

### Claim 10 (depends on 9)

The method of claim 9 wherein said executing step comprises executing in parallel each trial test case configuration for each candidate failed test step.

### Claim 11 (depends on 9)

The method of claim 9 wherein said list of candidate failed test steps is produced by a method comprising:
providing a web application comprising a user interface;
providing a software test case configuration comprising a script comprising a series of test steps, wherein each test step comprises an action performed on an element of said user interface;
running said script on said web application; and
producing said list of candidate failed test steps ranked by a likelihood that each candidate failed test step is the root cause of said failed software test.

### Claim 12 (depends on 11)

The method of claim 11 wherein producing said list of candidate failed test steps comprises:
identifying first elements of a first version of said user interface using computer vision and determining element attributes for each element of said first elements;
identifying second elements of a second version of said user interface using computer vision and determining element attributes for each element of said second elements;
identifying differences between said first version of said user interface and said second version of said user interface by comparing said element attributes for each element of said first elements with said element attributes for each element of said second elements;
training a probabilistic model using said differences to produce a trained probabilistic model; and
assigning to each test step and/or to each element of said user interface said likelihood that each test step and/or each element is a root cause of said failed software test.

### Claim 13

A method for autonomously identifying failures in a web application comprising a user interface, said method comprising:
analyzing a web application user interface to identify elements of the user interface;
analyzing source code of a web application to identify element functions
associating element functions with elements of the user interface to produce element-function associations;
inputting web application user interface geometry, text, and images to train a machine learning model; and
inputting said elements, element functions, and element-function associations into said trained machine learning model to identify anomalies in the web application user interface that produce failures in said web application.

### Claim 14 (depends on 13)

The method of claim 13 wherein analyzing a web application user interface to identify elements of the user interface comprises use of a machine learning model.

### Claim 15 (depends on 13)

The method of claim 13 wherein analyzing source code of a web application to identify element functions comprises use of natural language processing.

### Claim 16 (depends on 13)

The method of claim 13 further comprising providing a parallel web crawler to provide one or more web application user interface.

### Claim 17 (depends on 13)

The method of claim 13 wherein the method is performed for each step of a test script to validate a web application user interface.
