Virtual Machine Forking for Automated Software Bug Detection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The process of debugging software is hindered by the vast number of possible input combinations, making manual testing time-consuming and difficult, especially for applications with multiple input pages.

Innovation Solution

A method involving virtual machine forking to generate multiple test scenarios, applying inputs, recording outputs, and comparing them to 'happy path' outputs to identify potential bugs, utilizing crowdsourced inputs and advanced output analysis techniques.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If manual testing of all possible input combinations is performed, then complete bug detection coverage is achieved, but time consumption and testing difficulty increase significantly

Engineering Contradiction:
Improvebug detection coverageVSAvoidtesting time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the testing process by forking the virtual machine at different fork points to create multiple test scenarios. Each fork point represents a decision node where different input paths diverge. By segmenting the test execution into parallel forked scenarios, the system can efficiently explore multiple input combinations without manually testing each one sequentially, thus maintaining comprehensive bug detection coverage while significantly reducing testing time.

Inventive Principle:
Principle #1Segmentation

2Productivity

If the number of test inputs is reduced, then testing efficiency improves, but bug detection coverage may be compromised

Engineering Contradiction:
Improvetesting efficiencyVSAvoidbug detection coverage
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent creates copies of the virtual machine at each fork point to generate multiple test scenarios. Instead of manually creating and managing numerous test inputs, the system automatically copies the VM state and diverges along different input paths. This copying mechanism allows efficient exploration of reduced but strategically selected input sets while maintaining comprehensive bug detection coverage through automated scenario generation.

Inventive Principle:
Principle #26Copying

3Extent of automation

If automated testing with virtual machine forking is implemented, then testing efficiency and automation improve, but system complexity increases

Engineering Contradiction:
Improvetesting automationVSAvoidsystem complexity
Core Design Contradiction:
Extent of automationVSDevice complexity

Solution Approach 1:

The patent introduces an intermediary analysis layer that compares test outputs against expected outputs to automatically identify bugs. This intermediary comparison mechanism mediates between the complex automated forking process and the simple goal of bug detection. By inserting this output analysis intermediary, the system achieves high automation through virtual machine forking while managing complexity through automated comparison and bug identification, preventing the need for manual analysis of complex test scenarios.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS9959197B2Automated bug detection with virtual machine forking
Publication Date: 2018.05.01 VMWARE INC
  • US9959197B2 patent drawing
  • US9959197B2 patent drawing
  • US9959197B2 patent drawing

AI summary

Techniques for automated bug detection. A set of inputs are collected and a snapshotting feature is used to apply each input to a test application. Outputs from the test application are gathered and compared to determine whether the outputs are associated with bugs. Comparison can be done with one or more of many different techniques that quantify difference between outputs associated with test inputs and outputs associated with a “happy path input.” Outputs can be grouped together based on these quantifications and the groups can be used to identify outputs most likely to be associated with bugs. The output groups may also be used to group associated inputs to the set of inputs to be used for testing in the future. When a bug is identified, a report could be automatically generated that includes a scoring value as well as recorded output information and could be presented to a user.