Fuzzing Test Data Generation for Program Component Coverage
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing fuzzing methods for detecting unknown vulnerabilities in programs face inefficiencies due to uneven testing of components, where some functions are executed far more times than others, leading to insufficient testing and potential vulnerabilities.
Innovation Solution
An information processing device that determines the condition of input data required to execute insufficiently tested components by acquiring and combining execution histories, classifying data based on execution patterns, and identifying common characteristics to ensure thorough testing.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If a large amount of various kinds of random data is supplied to a target device in fuzzing, then the coverage of tested components increases, but the test time increases and components are tested unevenly
Solution Approach 1:
The system performs preliminary analysis of execution history data to identify components that have not been sufficiently tested before generating new test data. By预先 determining which components need testing based on historical execution patterns, the system avoids generating large amounts of random data and directly creates targeted test inputs that will exercise the identified insufficiently-tested components, thereby reducing overall test time while maintaining comprehensive coverage.
2Reliability
If data covering the entire combination is generated to test all components, then testing coverage improves, but the data volume becomes enormous and test time increases
Solution Approach 1:
Instead of uniformly testing all components with comprehensive data sets, the system applies local quality by identifying specific components that require testing based on their individual execution history characteristics. The test data generation is localized to target only those specific components or functions that have been insufficiently tested, rather than applying the same comprehensive testing approach to all components, thereby reducing overall data volume while maintaining adequate coverage.
Solution Approach 2:
The system changes parameters of test data based on the specific characteristics of insufficiently-tested components. By analyzing execution history to determine which components need testing and what types of data would effectively exercise them, the system dynamically adjusts test data parameters (such as data format, size, or content characteristics) to match the needs of specific target components, rather than using a fixed comprehensive data set for all testing scenarios.
Data Source
AI summary
A condition determination device includes an acquiring unit, a specifying unit, a classifying unit, and a condition determining unit. The acquiring unit acquires a total execution history, which is an execution count for each component included in a program, when a test is performed by supplying a plurality of input data to a target device which executes the program. The specifying unit specifies a shortage component of which the execution count indicated by the total execution history does not satisfy test criteria among components included in the program. The classifying unit classifies each of the input data into first data, which causes the target device to execute the shortage component, and second data, which does not cause the target device to execute the shortage component. The condition determining unit determines a condition of input data having a common characteristic with the first data.


