IP Library › Granted Patent US 11,507,495
Granted Patent B2
US 11,507,495 · App. 17/338,376 · Granted Nov 22, 2022

System and method for test impact analysis of computer programs

Inventors: Jacek Marzec (Cracow, PL); Nathan Michael Jakubiak (Pasadena, CA)
Assignee: PARASOFT CORPORATION
G06F11/3676G06F11/1004G06F11/3684G06F11/3688
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,507,495
App. No.
17/338,376
Granted
Nov 22, 2022
Kind
B2
Abstract

System and method for testing changes to binary code of a computer program include: collecting test coverage data from an executed set of tests of an original computer program; calculating a baseline report containing correlations between the executed set of tests and blocks of binary code of the original computer program; determining binary code changes between the original computer program and a modified version of the computer program; identifying one or more tests to be executed for verifying the binary code changes.

Claims (48)

1. A method for testing changes to binary code of a computer program, the method comprising:

collecting test coverage data from an executed set of tests of an original computer program;

creating baseline report containing correlations between the executed set of tests and blocks of binary code of the original computer program;

determining binary code changes between the original computer program and a modified version of the computer program; and

identifying one or more tests to be executed for verifying the binary code changes, wherein determining binary code changes comprises:

iterating over each block of binary code of the modified version of the computer program and checking whether said each block of binary code exists in same location in the binary codes of the original computer program and the modified version of the computer program,

for each block of binary code that exists in the same locations, comparing a fingerprint for the block of binary code in the baseline report with a fingerprint for the block of binary code in the modified version of the computer program, and

marking the code block as modified when the fingerprints are different,

for all blocks of binary code that do not exist in same locations in the binary codes of the original computer program and the modified version of the computer program, matching blocks of binary codes that have a same pseudo unique identifier,

for each pair of matched blocks of binary code, comparing the fingerprint for the block of binary code in the baseline report with the fingerprint for the block of binary code in the modified version,

marking the block of binary code as modified when the fingerprints are different, and

marking remaining binary codes of the original computer program that were not matched as modified.

2. The method of claim 1 , further comprising executing the identified one or more tests to verify the binary code changes.

3. The method of claim 1 , wherein the executed set of tests comprises a plurality of sub-tests and the baseline report includes coverage data that identifies which subtest covers which block of binary code in the original computer program.

4. The method of claim 1 , wherein creating a baseline report comprises scanning the original computer program; computing a fingerprint for each block of binary code of the original computer program; and determining binary code changes between the original computer program and the modified version of the computer program utilizing the fingerprints for blocks of binary code.

5. The method of claim 1 , wherein the blocks of binary code are defined by line numbers that correspond to the binary code.

6. The method of claim 1 , wherein the blocks of binary code are defined by a name of a class or method to which the binary code belongs.

7. The method of claim 4 , wherein the blocks of binary code are defined as an entire file and the fingerprint is created for the content of the entire file.

8. The method of claim 4 , wherein the fingerprint is a checksum calculated as a Cyclic Redundancy Check from data stream of the binary code.

9. The method of claim 1 , further comprising storing the baseline report in an XML format.

10. The method of claim 1 , wherein identifying one or more tests comprises identifying binary code blocks that were modified in the modified version; comparing the fingerprints of each binary code block in the modified program with fingerprints for blocks of binary code of the original computer program in the baseline report; determining one or more modified binary code blocks; and utilizing the modified binary code blocks to determine corresponding one or more tests that can be run to verify the binary code changes.

11. The method of claim 10 , further comprising marking a binary code block as modified when its fingerprint is different than a corresponding block of binary code of the original computer program.

12. A system for testing changes to binary code of a computer program comprising:

a coverage collector for collecting test coverage data from an executed set of tests of an original computer program; and

a test impact analysis engine for creating baseline report containing correlations between the executed set of tests and blocks of binary code of the original computer program, determining binary code changes between the original computer program and a modified version of the computer program, and identifying one or more tests to be executed for verifying the binary code changes, wherein determining binary code changes comprises:

iterating over each block of binary code of the modified version of the computer program and checking whether said each block of binary code exists in same location in the binary codes of the original computer program and the modified version of the computer program,

for each block of binary code that exists in the same locations, comparing a fingerprint for the block of binary code in the baseline report with a fingerprint for the block of binary code in the modified version of the computer program, and

marking the code block as modified when the fingerprints are different,

for all blocks of binary code that do not exist in same locations in the binary codes of the original computer program and the modified version of the computer program, matching blocks of binary codes that have a same pseudo unique identifier,

for each pair of matched blocks of binary code, comparing the fingerprint for the block of binary code in the baseline report with the fingerprint for the block of binary code in the modified version,

marking the block of binary code as modified when the fingerprints are different, and marking remaining binary codes of the original computer program that were not matched as modified.

13. The system of claim 12 , further comprising a test executor for executing the identified one or more tests to verify the binary code changes.

14. The system of claim 12 , wherein the executed set of tests comprises a plurality of sub-tests and the baseline report includes coverage data that identifies which subtest covers which block of binary code in the original computer program.

15. The system of claim 12 , wherein creating a baseline report comprises scanning the original computer program; computing a fingerprint for each block of binary code of the original computer program; and determining binary code changes between the original computer program and the modified version of the computer program utilizing the fingerprints for blocks of binary code.

16. The system of claim 12 , wherein the blocks of binary code are defined by line numbers that correspond to the binary code.

17. The system of claim 12 , wherein the blocks of binary code are defined by a name of a class or method to which the binary code belongs.

18. The system of claim 15 , wherein the fingerprint is a checksum calculated as a Cyclic Redundancy Check from data stream of the binary code.

19. A non-transitory tangible computer readable memory storing a plurality of computer instructions, the instructions when executed by one or more processor perform a method for testing changes to binary code of a computer program, the method comprising:

collecting test coverage data from an executed set of tests of an original computer program; creating a baseline report containing correlations between the executed set of tests and blocks of binary code of the original computer program;

determining binary code changes between the original computer program and a modified version of the computer program; and

identifying one or more tests to be executed for verifying the binary code changes, wherein determining binary code changes comprises:

iterating over each block of binary code of the modified version of the computer program and checking whether said each block of binary code exists in same location in the binary codes of the original computer program and the modified version of the computer program,

for each block of binary code that exists in the same locations, comparing a fingerprint for the block of binary code in the baseline report with a fingerprint for the block of binary code in the modified version of the computer program, and

marking the code block as modified when the fingerprints are different,

for all blocks of binary code that do not exist in same locations in the binary codes of the original computer program and the modified version of the computer program, matching blocks of binary codes that have a same pseudo unique identifier, for each pair of matched blocks of binary code, comparing the fingerprint for the block of binary code in the baseline report with the fingerprint for the block of binary code in the modified version,

marking the block of binary code as modified when the fingerprints are different, and

marking remaining binary codes of the original computer program that were not matched as modified.

20. The non-transitory tangible computer readable memory of claim 19 , further comprising instructions for executing the identified one or more tests to verify the binary code changes.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2021
From: MARZEC, JACEK; JAKUBIAK, NATHAN MICHAEL
To: PARASOFT CORPORATION
Reel/Frame 056433/0908 →
Continuity (2)
Provisional Application 63038297 · Jun 12, 2020
Related Publication 20210390036A1 · Dec 16, 2021