Automated Test Input Generation via Domain Cost Constraints

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current software testing and verification processes are inefficient due to the manual identification and configuration of data structure elements, leading to time-consuming and costly exhaustive testing, especially when dealing with infinite or large data sets, and the inability to automate the generation of meaningful input data for testing computer programs.

Innovation Solution

A framework for automatically generating tests by defining data types, assigning costs, and configuring domains, which recursively builds trees and uses predicates to determine valid input parameters, reducing the search space through cost summation and data type limitations, and employing graphical user interfaces for domain configuration.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If exhaustive testing with infinite data sets is performed, then testing completeness is improved, but time consumption and cost increase significantly

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

Solution Approach 1:

The patent extracts only the essential and meaningful data from the infinite data set by defining constrained domains for each data type. Instead of testing all possible integers, it extracts a meaningful subset (e.g., Age: 1-100, Salary: 0-100000) that represents real-world scenarios, thereby reducing testing scope while maintaining effectiveness

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent changes the parameters of testing by introducing domain constraints and cost functions. It transforms the testing problem from exploring an infinite space to exploring a bounded space defined by domain minimums, maximums, and cost limits, making the testing process finite and manageable

Inventive Principle:
Principle #35Parameter changes

2Measurement precision

If manual identification and configuration of data structure elements is performed, then testing accuracy is improved, but productivity decreases

Engineering Contradiction:
Improvetesting accuracyVSAvoidtesting efficiency
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent implements self-service by enabling the testing system to automatically analyze program source code, identify data structure elements, and generate domain configurations without manual intervention. The system extracts type definitions, field names, and relationships directly from the code, eliminating the need for manual identification while maintaining accuracy

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent replaces the manual mechanical process of identifying and configuring data structures with an automated computational system. It uses program analysis algorithms to substitute human effort with machine-based code interpretation, thereby increasing productivity while preserving testing accuracy

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

3Reliability

If the complete set of integers is tested, then testing thoroughness is improved, but practical feasibility deteriorates

Engineering Contradiction:
Improvetesting thoroughnessVSAvoidpractical feasibility
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

The patent applies local quality by assigning different domain characteristics to different data types based on their specific requirements. Instead of using a uniform testing approach for all data, it tailors domain constraints to each data type (e.g., Age has 1-100 range, Salary has 0-100000 range, Boolean has true/false values), making testing both thorough and practical

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent uses partial action by testing only a representative subset of possible values rather than the complete set. It selects meaningful portions of the data space that are sufficient for validating program behavior without requiring exhaustive coverage of all theoretically possible inputs

Inventive Principle:
Principle #16Partial or excessive action

4Reliability

If thousands of data relationships are manually configured, then relationship coverage is improved, but device complexity increases

Engineering Contradiction:
Improverelationship coverageVSAvoidconfiguration complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent implements universality by creating a unified program analysis framework that automatically handles all data relationship configurations. The system uses a single automated mechanism to analyze code, extract relationships, and generate configurations for all data structures and their interconnections, eliminating the need for separate manual configuration processes

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS7444622B2Access driven filtering
Publication Date: 2008.10.28 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7444622B2 patent drawing
  • US7444622B2 patent drawing
  • US7444622B2 patent drawing

AI summary

A test domain configuration module generates graphical user interfaces for identifying information about desired tests such as data types and domain configurations, and collects information used by other modules to generate tests. The identified information may include, for example, an abstract syntax, a static semantic, max counts on instances of data types, or costs of field accesses or data types for max path costs or max expression costs. A test input generator, generates test input for the identified and configured data types. In one case, the generated test inputs are generated as tree data structures. A predicate determines whether a generated test input follows semantic conditions. A test input evaluator counts instances of data types in, sums paths through, or sums total costs of, the generated test inputs. A test acceptance module saves test inputs acceptable to the predicate and the test input evaluator.