Structural Testing of Executables

Verification is usually performed on a high-level view of the software, either specification or program source code. However in certain circumstances verification is more relevant when performed at the machine code level. This paper focuses on automatic test data generation from a standalone executable. Low-level analysis is much more difficult than high-level analysis since even the control-flow graph is not available and bit-level instructions have to be modelled faithfully. We show how "path-based" structural test data generation can be adapted from structured language to machine code, using both state-of-the-art technologies and innovative techniques. Our results have been implemented in a tool named OSMOSE and encouraging experiments have been conducted.

[1]  Krzysztof R. Apt,et al.  Principles of constraint programming , 2003 .

[2]  Koushik Sen,et al.  CUTE: a concolic unit testing engine for C , 2005, ESEC/FSE-13.

[3]  Arnaud Gotlieb,et al.  Symbolic execution of floating‐point computations , 2006, Softw. Test. Verification Reliab..

[4]  Hoyt Lougee,et al.  SOFTWARE CONSIDERATIONS IN AIRBORNE SYSTEMS AND EQUIPMENT CERTIFICATION , 2001 .

[5]  Rupak Majumdar,et al.  Hybrid Concolic Testing , 2007, 29th International Conference on Software Engineering (ICSE'07).

[6]  Patricia Mouy Automatisation du test de tous-les-chemins en présence d'appels de fonction , 2007 .

[7]  Arnaud Gotlieb,et al.  INKA: TEN YEARS AFTER THE FIRST IDEAS , 2006 .

[8]  Thomas W. Reps,et al.  Analyzing Memory Accesses in x86 Executables , 2004, CC.

[9]  Bruno Marre,et al.  On-the-fly generation of k-path tests for C functions , 2004, Proceedings. 19th International Conference on Automated Software Engineering, 2004..

[10]  Koushik Sen DART: Directed Automated Random Testing , 2009, Haifa Verification Conference.

[11]  Krzysztof R. Apt,et al.  Constraint logic programming using Eclipse , 2007 .

[12]  Javier Esparza,et al.  A BDD-Based Model Checker for Recursive Programs , 2001, CAV.

[13]  Javier Esparza,et al.  jMoped: A Test Environment for Java Programs (Tool Paper) , 2007 .

[14]  Harald Ruess,et al.  An Efficient Decision Procedure for the Theory of Fixed-Sized Bit-Vectors , 1997, CAV.

[15]  Michael A. Schmitt,et al.  Some Bad News and Some Good News from Articles Three and Four , 1982 .

[16]  Bruno Marre,et al.  Test sequences generation from LUSTRE descriptions: GATEL , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

[17]  Arnaud Gotlieb,et al.  Automatic test data generation using constraint solving techniques , 1998, ISSTA '98.

[18]  Thomas W. Reps,et al.  WYSINWYX: What You See Is Not What You eXecute , 2005, VSTTE.

[19]  Somesh Jha,et al.  Weighted pushdown systems and their application to interprocedural dataflow analysis , 2003, Sci. Comput. Program..

[20]  Javier Esparza,et al.  jMoped: A Test Environment for Java Programs , 2007, CAV.

[21]  Patrice Godefroid,et al.  Compositional dynamic test generation , 2007, POPL '07.

[22]  David L. Dill,et al.  A decision procedure for an extensional theory of arrays , 2001, Proceedings 16th Annual IEEE Symposium on Logic in Computer Science.