Compile-Time Strongly Typed API for UI Testing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Weakly typed application programming interfaces (APIs) in computer systems make it difficult to discover and interact with user interface components, leading to challenges in testing and maintaining applications, as static type checking is not performed during compile time.

Innovation Solution

An interface generator creates a strongly typed API at compile time by accessing metadata from user interface displays, allowing for static type checking and easier API discovery and interaction, which enhances testing and development processes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a weakly typed API is used for user interface components, then the system can be more flexible and easier to implement, but the API becomes difficult to discover and interact with during testing

Engineering Contradiction:
ImproveflexibilityVSAvoidAPI discoverability
Core Design Contradiction:
Adaptability or versatilityVSDifficulty of detecting and measuring

Solution Approach 1:

The system performs preliminary action by generating a strongly typed API representation during compile time, before the actual runtime execution. This advance preparation creates a discoverable interface structure that guides testing and interaction, while the underlying weakly typed system maintains its flexibility. The compile-time API serves as a preliminary blueprint that makes the system both flexible and discoverable.

Inventive Principle:
Principle #10Preliminary action

2Adaptability or versatility

If static type checking is not performed during compile time, then the system can be more flexible, but runtime type errors increase and reliability decreases

Engineering Contradiction:
ImproveflexibilityVSAvoidruntime type error reduction
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The system performs preliminary type checking and validation during the compile time phase, generating a strongly typed API representation that captures the interface structure in advance. This preliminary action catches type errors before runtime, improving reliability without sacrificing the flexibility of the weakly typed runtime system. The compile-time representation serves as a safety net while maintaining runtime adaptability.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If a strongly typed API is generated during compile time, then API discovery and interaction become easier, but the complexity of the build process increases

Engineering Contradiction:
ImproveAPI interaction easeVSAvoidbuild process complexity
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The system applies self-service by automatically generating the strongly typed API representation from the existing user interface metadata during compilation. Rather than requiring manual creation or complex configuration, the system serves itself by transforming the available metadata into a discoverable, strongly typed interface. This automation reduces build process complexity while improving API interaction ease.

Inventive Principle:
Principle #25Self-service

4Adaptability or versatility

If automated tests interact with user interface components through a generic interface, then the testing system can be more versatile, but the interface is difficult to discover

Engineering Contradiction:
Improvetesting versatilityVSAvoidinterface discoverability
Core Design Contradiction:
Adaptability or versatilityVSLoss of information

Solution Approach 1:

The system performs preliminary action by generating a strongly typed API representation that captures the structure and metadata of user interface components before testing begins. This advance preparation makes the interface discoverable and easier to interact with, while the testing system maintains its versatility through the generic interface approach. The compile-time representation preserves information that would otherwise be lost in generic interfaces.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10152308B2User interface display testing system
Publication Date: 2018.12.11 MICROSOFT TECHNOLOGY LICENSING LLC
  • US10152308B2 patent drawing
  • US10152308B2 patent drawing
  • US10152308B2 patent drawing

AI summary

A test interface generator accesses metadata defining a user interface display. The test interface generator generates a strongly typed application programming interface (API) for the user interface display, during compile time, based on the metadata defining the user interface display. A static type checker performs a static type check of each API during compilation of the application. A test system programmatically interacts with the user interface display through the strongly typed API.