Automated Fuzzing for Modular Software Composition Testing
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
2Adaptability or versatility
If the code base is maintained with legacy code and heterogeneous modules, then adaptability is improved, but complexity of maintenance increases
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.
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.
3Productivity
If software is tested during use instead of before deployment, then development speed is improved, but reliability decreases due to untested software
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.
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.
Data Source
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.


