×

Software testing using machine learning

  • US 8,924,938 B2
  • Filed: 09/28/2007
  • Issued: 12/30/2014
  • Est. Priority Date: 09/28/2006
  • Status: Active Grant
First Claim
Patent Images

1. A method for analyzing a computer program, comprising:

  • Performing, using at least one processor, a static analysis on a program to determine property correctness;

    generating and conducting test cases to provide test output data;

    applying one or more learning methods for producing hypotheses about aspects of execution of the program to classify paths for test cases to determine whether the test cases have been encountered or otherwise, wherein each learning is a generalization from input data and the output of the learning methods inductively classifies if each test output trace is similar to a prior test case, and wherein path selection traverses program paths in a control flow graph (CFG) representation of the program and to select paths from the CFG along with constraints on the variables at different nodes that contradict a hypothesis given by one learning method;

    performing an iterated exploration of one or more paths while testing each path for membership;

    for each path segment (f,g) in a path, performing a depth first search of the CFG representation of the program to find all loop free paths lending from f to g while visiting no other functions;

    determining a path summary consisting of a guard y and an update U and marking the path as feasible if the guard is feasible;

    determining a set of path summaries σ



    ) by iterated composition as follows
    σ



    0)=σ

    f1,g1, σ



    m+1)=σ



    m)∘

    σ

    fm+1,gm+1;

    wherein π

    represents a call graph path; and

    in accordance with the hypothesis, generating new test cases to cause the program to exercise behavior which is outside of the encountered test cases.

View all claims
  • 2 Assignments
Timeline View
Assignment View
    ×
    ×