Font Size: a A A

Research On Regression Testing Selection

Posted on:2013-01-26Degree:DoctorType:Dissertation
Country:ChinaCandidate:L YouFull Text:PDF
GTID:1118330371980976Subject:Computer software and theory
Abstract/Summary:PDF Full Text Request
During the develop phase and maintain phase of the software project, it need change software to enhance the functionality and fix the bugs of the software project. After the programmer finishes the coding works for the new version software, it need run regression testing for validating the diff between the old version and new version software. In general, the regression testing process rerun all test cases in the regression testing suite. But the regression testing is the expensive phase of the software testing, the optimization regression testing techniques can save the total costs of the regression testing.The regression testing selection(RTS) is the most important technique in the optimization regression testing techniques. The regression testing selection technique diffs between the old version and new version software, and selects all test cases into the selected regression testing suite that cover the diff portions of the software. The process of optimization regression testing do not rerun all test cases in the regression testing suite, but only rerun the selected regression testing suite. The optimization regression testing saves the total costs by saving the numbers of rerunning test cases.The booming of the Java virtual machine platform and the rapid rate of adoption of the component-based development and continuous integration set new challenges for the regression testing selection techniques. To tackle these three new challenges, the new regression testing techniques must have bytecode-based, incremental and object-oriented properties.Based on the analysis for the full Java bytecode instructions set, this paper presents a bytecode based algorithm to compute the Control Flow Graph(CFG). The CFG algorithm does not need Java source code and can directly compute CFG from Java bytecode. It also presents a CFG-based regression testing selection algorithm. The CFG-based regression testing selection algorithm directly analyzes the bytecode of the old version and new version of the software, and then compute control flow graphs. It compares the old version and new version control flow graphs of the software and outputs the diff. Finally, it selects all test cases in the regression testing suite that cover the diff portions of the software and outputs the selected regression testing suite. The algorithm supports full Java bytecode instructions set and does not need the source code of the software, especially it supports the exception feature of the Java programming language.The dependency relationship is composed of the inheritance relationship and use relationship in the Java programming language. Based on the automatically created and updated dependency relationship information, this paper presents an incremental compilation algorithm for the Java programming language. Comparing with the batch compilation algorithm, the incremental compilation algorithm can avoid redundant recompilation works to save total compilation costs. Based on the Java incremental compilation algorithm, it presents a class level regression testing selection algorithm. Because the incremental compilation algorithm outputs all recompiled bytecode files that is composed of the class level diff between old version and new version of the software, the class level regression testing selection algorithm only selects all test cases in the regression testing suite that cover the diff portions of the software and output selected regression testing suite. The class level regression testing selection algorithm not only supports the inheritance feature of the object-oriented Java programming language but also have incremental property. The cost of the class level regression testing selection algorithm is proportion with the size of diff portions between old version and new version of the software and is not proportion with the total size of the software. Because the size of diff is much smaller than the total size of the software in general, so the class level regression testing selection algorithm has incremental property and is more efficient that the batch algorithm.The control flow graph based regression testing selection algorithm and class level regression testing algorithm both need syntax based diff between the old version and new version of the software. This paper presents a syntax based diff algorithm that output the difference of the old version and new version in bytecode format. The syntax based diff algorithm converts the old version and new version bytecode into the XML data structure at first, and then compares the old version and new version XML data structures and outputs the syntax based diff. The non syntax based diff algorithm only assumes the Java program to be the simple text files and totally ignores the syntax information of the Java programming language. The non syntax based diff algorithm outputs non syntax diff that is composed of inserted, deleted and changed text lines. But the syntax diff algorithm outputs syntax diff that contains full Java syntax information and fulfills the needs of the regression testing selection algorithms. It also presents the method that decomposes the syntax diff into atomic change set, and also analyzes the differences of the binary compatibility and source compatibility of the atomic change.
Keywords/Search Tags:regression testing, regression testing selection, Java bytecode, control flowgraph, incremental compilation
PDF Full Text Request
Related items