IP Library Granted Patent US 11,372,749
Granted Patent B2
US 11,372,749 · App. 16/828,555 · Granted Jun 28, 2022

Dependency mapping between program code and tests to rapidly identify error sources

Inventors: David Joshua Wiener (Ramat Biet Shemesh, IL); Adar Margalit (Modiin, IL); Yaron Hecker (Tel Aviv, IL); Haviv Rosh (Modiin, IL); Nir Yariv (Modiin, IL)
Assignee: ServiceNow, Inc.
G06F11/3688G06F8/433G06F8/71G06F11/3676
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,372,749
App. No.
16/828,555
Granted
Jun 28, 2022
Kind
B2
Abstract

An example system includes (i) a software product having a plurality of code units that accesses a database, (ii) a processor, and (iii) a non-transitory computer readable storage medium having stored thereon software tests and instructions that cause the processor to: execute the software tests on a first version of the software product; determine a first mapping between each respective software test and one or more of the code units; determine a second mapping between each respective software test and one or more data units in the database; determine that, between a second version and the first version of the software product, a particular code and data unit have changed; select, from the first and the second mappings, a set of software tests with mappings to the particular code unit or data unit; and execute the set of software tests on the second version of the software product.

Claims (32)

1. A system, comprising:

a processor; and

a memory, accessible by the processor, the memory storing instructions, that when executed by the processor, cause the processor to perform operations comprising:

determining respective mappings between a plurality of software tests executed against a software product to debug the software product and (1) a plurality of code units of the software product and (2) a plurality of data units used by the software product in one or more databases, wherein the software product has been modified from a first version of the software product to a second version of the software product;

generating a task graph based on the respective mappings, wherein the task graph comprises one or more dependencies between the plurality of software tests, the plurality of code units, and the plurality of data units;

determining a hierarchy of potential error sources in the software product based on the task graph, wherein the hierarchy of potential error sources comprise one or more unmodified code units of the plurality of code units proximate to one or more modified code units of the plurality of code units or one or more modified data units of the plurality of data units, or one or more unmodified data units of the plurality of data units proximate to the one or more modified code units of the plurality of code units or the one or more modified data units of the plurality of data units, or both; and

transmitting a graphical representation of the hierarchy of potential error sources to one or more computing devices for display.

2. The system of claim 1 , wherein determining the hierarchy of potential error sources comprises identifying respective proximities of the one or more unmodified code units, or the one or more unmodified data units, or both, to the one or more modified code units, or the one or more modified data units, or both.

3. The system of claim 1 , wherein a highest potential error source of the hierarchy of potential error sources comprises the one or more unmodified code units, or the one or more unmodified data units, or both, closest to the one or more modified code units, the one or more modified data units, or both.

4. The system of claim 1 , wherein the one or more dependencies are indicative of respective orders in which the plurality of code units are executed and the plurality of data units are accessed or modified in response to execution of the plurality of software tests.

5. The system of claim 1 , wherein the task graph comprises a graphical representation of the respective mappings, and wherein the operations comprise transmitting the task graph to the one or more computing devices for display.

6. The system of claim 1 , wherein the respective mappings comprise a first mapping between the plurality of software tests and the plurality of code units, and a second mapping between the plurality of software tests and the plurality of data units.

7. The system of claim 1 , wherein the plurality of data units comprise one or more table structures in the one or more databases that organize data in the one or more databases, or the data in the one or more databases is organized by the one or more table structures, or both.

8. A method, comprising:

determining, via one or more processors, respective mappings between a plurality of software tests executed against a software product to debug the software product and (1) a plurality of code units of the software product and (2) a plurality of data units used by the software product in one or more databases, wherein the software product has been modified from a first version of the software product to a second version of the software product;

generating, via the one or more processors, a task graph based on the respective mappings, wherein the task graph comprises a graphical representation of the respective mappings and one or more dependencies between the plurality of software tests, the plurality of code units, and the plurality of data units, and the one or more dependencies are indicative of respective orders in which the plurality of code units are executed and the plurality of data units are accessed or modified in response to execution of the plurality of software tests;

determining, via the one or more processors, a hierarchy of potential error sources in the software product based on the task graph, wherein the hierarchy of potential error sources comprise one or more unmodified code units of the plurality of code units proximate to one or more modified code units of the plurality of code units or one or more modified data units of the plurality of data units, or one or more unmodified data units of the plurality of data units proximate to the one or more modified code units of the plurality of code units or the one or more modified data units of the plurality of data units, or both; and

transmitting, via the one or more processors to the one or more computing devices, a graphical representation of the hierarchy of potential error sources.

9. The method of claim 8 , wherein determining the hierarchy of potential error sources comprises identifying respective proximities of the one or more unmodified code units, or the one or more unmodified data units, or both, to the one or more modified code units, or the one or or more modified data units, or both.

10. The method of claim 8 , wherein a highest potential error source of the hierarchy of potential error sources comprises the one or more unmodified code units, or the one or more unmodified data units, or both, closest to the one or more modified code units, the one or more modified data units, or both.

11. The method of claim 8 , comprising transmitting, via the one or more processors, the task graph to the one or more computing devices for display.

12. The method of claim 8 , wherein the respective mappings comprise a first mapping between the plurality of software tests and the plurality of code units, and a second mapping between the plurality of software tests and the plurality of data units.

13. A non-transitory, computer-readable medium, comprising instructions, that when executed by one or more processors, cause the one or more processors to perform operations comprising:

determining respective mappings between a plurality of software tests executed against a software product to debug the software product and (1) a plurality of code units of the software product and (2) a plurality of data units used by the software product in one or more databases, wherein the software product has been modified from a first version of the software product to a second version of the software product;

generating a task graph based on the respective mappings, wherein the task graph comprises one or more dependencies between the plurality of software tests, the plurality of code units, and the plurality of data units;

determining a hierarchy of potential error sources in the software product based on the task graph, wherein the hierarchy of potential error sources comprise one or more unmodified code units of the plurality of code units proximate to one or more modified code units of the plurality of code units or one or more modified data units of the plurality of data units, or one or more unmodified data units of the plurality of data units proximate to the one or more modified code units of the plurality of code units or the one or more modified data units of the plurality of data units, or both; and

transmitting a graphical representation of the hierarchy of potential error sources to one or more computing devices for display.

14. The non-transitory, computer-readable medium of claim 13 , wherein the operations comprise modifying the software product from the first version of the software product to the second version of the software product.

15. The non-transitory, computer-readable medium of claim 14 , wherein the operations comprise selecting a set of software tests from the plurality of software tests, wherein each test in the set of software tests is mapped to a particular code unit of the one or more modified code units, or a particular data unit of the one or more modified data units, or both, as a result of the software product being modified from the first version to the second version.

16. The non-transitory, computer-readable medium of claim 15 , wherein the operations comprise executing the set of software tests against the second version of the software product.

17. The non-transitory, computer-readable medium of claim 16 , wherein the set of software tests comprise one or more combinations of parallelizable software tests.

18. The non-transitory, computer-readable medium of claim 13 , wherein the one or more dependencies are indicative of respective orders in which the plurality of code units are executed and the plurality of data units are accessed or modified in response to execution of the plurality of software tests.

Continuity (2)
Continuation 15981544 · May 16, 2018
Related Publication 20200293437A1 · Sep 17, 2020
Cited By (1)
US 12,367,033