International Research Journal of Engineering and Technology (IRJET) e-ISSN: 2395 -0056
Volume: 03 Issue: 07 | July -2016 www.irjet.net p-ISSN: 2395-0072
© 2016, IRJET | Impact Factor value: 4.45 | ISO 9001:2008 Certified Journal | Page 1
A NOVEL SYMBOLIC EXECUTION MODEL IN
AUTOMATED GENERATION OF TEST CASES
To Huu Nguyen
1*
, Tran Thi Ngan
1
, Do Thanh Mai
2
, Tran Manh Tuan
1
1
School of Information and Communication Technology, Thainguyen University, Vietnam
2
School of Foreign Languages, Thainguyen University, Vietnam
---------------------------------------------------------------------***---------------------------------------------------------------------
Abstract – Modern software is becoming more and
more complex and need to have a high reliability. A
programmer can be assured that sample test runs work
correctly by checking the results. Program testing is the
most intensive tool for maintaining quality of software.
It is executed on each input from a given set of inputs one
by one. The biggest challenge of testing is how to make
an effective set of inputs. Symbolic execution is a
program analysis that is based on the same idea as
testing. However, symbolic execution has a huge
difference. Instead of supplying the normal inputs to a
program, symbolic execution supplies symbols
representing arbitrary values. In this paper, we
introduce a novel symbolic execution model based on the
combination of SPF with Choco decision procedure in
solving complex string constraints. The proposed model
is implemented on the examples that are used in other
constraint solvers. The numerical statistics of the result
is also given in this paper.
Key Words: Test cases, Symbolic execution, automated
generation of test cases, program testing, programing
analysis.
1. INTRODUCTION
Software checking is the most necessary step in the
completeness of computer programs. The objective of
this step is to assure the reliability and the correctness
of software. Two strategies for checking the
correctness are testing and model checking [14].
Testing is often used but it is mostly performed
manually [15], [21]. Moreover, testing meets the
challenges at finding concurrent errors [3], [16]. This
makes software testing be an expensive progress and
still have low coverage of the source code. On the other
hand, model checking is completely automatic and fast,
frequently producing an answer in a matter of minutes
[13], [17]. The main disadvantage of model checking is
the state explosion problem [17], [24].
Symbolic execution is an analysis technique that
generates high coverage test suite and also finds the
deeply errors in complex software. The input values of
symbolic execution are symbolic values instead of
actual data. And its outputs are presented as a function
of the symbolic inputs [7]. The ability to generate
concrete test inputs is one of the major strengths of
symbolic execution [6]. In [16], Sarfraz Khurshid et al.
provided a two-fold generalization of symbolic
execution and performed symbolic execution of code
during explicit state model checking. The paper also
illustrated two applications of their framework that are
checking correctness of multi-threaded programs and
generation of non-isomorphic test inputs.
Symbolic execution has been applied into generate test
inputs for various goals. However, the most well-
known use of this approach is to generate test inputs,
to improve code coverage and expose software bugs
[8], [10]. Besides, other uses of this approach include
privacy preserving error reporting [9], automatic
generation of security exploits [2], load testing [25],
fault localization [20] regression testing, robustness
testing and testing of graphical user interfaces, etc.
Two components of symbolic execution are path
condition generation and path condition solving. A
main challenge in symbolic execution is dealing with
path conditions. To overcome this, a constraint solver
namely CORAL is proposed [23] by M. Souza et al.
CORAL supplies with a new constraint solver named
heuristic solver and it also integrates this solver into
SPF symbolic execution tool as well. But in this paper,
CORAL is not evaluated in the context of constraints
generation from the analysis of other applications yet.
In [11], Indradeep Gosh et al. proposed an effective tool
(JST) for the automated generation of test case with a
high coverage. JST is a novel tool with a newly
supported essential Java library components and
widely used data structures. This tool supplies with
new solving techniques mainly for string constraints,
regular expressions. Moreover, it also supports to