ROBDD-Based Test Generation for Symbolic Array Indices
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Simple iterative test generation based on data source analysis faces high space and time overhead due to large memory consumption and computational requirements, and it does not support symbolic array indices, leading to accuracy degradation.
Innovation Solution
Representing and manipulating source sets using Boolean functions in a single graph, such as a reduced ordered binary decision diagram, to share common structures and efficiently perform equivalence checking, while allowing symbolic array indices to be encoded without degrading accuracy.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If simple iterative test generation based on data source analysis is used, then test generation can be performed, but memory consumption and computational requirements become excessively high
Solution Approach 1:
The patent merges multiple source sets into a single unified graph structure using Reduced Ordered Binary Decision Diagrams (ROBDDs). Instead of maintaining separate data structures for each source set, the invention combines them into a shared graph where common sub-structures are eliminated, thereby reducing memory consumption while preserving the ability to perform equivalence checking and data source analysis.
Solution Approach 2:
The unified ROBDD graph structure serves multiple functions simultaneously: it represents source sets, enables equivalence checking, supports data source analysis, and allows efficient manipulation of symbolic array indices. This multi-functional approach eliminates the need for separate specialized data structures, reducing overall memory requirements while maintaining test generation productivity.
2Productivity
If simple iterative test generation based on data source analysis is used, then test generation can be performed, but computational time and processing requirements become excessively high
Solution Approach 1:
By merging source sets into a single ROBDD graph, the patent enables shared computation across multiple source sets. Operations such as equivalence checking and data source analysis can be performed once on the unified structure rather than repeatedly on individual source sets, significantly reducing computational time and processing requirements while maintaining test generation efficiency.
Solution Approach 2:
The patent performs preliminary construction of the unified ROBDD graph structure that captures all source set relationships in advance. This preliminary action enables subsequent test generation operations to leverage the pre-computed structure, avoiding redundant computations and reducing overall processing time required for iterative test generation.
3Measurement precision
If simple iterative test generation based on data source analysis is used, then basic test generation is possible, but symbolic array indices cannot be handled leading to accuracy degradation
Solution Approach 1:
The unified ROBDD graph structure is designed to be universally applicable to various data representations including symbolic array indices. The graph structure can represent complex relationships between array elements and their indices, enabling accurate equivalence checking and data source analysis even when symbolic array indices are involved, thereby maintaining test generation accuracy while expanding adaptability.
Data Source
AI summary
A method of testing a software program may include generating a test driver by assigning concrete values to input variables of a software program. The method may also include assigning symbolic source set elements to the input variables of the software program to generate a data structure based on the symbolic source set elements. The method may also include symbolically executing a current instruction of the software program based on the concrete values and symbolic source set elements assigned to the input variables of the software program and performing data source analysis on the current instruction of the software program based on symbolic execution of the current instruction.


