LCT: An Open Source Concolic Testing Tool for Java Programs
Recommend Documents
LCT (LIME Concolic Tester) is an open source concolic testing tool for sequential Java ... Automated testing has the potential to improve reliability and reduce costs .... a single centralized place which could cause a performance bottleneck.
versions. Considering the small market for free web-based testing tools, we decided to introduce Comproso. Comproso is an Open. Source tool kit supporting test development and management with ... CT types, including performance tests.
nor standard test data available to evaluate them. In view of this, we have designed a test tool based on Android and the. MonkeyRunner Tool [10] to conduct a ...
(EJS), a Java-based tool designed to help control educators with a low profile in programming to ... enhanced performance and graphical capabilities of modern computers ... shows a virtual lab for testing different control ... Easy Java Simulations (
LCT for testing smart card Java applets. In particular, we focus on the problem of differential testing, where a Java class implementation is tested against a ref-.
Mar 30, 2018 - Citation: Prada J, Sasi M, Martin C, Jablonka S, .... ROI, which can be taken either from the cell-free background or from any low-activity area in ... A pdf-document is automatically generated and put into the result folder of the act
the mutation testing in Java programs, section 4: will present the mutation testing tools For Java programs, ..... The high performance of mutation testing process,.
plemented in SCORE and demonstrate the performance of SCORE through the ... implemented in the SCORE tool for applying concolic testing in a practical and ...
Jan 10, 2011 - between chemical compounds by comparing the result- ing lists of ..... To keep the notation simple, let Pi denote the set of valid ...... J Chem Inf Model 2009, 49(9):2077-2081. 16. Fan RE ... Springer; 2009:25-36. 20. Jahn A ...
To use concolic testing for multithreaded programs, we do ... able tool, called jCUTE, for testing Java programs. Apart ...... This performance difference is due to ...
protocol and the TMN protocol, the scheduler of Honeywell's DEOS real-time .... tion of the Needham-Schroeder [R. Needham and M. Schroeder 1978] and the ...
pump repairman could support himself by doing machine shop type jobs like ....
we call “secrets” and 5 very simple “modules” that bolt to an engine block.
The speech research field is dependent on software tools to handle digital recordings of ... It was decided to start development on a new tool. In July 1999, after a ...
T-VPack [8] and RASP [12] do indeed map logic functions into LUTs, perform ..... [3] S. Guccione, D. Levi, and P. Sundararajan, âJBits: Java based interface for ...
Java Class Interface Definition and an Oracle of Test Cases that specify expected results. This task is .... cases specifications to ensure better test performance.
Jun 2, 2009 - library to create interactive digital media for mass customization of high school ... contributed simulation codes, in a Web 2.0 environment,.
Java Modelling Tools: an Open Source Suite for Queueing Network Modelling and Workload Analysis. Marco Bertoli, Giuliano Casale, Giuseppe Serazzi. â.
known examples of web applications that are yet capable of relying the .... The main guidelines for the development of a
sign-on web authentication based on BioAPI-compliant biometric soft- ware or devices. .... Edition (EE) specification in web application development, permitting.
Mar 8, 2011 - existing software, ensuring library stability and continued support and ... Conclusions: As a user-friendly, well-documented and open-source ...
We present an interactive Java-based application that encodes significant ... cilitates open source distribution and integration. 1. ... gent patient monitoring.
Aug 31, 2016 - testing (of programs), we investigate whether we can combine random sampling and symbolic execution in ...... HYCHECKER is implemented with 1575 lines of Python codes (ex- ..... On the efficiency of automated testing.
multi-sector read operation of a Samsung flash storage platform and compared the .... Note that this ..... l =7 8.8 Ã 105 7.3 Ã 106 3.9 Ã 107 1.5 Ã 108 5.0 Ã 108.
Feb 2, 2013 - Key-words: Open-Source softwares; PYTHON Language; EKV Compact Model; ... software, is essential to the simulation and optimization.
LCT: An Open Source Concolic Testing Tool for Java Programs
Execute program with these inputs ... Program is instrumented with additional statements to enable symbolic execution ... An open source concolic testing tool for sequential Java ... Solving path constraints centrally could cause a performance.
LCT: An Open Source Concolic Testing Tool for Java Programs Kari Kähkönen, Tuomas Launiainen, Olli Saarikivi, Janne Kauttio, Keijo Heljanko and Ilkka Niemelä BYTECODE 2011
Concolic Testing • Concolic testing (dynamic symbolic execution) is an automated testing method – Generate test inputs – Execute program with these inputs – Catch runtime errors (uncaught exceptions, assertion violations)
• Can we cover all the reachable statements with the tests? – E.g., random testing can have a very low probability on reaching certain statements – Concolic testing: Attempt to explore all feasible execution paths
Concolic Testing • Concolic testing combines concrete and symbolic execution – Program is instrumented with additional statements to enable symbolic execution – Concrete execution guarantees that all the found bugs are real
• Symbolic execution collects path constraints that can be used to compute new test inputs that explore previously unexplored execution paths • Path constraint are typically solved using SMT-solvers
Example
int x = input(); if (x > 10) { x = x + 5; if (x == 50) error; }
Input 10
Input + 5 != 50
Input + 5 == 50 ERROR
Path constraint is a conjunction of constraints along a path from root of the tree to a leaf node
LCT – LIME Concolic Tester • An open source concolic testing tool for sequential Java programs • Instruments the program under test using Soot • Uses Boolector for bit-precise constraint solving – For example, overflows and modulo-operator are handled precisely
• Supports distributed testing by allowing several tests to be executed in parallel • Reports uncaught exceptions as errors • Several related tools exists: CUTE/jCUTE, Pex, Klee,…
Tool Architecture
Distributed Testing • Concolic testing suffers from path explosion problem • Testing separate execution paths can be done independently – Keep track of all the unexplored branched in the execution tree – Distribute the path constraints related to these branches to test executors – Solving path constraints centrally could cause a performance bottleneck
• Distributed testing allows taking advantage of multicore architectures and networks of computers
Limitations • Java core classes can be problematic to instrument directly – LCT replaces some of the core classes with custom implemented counterparts that can be instrumented
• If the program under test contains un-instrumented classes, full path coverage cannot be guaranteed • Floating point input values are not supported as the constraint solver does not support floating points • LCT makes a non-alising assumption – A[i] = 0; A[j] = 1; if (A[i] != 0) ERROR;
Experiments Benchmark
Paths
1 executor
10 executors
20 executors
AVL tree
3840
16m 57s
2m 6s / 8.1
1m 8s / 15.0
Quicksort (5)
514
3m 11s
21s / 5.2
13s / 8.4
Quicksort (6)
4683
28m 22s
3m 29s / 8.1
1m 39s / 17.2
GCD
2070
11m 12s
1m 13s / 9.2
38s / 17.7
•
The distributed nature of LCT has been evaluated by testing Java programs with varying number of test executors running concurrently
Experiments Approach
1-bounded
2-bounded
3-bounded
Decoupled
121 (54.50%)
185 (83.33%)
221 (99.95%)
Coupled
123 (55.41%)
187 (84.23%)
221 (99.95%)
Random
95 (42.79%)
151 (68.02%)
184 (82.88%)
• LCT has been used in a case study to compare random testing and concolic testing (SPIN 2010) • Here LCT was used on a large number of mutants of a Java Card application to discover if the mutations changed the behavior of the program
Future Work • We are currently extending LCT to support testing of multi-threaded Java programs – Support for multi-threaded programs will be released soon in LCT 2.0
• Support for C language based on the LLVM compiler infrastructure is also in development • We are investigating how to support incremental testing by exploring only execution paths affected by recent changes
Availability • LCT is open source and available from http://www.tcs.hut.fi/Software/lime