Font Size: a A A

Efficient Generation For Test Data And Test Methods Of Software

Posted on:2012-02-21Degree:DoctorType:Dissertation
Country:ChinaCandidate:L X WangFull Text:PDF
GTID:1118330332486349Subject:Control theory and control engineering
Abstract/Summary:PDF Full Text Request
At present, the software application is widening in range and scale. Software complexity is also rising. So software quality has become more important, and high-quality software development is facing a great challenge.An important means to improve software quality is the high-quality software testing. Nevertheless, comparing the software high-quality requirements of people with the software technology development, we find software testing technology development is lagging behind, and faceing with many problems.In the software testing activities, a very important task is to generate high-quality test data. High-quality test suite can find more errors and defects with fewer test cases. This can save testing costs, and can increase testing efficiency and quality. But, how to generate a good test suite is a problem which should be researched. To the problem of test data generation, we selectively study several key aspects, including:(1) The generation and reduction of combinatorial test suite;(2) in structural testing, the testing problems of large programs;(3) Anti-model-based testing technology research.The combinatorial test case generation has already had a lot of research results. In 1985, in order to test Ada compiler, R. Mandl firstly proposed the concept of a combinatorial test. Since then, the combinatorial test has become the study focus. D. Cohen and other researchers have proposed various methods to generate the combinatorial test sets.On structural testing, the selection of path and generation of test cases in accordance with the selected path are two important aspects. In 1982, on the basis of his theory of software complexity metrics, Thomas McCabe proposed the concept of basic path coverage testing; subsequently, B. Beizer and others offered a variety of coverage criteria and so on. Then based on the generated test paths, we can use the static methods, dynamic methods and heuristics motheds and so on to generate the path-oriented test cases.In any case, for the combination test, the software under test is often more many input parameters and parameter values for every parameters; for structural testing, there are often a large number of path coverage tests. This will result in a large set of test cases and will cause difficulties for test.However, there is often redundant and ineffective test cases in the combinatorial test set, and this will affect the test efficiency and effectiveness. How can we reduce redundant and ineffective test cases? In many instances, we can not completely cover all of the paths in structural testing as well. How do we choose the criteria of path coverage? For software under test, there are often such situations:(a) we only have an overall system architecture and system general user requirements; (b) there is no other relevant details information (such as source code, etc.); (c) in the actual system implementation process, the design model of the SUT has been modified. How should we test such the software system?To address the above issues, this thesis's main researches focus on the following aspects:(1) We propose a method of generating and reducing combinatorial test suite based on a tree-model and input parameters relationships. This method is first to use the solution space tree to represent a combinatorial test suite of multiple input parameters and give the relations between solution space tree and the input parameters. Then, we analyze the dependent relationships among input parameters, and give two kinds of definition form of dependent relationships for the different goal; we also summarize several kinds of dependent relationships, and explained how to reduce the redundancy invalid branches and leaves on the solution space tree by using the dependent relationships. Finally we give the algorithm of generating test suite. The experimental data shows that our method has a good peformence and actual utility in certain application scope.(2) We discuss a method of reducing piar combinatorial test suite by using the input relationships between input parameters. In order to remove the invalid test cases in piar combinatorial test suite and improve efficiency of generating test suite, we analyze the existence of invalid test cases systematically, and after research how to obtain the piar dependent relationships, we propose a method of reducing piar combinatorial test suite, and give algorithm of determine a invalid test case.(3) We propose several methods which use LP to generate a small combinatorial set. We first established a LP optimization model for conbintorial test suite, and its main goal is to improve the efficiency of obtaining combinatorial test cases via LP. Then, we give three methods of obtaining test sets, such as dividing the macro-LP into micro-LP, using 0/1 integer LP and Non 0/1 integer LP to obtaining test sets. Finally, we introduce and use three reduction rules of I/O relationship to reducing the number LP constraints and variables. In the analysis of experiment, we compare these methods in three aspects (time comsuption, the sizes of test sets and availability) and draw a conclution that interrupting 0/1-ILP program to a test set is feasible and has a better comprehensive performance.(4) We propose a divided method of a program with big cyclomatic complexity for testing. We analyze the test difficulties of programs under test with big cyclomatic complexity, and give the algorithm of obtaining variables affected degrees and cyclomatic complexity. Then we discuss some issues including the ways of program divide, rules of program divide, the performance influence of searval algorithms of generating test sets and the influence of coverage of program element. Divide program can reduce the cyclomatic complexity of pieces of program so as to knock down the test difficulties, and there is a good test efficiency of for these pieces of programs.(5) Anti-model-based testing is a converse test method for model-based testing when test a system on the basis of insufficient information. We depict the method based on test of component systems. We propose a test framework and process, and classify the test information as I/O data of running test cases, dynamic data of running test cases and dynamic data while the system is running for users' application. We discuss the two methods which one is AOP, and the other is the interface of JVMTI. We give the formilatiom of dynamic data and discuss the algorithm of obtaining the dynamic action model.In this thesis, we make the useful exploration including some theoretical analysis and new method propositions for several key issues. The experimental results indicate that our methods can solve the corresponding problems effectively to a certian extent, and our study takes on a certain value for the test data generation and anti-model-based test.
Keywords/Search Tags:software test, combinatorial test, solution space tree, linear programming, cover-matrix, cyclomatic complexity, anti-model test, aspect oriented program, dynamic behaviour model
PDF Full Text Request
Related items