Dynamic Mutation-Based Fuzzing for Context-Aware Test Generation

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improvetest generation speedVSAvoidtest quality
Core Design Contradiction:
ProductivityVSReliability

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

Inventive Principle:
Principle #23Feedback

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

Inventive Principle:
Principle #35Parameter changes

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

Engineering Contradiction:
Improvetest generation efficiencyVSAvoidintegration compatibility
Core Design Contradiction:
ProductivityVSAdaptability or versatility

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

Inventive Principle:
Principle #3Local quality

3Reliability

If more unit tests are created to increase code coverage, then software quality protection is improved, but development time and cost increase

Engineering Contradiction:
Improvesoftware quality protectionVSAvoiddevelopment time
Core Design Contradiction:
ReliabilityVSLoss of time

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

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS11442845B2Systems and methods for automatic test generation
Publication Date: 2022.09.13 DIFFBLUE LTD
  • US11442845B2 patent drawing
  • US11442845B2 patent drawing
  • US11442845B2 patent drawing

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.