Effective Program Analyses for Automated Software Testing and Error Diagnosis

dc.contributor.advisorErnst, Michael Den_US
dc.contributor.authorZhang, Saien_US
dc.date.accessioned2014-11-06T23:23:07Z
dc.date.issued2014-11-06
dc.date.submitted2014en_US
dc.descriptionThesis (Ph.D.)--University of Washington, 2014en_US
dc.description.abstractThis dissertation presents five program analysis techniques for improving automated software testing and error diagnosis. Two techniques aim to help software developers build reliable software and three techniques assist software users in quickly identifying the root cause of an exhibited software error. The first two techniques help software developers validate software's behaviors before delivering it to users. The first technique, called Palus, assists developers in creating unit test suites for software systems with constrained interfaces. Palus combines dynamic model inference, static analysis, and random testing to automatically generate unit tests that are legal and behaviorally-diverse. Tests generated by Palus achieve higher code coverage, and detect more bugs than tests generated by existing techniques. When a test fails, a developer must understand the cause of the failure before fixing the bug. The second technique, called FailureDoc, helps developers interpret the test results. FailureDoc uses static analysis, runtime monitoring, and statistical reasoning to augment a failed test with contextually-relevant debugging clues: code comments that provide useful facts about the failure, and assists developers in understanding why a test fails. The other three techniques help software users diagnose exhibited software errors. The third technique, called ConfDiagnoser, assists software users in troubleshooting configuration errors. It uses static analysis, dynamic profiling, and statistical analysis to link the undesired behavior to specific configuration options whose values should be changed. The fourth technique, called ConfSuggester, extends ConfDiagnoser to support configuration error diagnosis for evolving software systems. ConfSuggester uses the desired behavior of the old software version as a baseline against which to compare new program behavior, and reasons about the root-cause configuration option. The fifth technique, called FlowFixer, helps users repair UI workflow errors. Given a new software version's changed UI, in which a user's desired action is not possible, FlowFixer uses dynamic profiling, static analysis, and random testing to inform users of replacement UI actions to fix a broken workflow. These techniques have been implemented and evaluated on real-world software systems. The experimental results and user studies have shown that the implemented techniques are accurate, efficient, and practically useful.en_US
dc.embargo.lift2016-10-26T23:23:07Z
dc.embargo.termsRestrict to UW for 2 years -- then make Open Accessen_US
dc.format.mimetypeapplication/pdfen_US
dc.identifier.otherZhang_washington_0250E_13678.pdfen_US
dc.identifier.urihttp://hdl.handle.net/1773/27222
dc.language.isoen_USen_US
dc.rightsCopyright is held by the individual authors.en_US
dc.subjectAutomated software testing; Experimentation; Program analysis; Software error diagnosis; Software reliabilityen_US
dc.subject.otherComputer scienceen_US
dc.subject.othercomputer science and engineeringen_US
dc.titleEffective Program Analyses for Automated Software Testing and Error Diagnosisen_US
dc.typeThesisen_US

Files

Original bundle

Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
Zhang_washington_0250E_13678.pdf
Size:
1.43 MB
Format:
Adobe Portable Document Format