Specification-Driven Conformance Checking for Virtual/Silicon Devices Using Mutation Testing

Modern software systems, either system or application software, are increasingly being developed on top of virtualized software platforms. They may simply intend to execute on virtual machines or they may be expected to port to physical machines eventually. In either case, the devices, virtual or silicon, in the target virtual or physical machines are expected to conform to the specifications based on which the software systems have been developed. Non-conformance of these devices to the specifications can cause catastrophic failures of the software systems. In this article, we propose a mutation-based framework for effective and efficient conformance checking between virtual/silicon device implementations and their specifications. Based on our defined mutation operators, device specifications can be automatically instrumented with weak mutant-killing constraints to model potential erroneous device behaviors. To kill all feasible mutants, our approach adopts a cooperative symbolic execution mechanism that can efficiently automate the test case generation and conformance checking for virtual/silicon devices. By symbolically executing the instrumented specifications with virtual/silicon device traces obtained from the cooperative execution, our method can accurately measure whether the designs have been sufficiently validated and report the inconsistencies between device specifications and implementations. Comprehensive experiments on two industrial network adapters and their virtual devices demonstrate the effectiveness of our proposed approach in conformance checking for both virtual and silicon devices.

[1]  Yves Le Traon,et al.  Chapter Six - Mutation Testing Advances: An Analysis and Survey , 2019, Adv. Comput..

[2]  Tongquan Wei,et al.  Specification-Driven Automated Conformance Checking for Virtual Prototype and Post-Silicon Designs , 2018, 2018 55th ACM/ESDA/IEEE Design Automation Conference (DAC).

[3]  Shin Yoo,et al.  Are Mutation Scores Correlated with Real Fault Detection? A Large Scale Empirical Study on the Relationship Between Mutants and Real Faults , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[4]  Fei Xie,et al.  CRETE: A Versatile Binary-Level Concolic Testing Framework , 2018, FASE.

[5]  Meng Wu,et al.  Symbolic execution of programmable logic controller code , 2017, ESEC/SIGSOFT FSE.

[6]  Tingting Yu,et al.  Automatic detection and validation of race conditions in interrupt-driven embedded software , 2017, ISSTA.

[7]  Alex Groce,et al.  Mutation Reduction Strategies Considered Harmful , 2017, IEEE Transactions on Reliability.

[8]  Gregg Rothermel,et al.  An automated framework to support testing for process‐level race conditions , 2017, Softw. Test. Verification Reliab..

[9]  Sandip Ray,et al.  Post-Silicon Validation in the SoC Era: A Tutorial Introduction , 2017, IEEE Design & Test.

[10]  Rainer Leupers,et al.  MPSoC Software Debugging on Virtual Platforms via Execution Control with Event Graphs , 2016, ACM Trans. Embed. Comput. Syst..

[11]  Myra B. Cohen,et al.  VDTest: An Automated Framework to Support Testing for Virtual Devices , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[12]  Andreas Gerstlauer,et al.  The next generation of virtual prototyping: Ultra-fast yet accurate simulation of HW/SW systems , 2015, 2015 Design, Automation & Test in Europe Conference & Exhibition (DATE).

[13]  A. Jefferson Offutt,et al.  Establishing Theoretical Minimal Sets of Mutants , 2014, 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation.

[14]  Li Lei,et al.  Automatic concolic test generation with virtual prototypes for post-silicon validation , 2013, 2013 IEEE/ACM International Conference on Computer-Aided Design (ICCAD).

[15]  Li Lei,et al.  Symbolic Execution of Virtual Devices , 2013, 2013 13th International Conference on Quality Software.

[16]  Li Lei,et al.  Post-silicon conformance checking with virtual prototypes , 2013, 2013 50th ACM/EDAC/IEEE Design Automation Conference (DAC).

[17]  Tingting Yu An observable and controllable testing framework for modern systems , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[18]  Mingsong Chen,et al.  Assertion-Based Functional Consistency Checking between TLM and RTL Models , 2013, 2013 26th International Conference on VLSI Design and 2013 12th International Conference on Embedded Systems.

[19]  Asim Kadav,et al.  SymDrive: Testing Drivers without Devices , 2012, OSDI.

[20]  Mingsong Chen,et al.  System-Level Validation: High-Level Modeling and Directed Test Generation Techniques , 2012 .

[21]  Gregg Rothermel,et al.  SimTester: a controllable and observable testing framework for embedded systems , 2012, VEE '12.

[22]  Patrice Godefroid,et al.  SAGE: Whitebox Fuzzing for Security Testing , 2012, ACM Queue.

[23]  Mike Papadakis,et al.  Automatically performing weak mutation with the aid of symbolic execution, concolic testing and search-based testing , 2011, Software Quality Journal.

[24]  Fei Xie,et al.  Formalizing hardware/software interface specifications , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[25]  George Candea,et al.  S2E: a platform for in-vivo multi-path analysis of software systems , 2011, ASPLOS XVI.

[26]  Mike Papadakis,et al.  Automatic Mutation Test Case Generation via Dynamic Symbolic Execution , 2010, 2010 IEEE 21st International Symposium on Software Reliability Engineering.

[27]  Nikolai Tillmann,et al.  Test generation via Dynamic Symbolic Execution for mutation testing , 2010, 2010 IEEE International Conference on Software Maintenance.

[28]  Paula Herber,et al.  Automated conformance evaluation of SystemC designs using timed automata , 2010, 2010 15th IEEE European Test Symposium.

[29]  Dawson R. Engler,et al.  KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs , 2008, OSDI.

[30]  Joao Marques-Silva,et al.  Towards Equivalence Checking Between TLM and RTL Models , 2007, 2007 5th IEEE/ACM International Conference on Formal Methods and Models for Codesign (MEMOCODE 2007).

[31]  Brian N. Bershad,et al.  Recovering device drivers , 2004, TOCS.

[32]  Wynne Hsu,et al.  DESIGN OF MUTANT OPERATORS FOR THE C PROGRAMMING LANGUAGE , 2006 .

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

[34]  Fabrice Bellard,et al.  QEMU, a Fast and Portable Dynamic Translator , 2005, USENIX ATC, FREENIX Track.

[35]  Gregg Rothermel,et al.  An experimental determination of sufficient mutant operators , 1996, TSEM.

[36]  A. Jefferson Offutt,et al.  Mutation analysis using mutant schemata , 1993, ISSTA '93.

[37]  Gregg Rothermel,et al.  An experimental evaluation of selective mutation , 1993, Proceedings of 1993 15th International Conference on Software Engineering.

[38]  A. Jefferson Offutt,et al.  Constraint-Based Automatic Test Data Generation , 1991, IEEE Trans. Software Eng..

[39]  William E. Howden,et al.  Weak Mutation Testing and Completeness of Test Sets , 1982, IEEE Transactions on Software Engineering.