Summary: | 碩士 === 國立臺灣大學 === 電子工程學研究所 === 99 === Software testing is an investigation conducted to provide programmers with information about the quality of the product or service under test. There are many different methods for software testing, but we only find the bugs and defects as possible as we can rather than ensuring the software is absolutely correct. Regression testing is a type of software testing, which is retesting modified software to ensure that changes are correct and do not adversely affect other parts of the software. It is commonly observed that a software fix could cause other bugs and all this affects the quality and reliability of the system. Hence, regression testing is necessary and plays an important role in any Scenario where a change has been made to a previously tested software code.
One of the main difficulties for regression testing is that it''s often extremely hard for a programmer to figure out how a change in one part of the software will echo in other parts of the software. Owing to the reason, we develop a learning-based method to solve the problem. In our thesis, we describe a new framework with neural-network learning for dynamically prioritizing the test cases. First we add the Intelligent Test Oracle Library (InTOL) in accordance with our requirements to the original program and it will generate the test traces. And when getting a modified version, we slice the original and modified programs. Then we relate the slicing information with the test traces we collect in advance. Second, we get the execution results of test case through the modified program as the test case prioritization. Finally, we use Fast Artificial Neural Network (FANN), a free open source library and which can be used from C and C++, to build a model of the human brain''s own neural-network. Then, utilize NN training the relations of features from the traces and slicing for test cases prioritization.
We experiment with two benchmarks which are the Software-artifact Infrastructure Repository (SIR) programs to check the performance of our techniques. Our experiment data shows that the test cases we select has good fault-detection ability. In the future work, we want to find the location of the fault and try to fix it.
|