A SURVEY ON AUTOMATIC TEST CASE GENERATION
M.Prasanna1 S.N. Sivanandam2 R.Venkatesan3 R.Sundarrajan4
1. Lecturer 2. Prof & Head 3. Professor 4. PG Student
Department of Computer Science and Engineering
PSG College Of Technology, Coimbatore 641 004
ABSTRACT
Software testing is important activity in Software Development Life Cycle. To cut down cost of manual testing and to increase reliability of it, researchers and practitioners have tried to automate it. One of the important activity in testing environment is automatic test case generation - description of a test, independent of the way a given software system is designed. This paper presents a survey on automatic test case generation techniques that are found in the current literature. Problems in usage of certain techniques are identified. Areas that needed future research are presented.
Software organizations spend considerable portion of their budget in testing related activities. A well tested software system will be validated by the customer before acceptance. The effectiveness of this verification and validation process depends upon the number of errors found and rectified before releasing the system. This in turn depends upon the quality of test cases generated.
Through the years a number of different methods have been proposed for generating test cases. A test case is a description of a test, independent of the way a given system is designed. Test cases can be mapped directly to, and derived from use cases. Test cases can also be derived from system requirements. One of the advantages of producing test cases from specifications and design is that they can be created earlier in the development life cycle and be ready for use before the programs are constructed. Additionally, when the test cases are generated early, Software Engineers can often find inconsistencies and ambiguities in the requirements specification and design documents. This will definitely bring down the cost of building the software systems as errors are eliminated early during the life cycle.
Several approaches have been proposed for test case generation, mainly random, path-oriented, goal-oriented and intelligent approaches. Random techniques determine test cases based on assumptions concerning fault distribution. Path-oriented techniques generally use control flow information to identify a set of paths to be covered and generate the appropriate test cases for these paths. These techniques can further be classified as static and dynamic. Static techniques are often based on symbolic execution, whereas dynamic techniques obtain the necessary data by executing the program under test. Goal-oriented techniques identify test cases covering a selected goal such as a statement or branch, irrespective of the path taken. Intelligent techniques of automated test case generation rely on complex computations to identify test cases.
Many researchers and practitioners have been working in generating optimal test cases based on the specifications, still 100% testing is an impossibility. Modeling languages are used to get the specification and generate test cases. Since UML (Unified Modeling Language) is the most widely used language, many researchers are using UML diagrams such as state-chart diagrams, use-case diagrams, sequence diagrams, etc to generate test cases and this has led to Model based test case generation.
UML can be visualized as four meta-model architecture with three logical sub packages: Foundation, Behavioral elements and Model management. UML provides capability to explore static and dynamic behavior and physical deployment of a system. The possibility of using UML for software testing was addressed by Clay E. Williams [2]. UML models are built extensively for Object Oriented software systems. Class diagram, state diagram and OMT (Object Modeling Technique) and unified process are used to test Object Oriented systems. Here, the author has provided a framework to show which diagrams can be used for which phase in the testing process. But he claims that this knowledge is not sufficient, since it lacks detail. So, modification is required for testers to create their own models. Another approach could be to build standardized library or to extend the four meta-model architecture.
Even though variety of approaches have been proposed, with the advent of modeling tools like Rational Rose, for a decade there has been constant research on generating test cases based on specifications and design models. For easy understanding, we have classified test case generation approaches mainly into two categories – Specification based test case generation and Model based test case generation.
In this paper survey has been done on the work carried out during the last decade, where most of the researchers have concentrated on Model based test case generation.
A new method to testing that uses combinatorial designs to generate efficient test sets was proposed by David M. Cohen et al [15]. The authors have implemented their method in AETG system which is used in varied applications. Here, the tester first identifies parameters that define the space of possible test scenarios. Then the tester uses combinatorial designs to create a test plan that covers all pair-wise, triple or n-way combinations of test parameters. Heuristic algorithm has been developed to generate pair wise testing. Telephone Switch’s ability to place phone calls was taken as a problem for testing. This had 4 parameters with 3 values leading to 81 different scenarios. 9 Pair wise test cases were generated for enough coverage. The number of tests required and cost of adding additional parameter by the AETG method grows logarithmically with the number of test parameters. With varied experiments, AETG system showed better coverage that randomly generated test cases. Empirical results show that pair wise testing is practical and efficient for various types of software system.
To sum up, there are many techniques available for generating test cases to satisfy test coverage criteria. A random test case generator may create many test data; but might fail to find test case to satisfy requirements. A path oriented approach identifies path for which test case has to be generated, however the path might be infeasible, the test data generator might fail to find an input that will traverse the path. An intelligent approach generates test case quickly but is quite complex. Comparing with these techniques, Model based testing is a valuable one, since it creates flexible, useful test automation from practically first day of development. Models are simple to modify, generate innumerable test sequences and allow the testers to get more testing accomplished in shorter time. Even though varied test case generation approaches are available, model based testing approach has attracted many researchers and still research is being carried out to optimize the generation of test cases with minimum human effort.
[1] Jeff Offutt, Aynur Abdurazik, October 1999, "Generating Tests from UML specifications", Second International Conference on the Unified Modeling Language (UML99), pp. 416-429, Fort Collins, CO.
[2] Clay E. Williams, November 1999, "Software testing and the UML", International Symposium on Software Reliability Engineering (ISSRE’99), Boca, Raton.
[3] Jeff Offutt, Aynur Abdurazik, October 2000, "Using UML Collaboration diagrams for static checking and test generation", Third International Conference on UML, York, UK.
[4] Lydie du Bousquet, Hugures Martin, Jean Marc Jezequel, 2001, "Conformance Testing from UML Specification Experience Report".
[5] Alessandra Cavarra, Charles chrichton, Jim Davies, Alan Hartman, Thierry Jeron, Laurent Mounier, September 2000 , "Using UML for Automatic Test Generation", Oxford University Computing Laboratory, Tools and Algorithms for the Construction and Analysis of Systems, (TACAS'2000).
[6] Jeff Offutt, Shaoying Liu, Aynur Abdurazik, Paul Ammann, March 2003, "Generating Test data from State based Specifications", The Journal of Software Testing, Verification and Reliability, 13(1):25-53.
[7] Andras Toth, Daniel Varro, Andras Pataricca, 2003, "Model Level Automatic Test Generation for UML State-Charts", Sixth IEEE workshop on Design and Diagnostics of Electronic Circuits and System, (DDECS 2003).
[8] Marlon E. Vieira, Marcio S. Dias, Debra J. Richardson, "Object-Oriented Specification-Based Testing Using UML Statechart Diagrams", University of California.
[9] Jean Hartmann, Marlon Vieira, Herb Foster, Axel Ruder, "UML based Test generation and Execution". www.gm.fh_koelin.de/~winter/tav/html/tav21/TAV21P6Vieira.pdf
[10] Jeff Offutt, Aynur Abdurazik, Andrea Baldini, 2004, "A Controlled experiment evaluation of Test cases generated for UML diagram".
www.isse.gmu.edu/techrep/2004/04-03.pdf
[11] Ahmed M. Salem, Lalitha Subramaniam, 2004, "Utilizing UML use cases for testing requirements", International Conference on Software Engineering research and practice, (SERP 2004).
[12] Stefania Gresi, Diego Latella, Mieke Massink, 2004, "Formal Test Case Generation for UML State-Charts", Ninth IEEE International Conference on Engineering Complex computer system Navigating complexity in e-Engineering Age.
[13] Matthias Riebish, Ilka Philippow, Marco Gotze, "UML Based Statistical Test Case Generation".
[14] Bertolino A., Marchetti E., 2004, "Introducing a reasonably complete and coherent approach for model based testing", Tools and Algorithms for the Construction and Analysis of Systems, (TACAS'2004).
[15] Cohen, D. M., Dalal, S. R., Fredman, M. L., Patton, G.C., 1997, "The AETG Design: an approach to testing based on Combinatorial design", IEEE trans on Software Engineering, vol. 23, no. 7, pp. 437-444.
[16] Sami Baydeda, Volker Gruhn, 2003, "BINTEST – binary search-based test case generation", In Computer Software and Applications Conference (COMPSAC), IEEE Computer Society Press, 2003.