Hybrid Symbolic Concrete Execution for Embedded Software Testing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for testing embedded software are inadequate due to the limitations of computing capability and resource consumption in embedded systems, making it difficult to apply dynamic symbolic execution techniques effectively, which require significant modifications and resource-intensive instrumentation.

Innovation Solution

A method that divides dynamic symbolic execution into concrete and symbolic execution parts, where the concrete execution runs on the embedded system and the symbolic execution on a host system, using a symbolic execution kernel module, path selection module, solver, and debugger to generate test cases without requiring source code or extensive modifications, leveraging existing dynamic symbolic execution software from general-purpose platforms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If dynamic symbolic execution software is directly imported from general-purpose platform to embedded system, then test coverage can be improved, but device complexity and resource consumption increase significantly

Engineering Contradiction:
Improvetest coverageVSAvoidsoftware complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent divides the testing system into two independent parts: a symbolic execution engine running on the host system and a concrete execution engine running on the embedded target system. This segmentation allows the complex symbolic execution functionality to reside on the host while the embedded system only needs lightweight instrumentation, thereby improving test coverage without increasing embedded system complexity

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary communication mechanism between the host system and embedded target system. The host system acts as an intermediary that collects runtime information from the embedded system, performs symbolic execution analysis, and generates test cases. This intermediary approach enables comprehensive testing while keeping the embedded system lightweight

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If symbolic execution is performed on embedded system, then test case generation capability is improved, but resource consumption exceeds embedded system capabilities

Engineering Contradiction:
Improvetest case generation capabilityVSAvoidresource consumption
Core Design Contradiction:
ProductivityVSUse of energy by moving object

Solution Approach 1:

The patent extracts the resource-intensive symbolic execution functionality from the embedded system and relocates it to the host system. The embedded system only performs lightweight concrete execution and collects runtime information, while the host system performs the computationally expensive symbolic execution analysis. This extraction resolves the contradiction by maintaining high productivity while reducing resource consumption on the embedded system

Inventive Principle:
Principle #2Taking out (Extraction)

3Measurement precision

If source code instrumentation is performed, then test accuracy is improved, but ease of operation deteriorates due to requiring source code modifications

Engineering Contradiction:
Improvetest accuracyVSAvoidease of software import
Core Design Contradiction:
Measurement precisionVSEase of operation

Solution Approach 1:

The patent uses binary instrumentation technology to create a copy of the executable code with embedded instrumentation points, rather than modifying the original source code. This copying approach allows the system to insert tracking code at critical points in the executable, maintaining test accuracy while avoiding the need for source code modifications and simplifying the software import process

Inventive Principle:
Principle #26Copying

Data Source

PatentUS10180899B2Device for automatically generating test cases for embedded software using symbolic and concrete execution
Publication Date: 2019.01.15 UNIV OF ELECTRONICS SCI & TECH OF CHINA
  • US10180899B2 patent drawing
  • US10180899B2 patent drawing

AI summary

A device and a method are provided to automatically generate test case for embedded software. This invention is in software test field, including symbolic execution kernel module, path selection module, solver, debugger, concrete execution kernel module and debugger agent module. The tested software and test cases are uploaded from the host system to the embedded system through debugger and debugger agent. The concrete execution kernel module starts the tested software. The symbolic execution kernel module captures the run-time information of the tested software through the debugger. When the tested software operates on the symbol source, the symbolic execution kernel module marks the symbol source, tracks the symbol propagation, generates path condition and sends the path condition to path selection module. This invention can automatically generate test cases for embedded software, which doesn't need the source code of the tested software and can be conveniently used for commercial software.