Font Size: a A A

Research And Implementation Of Divergences Analysis Based On Dynamic Symbolic Execution

Posted on:2019-07-16Degree:MasterType:Thesis
Country:ChinaCandidate:W Y HuFull Text:PDF
GTID:2348330542998757Subject:Intelligent Science and Technology
Abstract/Summary:PDF Full Text Request
Software maintenance is an important activity during a software development lifecycle.One of the most important tasks is to detect the faults in the program,including run-time errors,logic errors of functionality,and performance issues etc.and to fix them through patches.However,it is not only time-costly but also error-prone.A program patch,aiming to fix bugs,may introduce new bugs,when the existing regression test suite for a program may not cover the program completely.The existing regression testing techniques usually focus on several fields as follows:test cases augmentation,code change impact analysis,multi-version program analysis and patch verification.The goal of the thesis is to expose divergences between two versions of a program.There are two issues in most of existing works in this direction as follows:1)They separately analyze the code of both versions to obtain their behavioral information and further expose their divergences;2)They focus only on divergences in control flow without considering data flow.Based on the fact that two versions of a program share a large amount of common code and only a small number of different code,a united and split execution model(USE for short)is proposed to expose both control and data divergences between two versions.First,this study designs and implements a tool called IRDiff to identify the differences between two versions of a program,the output of the tool is a unified program which consists of common code and different code of two versions.Second,the model is implemented in a tool(also named USE)to expose divergences by analyzing the unified program in a same symbolic execution engine.Third,evaluation results on three benchmarks(SIR?Moddiff and CoReBench)show that USE can efficiently expose control and data divergences between two versions,and be used to classify patches.
Keywords/Search Tags:program behavioral divergences, dynamic symbolic execution, test cases generation, source code differences, regression testing
PDF Full Text Request
Related items