Midterm Flashcards
Study
___ analysis is one which accepts a buggy program.
unsound
___ analysis is one which rejects a correct program.
incomplete
Useful for testing multi-threaded programs.
Cuzz
Predicate assumed to hold before function executes
Pre-condition
Predicate expected to hold after function executes
Post-condition
Test which functions are called
function coverage
Test which statements are executed
Statement coverage
Test which branches are taken
Branch coverage
Feed random inputs to a program
Fuzzing
Random testing (fuzzing) pros
Easy to implement;
Provably good coverage given enough tests;
Can work on programs of any format;
Helps find security vulnerabilities
Random testing (fuzzing) cons
Inefficient test suite;
Might uncover unimportant bugs;
Poor coverage
Useful for systematic testing (linked data structures)
Korat
Useful for feedback-directed random testing (classes; libraries)
Randoop
Korat key idea
No pre-condition, no expansion
Never expands parts not examined by pre-condition
Randoop key idea
Randomly create new test guided by feedback from previously created tests