IP Library Granted Patent US 11,586,531
Granted Patent B2
US 11,586,531 · App. 17/037,961 · Granted Feb 21, 2023

Generating test input values for functional components based on test coverage analysis

Inventors: Shay Shevach (Raanana, IL); Boaz Shuster (Raanana, IL)
Assignee: Red Hat, Inc.
G06F11/3676G06F8/42G06F11/3684G06F11/3688G06F11/3692G06N20/00
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,586,531
App. No.
17/037,961
Granted
Feb 21, 2023
Kind
B2
Abstract

Generating test input values for functional components based on test coverage analysis is disclosed herein. In one example, a processor device of a computing device performs a test coverage analysis of a plurality of programming instructions of a functional component that takes a plurality of input parameters. Based on the test coverage analysis, the processor device identifies a subset of the programming instructions for which testing has not been performed. The processor device then identifies a data type for each of the functional component's input parameters, and generates test input values based on the data types and the test coverage analysis, including a test input value that causes executable instructions corresponding to the subset of programming instructions to be executed during subsequent testing. The test input values may be used during subsequent unit testing to ensure full test coverage of the functional component.

Claims (60)

1. A method, comprising:

performing, by a processor device of a computing device, a test coverage analysis of a plurality of programming instructions of a functional component, the functional component comprising a plurality of input parameters;

identifying, based on the test coverage analysis, a subset of the plurality of programming instructions for which testing has not been performed;

identifying a data type of each input parameter of the plurality of input parameters;

generating a plurality of test input values based on the data type of each input parameter of the plurality of input parameters and the test coverage analysis, wherein a test input value among the plurality of test input values causes executable instructions corresponding to the subset of the plurality of programming instructions to be executed during subsequent testing;

executing the functional component using the plurality of test input values;

comparing an output of the functional component with an expected output of the functional component; and

generating a test result indication based on the comparing.

2. The method of claim 1 , wherein the functional component comprises a Javascript function.

3. The method of claim 1 , further comprising determining that the functional component comprises a pure function;

wherein performing the test coverage analysis is responsive to determining that the functional component comprises the pure function.

4. The method of claim 3 , wherein determining that the functional component comprises a pure function is based on one of source code notation, a comparison of the functional component to a database of known pure functions, and a machine learning (ML) algorithm.

5. The method of claim 1 , wherein:

performing the test coverage analysis comprises building an Abstract Syntax Tree (AST) representation of the functional component;

identifying the subset of the plurality of programming instructions to be tested is based on the AST representation; and

generating the plurality of test input values is further based on the AST representation.

6. The method of claim 1 , wherein:

identifying the data type of each input parameter of the plurality of input parameters comprises:

building a tree data structure comprising a plurality of nodes corresponding to the plurality of input parameters, wherein:

each inner node among the plurality of nodes corresponds to a composite data type; and

each leaf node corresponds to a primitive data type; and

generating the plurality of test input values comprises generating a test input value for each leaf node among the plurality of nodes of the tree data structure.

7. The method of claim 1 , wherein the plurality of test input values comprises one or more of a boundary case for each input parameter of the plurality of input parameters and a user-supplied test input value.

8. A computing device, comprising:

a system memory; and

a processor device coupled to the system memory to:

perform a test coverage analysis of a plurality of programming instructions of a functional component, the functional component comprising a plurality of input parameters;

identify, based on the test coverage analysis, a subset of the plurality of programming instructions for which testing has not been performed;

identify a data type of each input parameter of the plurality of input parameters;

generate a plurality of test input values based on the data type of each input parameter of the plurality of input parameters and the test coverage analysis, wherein a test input value among the plurality of test input values causes executable instructions corresponding to the subset of the plurality of programming instructions to be executed during subsequent testing;

execute the functional component using the plurality of test input values;

compare an output of the functional component with an expected output of the functional component; and

generate a test result indication based on the comparing.

9. The computing device of claim 8 , wherein the functional component comprises a Javascript function.

10. The computing device of claim 8 , wherein:

the processor device is further to determine that the functional component comprises a pure function; and

the processor device is to perform the test coverage analysis responsive to determining that the functional component comprises the pure function.

11. The computing device of claim 10 , wherein the processor device is to determine that the functional component comprises a pure function based on one of source code notation, a comparison of the functional component to a database of known pure functions, and a machine learning (ML) algorithm.

12. The computing device of claim 8 , wherein:

to perform the test coverage analysis is to build an Abstract Syntax Tree (AST) representation of the functional component;

the processor device is to identify the subset of the plurality of programming instructions to be tested based on the AST representation; and

the processor device is to generate the plurality of test input values further based on the AST representation.

13. The computing device of claim 8 , wherein:

to identify the data type of each input parameter of the plurality of input parameters is to build a tree data structure comprising a plurality of nodes corresponding to the plurality of input parameters, wherein:

each inner node among the plurality of nodes corresponds to a composite data type; and

each leaf node corresponds to a primitive data type; and

to generate the plurality of test input values is to generate a test input value for each leaf node among the plurality of nodes of the tree data structure.

14. The computing device of claim 8 , wherein the plurality of test input values comprises one or more of a boundary case for each input parameter of the plurality of input parameters and a user-supplied test input value.

15. A method, comprising:

performing, by a processor device of a computing device, a test coverage analysis of a plurality of programming instructions of a functional component, the functional component comprising a plurality of input parameters, wherein performing the test coverage analysis comprises building an Abstract Syntax Tree (AST) representation of the functional component;

identifying, based on the AST representation, a subset of the plurality of programming instructions for which testing has not been performed;

identifying a data type of each input parameter of the plurality of input parameters; and

generating a plurality of test input values based on the data type of each input parameter of the plurality of input parameters and the AST representation, wherein a test input value among the plurality of test input values causes executable instructions corresponding to the subset of the plurality of programming instructions to be executed during subsequent testing.

16. A computing device, comprising:

a system memory; and

a processor device coupled to the system memory to:

perform a test coverage analysis of a plurality of programming instructions of a functional component, the functional component comprising a plurality of input parameters, wherein performing the test coverage analysis comprises building an Abstract Syntax Tree (AST) representation of the functional component;

identify, based on the AST representation, a subset of the plurality of programming instructions for which testing has not been performed;

identify a data type of each input parameter of the plurality of input parameters; and

generate a plurality of test input values based on the data type of each input parameter of the plurality of input parameters and the AST representation, wherein a test input value among the plurality of test input values causes executable instructions corresponding to the subset of the plurality of programming instructions to be executed during subsequent testing.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2020
From: SHEVACH, SHAY; SHUSTER, BOAZ
To: RED HAT, INC.
Reel/Frame 053928/0715 →
Continuity (1)
Related Publication 20220100640A1 · Mar 31, 2022