Branch Tracking Bits for Software Testing Coverage
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
3Quantity of substance
If tracking bits are stored in branch instructions, then memory requirements are reduced, but the complexity of branch instructions increases
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.
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.
Data Source
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.


