Automated Fuzzing for Modular Software Composition Testing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The complexity and large number of configurations in computer programs made up of multiple modules lead to inefficient testing, with existing methods requiring extensive manual effort and being unable to effectively cover all possible combinations, resulting in untested software that poses unforeseeable risks.

Innovation Solution

A method involving multiple test runs with fuzzing prior to compilation, where test inputs specify the composition of program modules, using a test metric like test coverage to select inputs, and adding successful inputs to subsequent runs to optimize testing efficiency, allowing for the identification of the most lightweight and error-free configurations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If all possible configurations of computer program modules are tested manually, then testing coverage is improved, but time consumption and effort increase enormously

Engineering Contradiction:
Improvetesting coverageVSAvoidtime consumption
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by performing fuzzing (random input generation) before compilation to systematically explore different module compositions. Test inputs specifying module compositions are generated in advance, and the fuzzer automatically selects and executes test cases before the actual compilation and testing phases, enabling comprehensive coverage without manual intervention for each configuration.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system implements self-service through automated feedback mechanisms where test results are automatically analyzed and used to generate improved test inputs for subsequent runs. The fuzzer learns from previous test outcomes and autonomously adjusts its testing strategy, adding successful test inputs to the base set for subsequent test runs, eliminating the need for manual test case creation and optimization.

Inventive Principle:
Principle #25Self-service

2Adaptability or versatility

If the code base is maintained with legacy code and heterogeneous modules, then adaptability is improved, but complexity of maintenance increases

Engineering Contradiction:
ImproveadaptabilityVSAvoidcomplexity of maintenance
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent applies segmentation by treating the code base as a collection of independent, interchangeable modules that can be individually tested and recombined. Each module is tested in isolation through systematic fuzzing of module compositions, allowing legacy code and heterogeneous modules to be maintained as separate, manageable units rather than a monolithic complex system.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system uses parameter changes by varying the composition parameters (module selections, configurations) systematically through fuzzing. Test inputs specify different parameter combinations of module compositions, enabling the system to adapt to and test various configurations of legacy and heterogeneous modules without manually managing the complexity of each specific combination.

Inventive Principle:
Principle #35Parameter changes

3Productivity

If software is tested during use instead of before deployment, then development speed is improved, but reliability decreases due to untested software

Engineering Contradiction:
Improvedevelopment speedVSAvoidsoftware reliability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent resolves this contradiction by performing preliminary testing through automated fuzzing before deployment. Test inputs are generated and executed in advance to identify potential errors and configuration issues, ensuring software reliability is validated before release while maintaining fast development cycles through automation rather than manual testing.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system replaces manual mechanical testing processes with automated computational fuzzing. The automated fuzzer generates and executes test cases systematically, substituting human effort with algorithmic processes that can rapidly explore configuration spaces and identify errors before deployment, maintaining both speed and reliability.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS20240012741A1Method for testing a computer program in multiple compositions made up of computer program modules
Publication Date: 2024.01.11 ROBERT BOSCH GMBH
  • US20240012741A1 patent drawing
  • US20240012741A1 patent drawing
  • US20240012741A1 patent drawing

AI summary

A method for testing a computer program in multiple compositions made up of computer program modules. The method includes carrying out multiple test runs. In each test run, a base test input is selected from a set of base test inputs that are predefined for the test run, each being a subset of computer program modules of a set of computer program modules of which the computer program may be made up, the base test input for a test input is changed as a function of the output of a random number generator. Program code of the computer program is compiled to form a version of the computer program in a composition made up of computer program modules that is given by the changed test input. The version of the computer program is tested.