Software Analysis Basics

Software Analysis Basics

Background and Basics

  • Test oracle: a mechanism for determining whether software executed correctly for a test.

  • Differential test: Provide the same input to similar applications, and observe output differences.

  • Metamorphic testing: Provide the manipulated inputs to same application, and observe if output differences are as expected.

Program Analysis Basics

  • Abstract syntax tree(AST): Represents the abstract syntactic structure of a language construct.

  • Control flow graph(CFG):

    • Divide the program into basic blocks.
    • Basic blocks: A sequence of straight-line code that can be entered only at the beginning and exited at the end.
    • Connect basic blocks together to generate CFG.
Read more