Dynamic Mutation-Based Fuzzing for Context-Aware Test Generation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current automated software testing tools generate tests that lack realism and context-specificity, often appearing as machine-generated, which hinders their integration into existing test suites and reduces code coverage, leading to increased development time and cost.
Innovation Solution
A dynamic mutation-based fuzzing approach that uses both static and dynamic data to generate realistic, context-aware test values, simulating human-generated tests by modifying input values based on execution data and domain knowledge.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If automated tools generate tests using random or limited input values, then test generation speed is improved, but test quality and realism deteriorate
Solution Approach 1:
The system executes candidate tests and uses the execution results to dynamically update and refine the prioritized list of candidate input values. This feedback loop allows the system to learn from each test execution and improve subsequent test generation, balancing speed with quality by focusing on the most promising input values rather than exhaustive random testing
Solution Approach 2:
The system changes the parameters of input values dynamically based on execution data and domain knowledge. Instead of using fixed random values, the system modifies input parameters iteratively to generate more realistic and context-appropriate test values, improving test quality without sacrificing generation speed
2Productivity
If automated tools generate tests with machine-like characteristics, then test generation efficiency is improved, but ease of integration into existing test suites deteriorates
Solution Approach 1:
The system applies domain knowledge specific to the codebase being tested to generate input values that are locally appropriate for each context. By analyzing the specific domain and application area, the system generates tests that match the style and expectations of human developers in that particular context, improving integration compatibility while maintaining generation efficiency
3Reliability
If more unit tests are created to increase code coverage, then software quality protection is improved, but development time and cost increase
Solution Approach 1:
The system generates a prioritized list of candidate input values and focuses on generating tests for the most important cases first. By using heuristics and domain knowledge to identify the most critical test scenarios, the system achieves sufficient code coverage and quality protection without generating an excessive number of tests, thus reducing development time and cost
Data Source
AI summary
A computer-implemented method comprising obtaining a first candidate test associated with a testable component, wherein the first candidate test comprises an input having an input value; generating a second candidate test associated with the testable component by performing a dynamic mutation-based fuzzing of the first candidate test, wherein the second candidate test is based on the first candidate test and comprises a modified input value for the input based on data generated during an execution of the first candidate test or domain knowledge associated with the testable component; and creating a test for the testable component based on the first candidate test or the second candidate test.


