for searching and determining a near to optimal set
of test cases according to the data flow criterion.
Based on previous work, we extended a test case
generation system by integrating and exploiting the
functionality of the two graphs. Control flow graph
assists in dynamic code coverage, i.e. determines
executed code on the control flow on the fly. Data
flow graphs assist in extracting the data flow paths
according to the All_DU_Paths data flow criterion.
A test case generator uses the control flow graph to
identify the executed part of an All_DU_Path and
evaluate the test case. The test case generator
employs a genetic algorithm which uses the
feedback to adapt its behaviour and hence to come
closer to the appropriate set of test cases. In this
work, we also addressed the challenge of the
composite gene mutation and we proposed the
switch-mutation operation, which can mutate not
only the gene (i.e. a variable of the test case) as a
complete unit but also an element of the gene (i.e. an
element of an array which is treated as an input
variable). Experimental results revealed the
efficiency of our approach over a pool of standard
programs. These results indicated better
performance compared to similar studies, both in
terms of testing coverage and execution time, the
latter being calculated in terms of evaluation runs.
Currently we are carrying out more experiments
with larger and more complex programs which can
assess the performance of our framework in more
realistic environments. Future work will consider the
extension of the framework to support control flow
graph slicing so as to identify faulty parts of the
code. Future work will consider the modification of
the new mutation operator to support composite
genes of objects, i.e. when one or more objects are
given as input variables to a testing unit. In this case,
the test case generator may need to exercise the
following: (i) the object itself, e.g. by generating a
new object, (ii) the state of the object, e.g. by calling
some methods of the object before assigning it to the
gene and (iii) a descendent object (following
heritage tree) and hence the late binding, by creating
an object of a sub-class and up-casting it to the
target object. Finally, we plan to investigate the
incorporation of a new type of graph which will be
able to capture both the control flow graph and the
object oriented features.
REFERENCES
Andrews, J.H., Briand, L.C., Labiche, Y., Namin, A.S.
2006. Using mutation analysis for assessing and
comparing testing coverage criteria. IEEE
Transactions on Software Engineering 32 (8), 608-
624.
Clarke, L.A., Podgurski, A., Richardson, D.J., Zeil, S.J.
1989. A formal evaluation of data flow path selection
criteria. IEEE Transactions on Software Engineering
15 (11), 1318-1332.
Frankl, P.G., Weyuker, E.J. 1988. An applicable family of
data flow testing criteria. IEEE Transactions on
Software Engineering 14 (10), 1483-1498.
Kapfhammer, G.M. 2004. Software testing. In: Tucker,
A.B. (Ed.), CRC Press, Boca Raton, FL, 105.1-105.44.
Korel, B. 1996. Automated test data generation for
programs with procedures. In: Proceedings of the
1996 ACM SIGSOFT international symposium on
Software testing and analysis , San Diego, California,
United States, 209-215.
Laski, J.W., Korel, B. 1983. Data flow oriented program
testing strategy. IEEE Transactions on Software
Engineering 9 (3), 347-354.
McMinn, P. 2004. Search-based software test data
generation: A survey. Software Testing, Verification
and Reliability 14 (2), 105-156.
Michael, C.C., McGraw, G., Schatz, M.A. 2001.
Generating software test data by evolution. IEEE
Transactions on Software Engineering 27 (12), 1085-
1110.
Michael, C., McGraw, G. 1998. Automated software
testdata generation for complex programs. In:
Proceedings of the 13th IEEE International
Conference on Automated Software Engineering,
Honolulu, Hawaii, October 1998, 136-146.
Ntafos, S.C. 1984. On required element testing. IEEE
Transactions on Software Engineering 10 (6), 795-
803.
Ntafos, S.C. 1988. A comparison of some structural
testing strategies. IEEE Transactions on Software
Engineering 14 (6), 868-874.
Ntafos, S.C. 1981. On testing with required elements. In:
Proceedings of IEEE-CS COMPSAC, November 1981,
132-139.
Rapps, S., Weyuker, E.J. 1982. Data flow analysis
techniques for test data selection. In: Proceedings of
the 6th IEEE-CS International Conference on
Software engineering, Tokyo, Japan, September 1982,
272-278.
Rapps, S., Weyuker, E.J. 1985. Selecting software test
data using data flow information. IEEE Transactions
on Software Engineering 11 (4), 367-375.
Sofokleous, A., Andreou, A. 2007. Batch-optimistic test-
cases generation using genetic algorithms. In:
Proceedings of the 19th IEEE International
Conference on Tools with Artificial Intelligence
(ICTAI), Patra, Greece, October, 157-164.
ICEIS 2008 - International Conference on Enterprise Information Systems
34