Branch Tracking Bits for Software Testing Coverage

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software testing methodologies fail to ensure that all possible paths in software are tested, leading to potential defects being missed until deployment, which increases costs and reduces customer satisfaction.

Innovation Solution

A system and method using tracking bits in branch instructions, where a branch tracking unit sets bits to indicate whether a branch is taken or not, allowing for analysis to determine untested branches and ensuring all paths are exercised during testing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If exhaustive recording and reporting techniques are used to track code execution behaviors, then testing coverage is improved, but memory requirements and processing power increase significantly

Engineering Contradiction:
Improvetesting coverageVSAvoidmemory requirements
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent extracts only the essential tracking information (branch taken/not taken status) from the complex code execution behavior, eliminating the need to record and store complete execution traces. By taking out only the critical branch outcome information and storing it directly in the branch instruction itself, the system achieves comprehensive testing coverage without the memory overhead of recording every execution detail.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent makes the branch instruction serve multiple functions: it not only controls program flow but also stores testing coverage information through repurposed hint bits. This multi-functionality eliminates the need for separate tracking data structures, reducing memory requirements while maintaining complete branch execution tracking capability.

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

2Reliability

If exhaustive recording and reporting techniques are used to track code execution behaviors, then testing coverage is improved, but processing power requirements increase significantly

Engineering Contradiction:
Improvetesting coverageVSAvoidprocessing power
Core Design Contradiction:
ReliabilityVSPower

Solution Approach 1:

The patent extracts only the essential tracking information (branch taken/not taken status) from the complex code execution behavior, eliminating the need to record and store complete execution traces. By taking out only the critical branch outcome information and storing it directly in the branch instruction itself, the system achieves comprehensive testing coverage without the processing overhead of recording every execution detail.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The branch instruction itself performs the tracking function by incorporating dedicated bits within its structure. The instruction set automatically records branch outcomes without requiring external processing or separate tracking mechanisms, significantly reducing processing power requirements while maintaining complete branch execution tracking.

Inventive Principle:
Principle #25Self-service

3Quantity of substance

If tracking bits are stored in branch instructions, then memory requirements are reduced, but the complexity of branch instructions increases

Engineering Contradiction:
Improvememory requirementsVSAvoidbranch instruction complexity
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

The patent makes the branch instruction serve multiple functions: it not only controls program flow but also stores testing coverage information through repurposed hint bits. This multi-functionality eliminates the need for separate tracking data structures, reducing memory requirements while maintaining complete branch execution tracking capability.

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

Solution Approach 2:

The patent changes the parameter usage of existing hint bits within branch instructions, repurposing them from their original function (instruction pre-fetch hints) to testing coverage tracking. This parameter change allows the same hardware structure to serve dual purposes without adding physical complexity, only functional reconfiguration.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10275248B2Testing computer software using tracking bits
Publication Date: 2019.04.30 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10275248B2 patent drawing
  • US10275248B2 patent drawing
  • US10275248B2 patent drawing

AI summary

A system and method tests computer software using tracking bits in branch instructions to track portions of the software that have been tested. The tracking bits are bits of a branch programming instruction and may be repurposed hint bits used in the prior art to control pre-fetch of instructions. A branch tracking unit sets bits in a branch instruction of an application or program being tested. The branch tracing unit sets a first bit if a branch is taken and sets a second tracking bit if the branch is not taken. The modified program instructions can be analyzed after running the test inputs to determine if any branches in the software have not been exercised by the test inputs.