Patentable/Patents/US-10698804
US-10698804

Identifying inputs for automated computer-program testing operations

PublishedJune 30, 2020
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical Abstract

According to an aspect of an embodiment, a method of identifying inputs for automated computer-program testing operations may include obtaining a first input for a computer-readable program that is used during execution of the computer-readable program to cause the computer-readable program to take a first path during execution of the computer-readable program. The method may also include obtaining a second input for the computer-readable program that is used during execution of the computer-readable program to cause the computer-readable program to take a second path during execution of the computer-readable program. The method may also include identifying a sequence of values that is common to both the first input and the second input. The method may also include generating a third input that includes the sequence of values and a new value, the third input configured to be used during execution of the computer-readable program.

Patent Claims
20 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A method implemented by a computer system including at least a processor and memory-stored instructions, the instructions when executed by the processor, cause the computer system to perform operations, the operations comprising: performing first fuzzing operations on a first set of inputs used during execution of a computer-readable program for testing of the computer-readable program; performing second fuzzing operations on a second set of inputs used during execution of a computer-readable program for testing of the computer-readable program, wherein the second fuzzing operations identify inputs for inclusion in the second set of inputs differently than the first fuzzing operations identify inputs for inclusion in the first set of inputs and the first and second sets of inputs are different; wherein the second fuzzing operations comprise: obtaining a first input of the second set of inputs that is used during execution of the computer-readable program to cause the computer-readable program to take a first path during execution of the computer-readable program; obtaining a second input of the second set of inputs that is used during execution of the computer-readable program to cause the computer-readable program to take a second path during execution of the computer-readable program; identifying a sequence of values that is common to both the first input and the second input; and based on the sequence of values being common to both the first input and the second input, generating a third input for the second set of inputs that includes the sequence of values and a new value; and adjusting a ratio between a number of executions of the computer-readable program performed using the first set of inputs and a number of executions of the computer-readable program performed using the second set of inputs based on inputs in the first set of inputs, inputs in the second set of inputs, or the inputs in the first set of inputs and the inputs in the second set of inputs.

2

2. The method of claim 1 , wherein the ratio is adjusted in response to a number of the inputs in the first set of inputs with a length greater than a length threshold, a number of the inputs in the second set of inputs with a length greater than the length threshold, or a number of the inputs in the first and second set of inputs with a length greater than the length threshold.

3

3. The method of claim 2 , wherein the ratio is adjusted in response to the number of the inputs in the first set of inputs with a length greater than the length threshold, the number of the inputs in the second set of inputs with a length greater than the length threshold, or the number of the inputs in the first and second set of inputs with a length greater than the length threshold being greater than a queue threshold.

4

4. The method of claim 3 , wherein the queue threshold is based on a total number of inputs in the first set of inputs, the second set of inputs, or the first and second set of inputs.

5

5. The method of claim 2 , wherein the length threshold is based on an average length of the inputs in the first set of inputs, an average length of the inputs in the second set of inputs, or an average length of the inputs in the first and second set of inputs.

6

6. The method of claim 1 , wherein the new value is mutated based on a previous input.

7

7. The method of claim 1 , wherein the ratio is adjusted to increase the number of executions of the computer-readable program performed using the second set of inputs as compared to the number of executions of the computer-readable program performed using the first set of inputs in response to a number of inputs in the first set of inputs with a length greater than a length threshold being greater than a queue threshold, a number of inputs in the second set of inputs with a length greater than the length threshold being greater than the queue threshold, or a number of the inputs in the first and second set of inputs with a length greater than the length threshold being greater than the queue threshold.

8

8. The method of claim 1 , wherein the second fuzzing operations further comprise: executing the computer-readable program using a third input from the second set of inputs; tracking a given number of executions of a portion of code of the computer-readable program during the execution of the computer-readable program using the third input; comparing the given number to a highest previous number of executions of the portion of code when executing the computer-readable program; and in response to the given number being greater than the highest previous number of executions: storing the given number as the highest previous number of executions; and adding a modified version of the third input to the second set of inputs.

9

9. The method of claim 8 , further comprising: obtaining a control flow graph representing the computer-readable program; obtaining traces indicating paths in the control flow graph taken during the first fuzzing operations and the second fuzzing operations; and analyzing the traces and the control flow graph to determine a number of branches of the control flow graph that both satisfy a condition related to execution of the computer-readable program and are untraversed by the traces, wherein the adjusting the ratio is further based on the number of branches of the control flow graph that both satisfy the condition and are untraversed by the traces satisfying a trace threshold.

10

10. The method of claim 1 , wherein the ratio is adjusted in response to a subset of inputs from the first set of inputs, from the second set of inputs, or from the first and second set of inputs including inputs that have a number of values and/or characters that are the same where the number is at least one-half of a total number of values and/or characters of an input in the subset of inputs.

11

11. A method implemented by a computer system including at least a processor and memory-stored instructions, the instructions when executed by the processor, cause the computer system to perform operations, the operations comprising: performing first fuzzing operations on a first set of inputs used during execution of a computer-readable program for testing of the computer-readable program; performing second fuzzing operations on a second set of inputs used during execution of a computer-readable program for testing of the computer-readable program, wherein the second fuzzing operations identify inputs for inclusion in the second set of inputs differently than the first fuzzing operations identify inputs for inclusion in the first set of inputs and the first and second sets of inputs are different; wherein the second fuzzing operations comprise: tracking a number of executions of a portion of code during the execution of the computer-readable program using a first input of the second set of inputs; comparing the number of executions of the portion of code to a highest previous number of executions of the portion of code when executing the computer-readable program; and in response to the number of executions being greater than the highest previous number of executions: storing the number of executions as the highest previous number of executions; and mutating the first input; and adjusting a ratio between a number of executions of the computer-readable program performed using the first set of inputs and a number of executions of the computer-readable program performed using the second set of inputs based on inputs in the first set of inputs, inputs in the second set of inputs, or the inputs in the first set of inputs and the inputs in the second set of inputs.

12

12. The method of claim 11 , wherein the ratio is adjusted in response to a number of the inputs in the first set of inputs with a length greater than a length threshold, a number of the inputs in the second set of inputs with a length greater than the length threshold, or a number of the inputs in the first and second set of inputs with a length greater than the length threshold.

13

13. The method of claim 12 , wherein the length threshold is based on an average length of the inputs in the first set of inputs, an average length of the inputs in the second set of inputs, or an average length of the inputs in the first and second set of inputs.

14

14. The method of claim 12 , wherein the mutating the first input comprises at least one of: randomly flipping one or more bits within the first input; randomly repeating one or more values within the first input; randomly removing one or more values from the first input; and randomly adding values from another input into the first input.

15

15. The method of claim 11 , further comprising: obtaining a control flow graph representing the computer-readable program; obtaining traces indicating paths in the control flow graph taken by the computer-readable program during the first fuzzing operations and the second fuzzing operations; and analyzing the traces and the control flow graph to determine a number of branches of the control flow graph that both satisfy a condition related to execution of the computer-readable program and are untraversed by the traces, wherein the adjusting the ratio is further based on the number of branches of the control flow graph that both satisfy the condition and are untraversed by the traces satisfying a trace threshold.

16

16. The method of claim 15 , wherein the condition is satisfied by a branch of the control flow graph that corresponds to a second portion of code that is executed more than once during an execution of the branch.

17

17. The method of claim 11 , wherein the ratio is adjusted in response to a subset of inputs from the first set of inputs, from the second set of inputs, or from the first and second set of inputs including inputs that have a number of values and/or characters that are the same where the number is at least one-half of a total number of values and/or characters of an input in the subset of inputs.

18

18. The method of claim 11 , further comprising storing an eight-bit number representing the highest previous number of executions of the portion of code.

19

19. The method of claim 11 , wherein the second fuzzing operations further comprise: obtaining a second input of the second set of inputs that is used during execution of the computer-readable program to cause the computer-readable program to take a first path during execution of the computer-readable program; obtaining a third input of the second set of inputs that is used during execution of the computer-readable program to cause the computer-readable program to take a second path during execution of the computer-readable program; identifying a sequence of values that is common to both the second input and the third input; and based on the sequence of values being common to both the second input and the third input, generating a fourth input for the second set of inputs that includes the sequence of values and a new value.

20

20. A method implemented by a computer system including at least a processor and memory-stored instructions, the instructions when executed by the processor, cause the computer system to perform operations, the operations comprising: performing first fuzzing operations on a first set of inputs used during execution of a computer-readable program for testing of the computer-readable program; performing second fuzzing operations on a second set of inputs used during execution of a computer-readable program for testing of the computer-readable program, wherein the second fuzzing operations identify inputs for inclusion in the second set of inputs differently than the first fuzzing operations identify inputs for inclusion in the first set of inputs and the first and second sets of inputs are different; obtaining a control flow graph representing the computer-readable program; obtaining traces indicating paths in the control flow graph taken by the computer-readable program during the first fuzzing operations and the second fuzzing operations; analyzing the traces and the control flow graph to determine a number of branches of the control flow graph that both satisfy a condition related to execution of the computer-readable program and are untraversed by the traces; and in response to the number of branches of the control flow graph that both satisfy the condition and are untraversed by the traces satisfying a trace threshold adjusting a ratio between a number of executions of the computer-readable program performed using the first set of inputs and a number of executions of the computer-readable program performed using the second set of inputs.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

January 28, 2019

Publication Date

June 30, 2020

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Identifying inputs for automated computer-program testing operations” (US-10698804). https://patentable.app/patents/US-10698804

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.