Disposable Code Interface for Secure Software Testing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional software testing methods require additional coding for callback interactions and expose security vulnerabilities, making them complex and costly, and testing is not possible for released software versions.

Innovation Solution

Implementing a disposable code that acts as an interface between testing tools and software applications, intercepting communications and controlling test execution without modifying the software, allowing for secure and efficient testing of both test and release versions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If testing tools directly access the software through embedded APIs, then testing capability is improved, but security vulnerabilities are exposed

Engineering Contradiction:
Improvetesting capabilityVSAvoidsecurity vulnerabilities
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The patent introduces a test build-specific API layer that acts as an intermediary between testing tools and the release build software. This intermediary API enables testing capabilities while preventing direct access to the release build's internal structures, thus maintaining security. The test build includes additional testing-related APIs that are not present in the release build, allowing testers to interact with the software under test without exposing vulnerabilities.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The software system is segmented into two distinct builds: a release build for production and a test build for testing purposes. The test build contains all the functionality of the release build plus additional testing-related functionality and APIs. This segmentation allows testing operations to be performed on a version that is designed to accommodate testing tools, while the release build remains secure and unchanged.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If call-back interactions are coded into the software during development, then testing functionality is enabled, but device complexity increases

Engineering Contradiction:
Improvetesting functionalityVSAvoidcoding complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The testing functionality is extracted from the release build and placed into a separate test build. The call-back interactions and testing-related APIs are removed from the release build codebase and implemented only in the test build. This extraction eliminates the complexity of integrating testing mechanisms into the production code while still enabling comprehensive testing capabilities in the test build.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The system dynamically switches between release build and test build modes. The software can be configured at runtime to operate in either release mode or test mode, with the appropriate build being loaded accordingly. This dynamic approach allows the same software platform to serve both production and testing purposes without permanently embedding testing complexity into the release version.

Inventive Principle:
Principle #15Dynamics

3Adaptability or versatility

If a test build is created with additional testing functionality, then testing is enabled, but manufacturing cost increases

Engineering Contradiction:
Improvetesting capabilityVSAvoiddevelopment cost
Core Design Contradiction:
Adaptability or versatilityVSEase of manufacture

Solution Approach 1:

The test build is designed to be universal, serving both as a production-ready software version and as a testing platform. It contains all the functionality needed for production use plus additional testing capabilities. This multi-functionality eliminates the need for separate testbed systems and allows the same codebase to be used for both deployment and testing, reducing overall development costs.

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

Solution Approach 2:

The test build is created as a copy of the release build with additional testing functionality layered on top. Rather than developing entirely separate testing systems, the patent copies the core software functionality and adds testing-specific features to the copy. This approach reuses existing code and reduces the cost of creating testing infrastructure.

Inventive Principle:
Principle #26Copying

4Reliability

If released software versions are made immutable, then security is maintained, but testing becomes impossible

Engineering Contradiction:
ImprovesecurityVSAvoidtesting capability
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

Testing is performed in advance on a test build that contains all the functionality of the release build plus testing capabilities. The test build is prepared beforehand with embedded testing mechanisms and APIs. This preliminary testing action allows comprehensive validation of the software before it is deployed as the immutable release build, ensuring security is not compromised while enabling thorough testing.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The test build acts as an intermediary that allows testing operations to be performed without modifying the release build. All testing interactions occur through the test build's specialized APIs and mechanisms, leaving the release build unchanged and secure. The intermediary test build absorbs all testing-related modifications and interactions.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS11436131B2Systems and methods for software testing using a disposable code
Publication Date: 2022.09.06 CITRIX SYSTEMS INC
  • US11436131B2 patent drawing
  • US11436131B2 patent drawing
  • US11436131B2 patent drawing

AI summary

A method and system for testing a software application includes receiving and storing a software application for execution in a memory associated with a processor, detecting a first trigger event corresponding to the software application, and attempting to load a disposable code in the memory in response to detecting the trigger event. The method further includes, if the disposable code is successfully loaded in the memory, by the processor: executing the software application to pass a reference to the software application into the disposable code, and executing the disposable code to create an interface between the software application and one or more testing tools. The interface is configured to intercept communications to and from the software application during an execution of the software application.