Follow us on Facebook

Header Ads

Whole Test Suite Generation



Whole Test Suite Generation
ABSTRACT:
Not all bugs lead to program crashes, and not always is there a formal specification to check the correctness of a software test’s outcome. A common scenario in software testing is therefore that test data are generated, and a tester manually adds test oracles. As this is a difficult task, it is important to produce small yet representative test sets, and this representativeness is typically measured using code coverage. There is, however, a fundamental problem with the common approach of targeting one coverage goal at a time: Coverage goals are not independent, not equally difficult, and sometimes infeasible—the result of test generation is therefore dependent on the order of coverage goals and how many of them are feasible. To overcome this problem, we propose a novel paradigm in which whole test suites are evolved with the aim of covering all coverage goals at the same time while keeping the total size as small as possible. This approach has several advantages, as for example, its effectiveness is not affected by the number of infeasible targets in the code. We have implemented this novel approach in the EVOSUITE tool, and compared it to the common approach of addressing one goal at a time. Evaluated on open source libraries and an industrial case study for a total of 1,741 classes, we show that EVOSUITE achieved up to 188 times the branch coverage of a traditional approach targeting single branches, with up to62 percent smaller test suites.
EXISTING SYSTEM:
Software testing is an essential component of any successful software development process. A software test consists of an input that executes the program and a definition of the expected outcome. Many techniques to automatically produce inputs have been proposed over the years, and today are able to produce test suites with high code coverage. We produce test inputs, and then a human tester needs to specify the oracle in terms of the expected outcome. To make this feasible, test generation needs to aim not only at high code coverage, but also at small test suites that make oracle generation as easy as possible. A common approach in the literature is to generate a test case for each coverage goal (e.g., branches in branch coverage), and then to combine them in a single test suite. However, the size of a resulting test suite is difficult to predict as a test case generated for one goal may implicitly also cover any number of further coverage goals.


DISADVANTAGES OF EXISTING SYSTEM:
·        The problem of the expected outcome persists and has become known as the oracle problem. Sometimes, essential properties of programs are formally specified or have to hold universally such that no explicit oracles need to be defined (e.g., programs should normally not crash).

·        Some targets are more difficult to cover than others.

·        Coverage goals can be infeasible such that there exists no input that would cover them Even if this particular infeasible branch may be easy to detect, this is not true in general and thus targeting infeasible goals will, per definition, fail and the effort would be wasted.









PROPOSED SYSTEM:
In this paper, we evaluate a novel approach for test data generation, which we call whole test suite generation, which improves upon the current approach of targeting one goal at a time. We use an evolutionary technique in which, instead of evolving each test case individually, we evolve all the test cases in a test suite at the same time, and the fitness function considers all the testing goals simultaneously. The technique starts with an initial population of randomly generated test suites, and then uses a Genetic Algorithm to optimize toward satisfying a chosen coverage criterion, while using the test suite size as a secondary objective. At the end, the best resulting test suite is minimized, giving us a test suite as shown in fig 2.  Stack example from fig 1. With such an approach, most of the complications and downsides of the one target at a time approach either disappear or become significantly reduced. The technique is implemented as part of our testing tool EVOSUITE which is freely available online.

ADVANTAGES OF PROPOSED SYSTEM:
v Because to effectively address the problem of test suite generation we had to develop specialized search operators, there would be no guarantee on the convergence property of the resulting search algorithm. To cope with this problem, we formally prove the convergence of our proposed technique.

v The EVOSUITE approach yields significantly better results (i.e., either higher coverage or, if the same coverage, then smaller test suites) compared to the traditional approach of targeting each testing goal independently.


v In some cases, EVOSUITE achieved up to 188 times higher coverage on average, and test suites that were 62 percent smaller while maintaining the same structural coverage.

v Furthermore, running EVOSUITE with a constrained budget (1 million statement executions during the search, up to a maximum 10 minutes timeout) resulted in an impressive83 percent of coverage on average on our case study.




SYSTEM CONFIGURATION:-

HARDWARE CONFIGURATION:-


ü Processor             -        Pentium –IV

ü Speed                             -        1.1 Ghz
ü RAM                    -        256 MB(min)
ü Hard Disk            -        20 GB
ü Key Board            -        Standard Windows Keyboard
ü Mouse                  -        Two or Three Button Mouse
ü Monitor                -        SVGA

 

SOFTWARE CONFIGURATION:-


ü Operating System                     : Windows XP
ü Programming Language           : JAVA
ü Java Version                           : JDK 1.6 & above.

REFERENCE:
Gordon Fraser, Member, IEEE, and Andrea Arcuri  “Whole Test Suite Generation” IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 39, NO. 2, FEBRUARY 2013.