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