Automated Bug Identification via Code Coverage and Version Control

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Identifying and resolving software bugs in large and complex software systems is a costly and time-consuming process, often requiring significant human and machine resources, as QA teams spend a substantial portion of their efforts tracking down defects that can take hours or days to locate.

Innovation Solution

The BugInspector system uses file-level and line-level code coverage information to automatically trace-test failures and identify specific changes in the software code that cause product failures, narrowing down suspect changes before manual analysis, thereby shortening failure analysis time and integrating with existing source code management, testing, and code coverage analysis systems through a plugin framework.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If manual bug tracking and analysis is performed by QA teams, then thorough bug identification can be achieved, but the process becomes extremely time-consuming and resource-intensive

Engineering Contradiction:
Improvebug identification accuracyVSAvoidbug analysis time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent replaces manual mechanical analysis by QA teams with an automated computer-based system that uses code coverage data and version control information to identify buggy code. The system automatically correlates test failures with specific code changes, eliminating the need for manual tracking and analysis while maintaining high accuracy in bug identification.

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

Solution Approach 2:

The patent introduces code coverage information and version control metadata as intermediary data structures that bridge test failures and source code changes. These intermediaries automatically link failing tests to the specific code modifications that caused them, enabling rapid automated bug identification without manual intervention.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If comprehensive code analysis is performed on all changes, then all potential bugs can be identified, but the complexity and computational resources required increase significantly

Engineering Contradiction:
Improvesoftware qualityVSAvoidanalysis system complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent extracts only the relevant subset of code changes that are associated with failing tests using code coverage data. Instead of analyzing all code changes comprehensively, the system identifies and focuses only on the specific code modifications that directly caused the test failures, significantly reducing analysis complexity while maintaining reliability.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent segments the codebase into testable units and correlates each failing test with its corresponding code coverage information. This segmentation allows the system to isolate and analyze only the relevant code portions associated with failures, rather than performing comprehensive analysis on the entire codebase.

Inventive Principle:
Principle #1Segmentation

3Measurement precision

If detailed manual analysis of all code changes is performed, then precise bug location can be achieved, but the productivity and speed of bug resolution decrease

Engineering Contradiction:
Improvebug location precisionVSAvoidbug resolution speed
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent performs preliminary automated analysis by correlating code coverage data with version control information before manual review. This preliminary action pre-identifies the suspicious code changes that caused test failures, so when QA specialists do perform manual analysis, they are already focused on a small, pre-filtered set of candidates, dramatically improving bug resolution speed while maintaining precision.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7503037B2System and method for identifying bugs in software source code, using information from code coverage tools and source control tools to determine bugs introduced within a time or edit interval
Publication Date: 2009.03.10 ORACLE INT CORP
  • US7503037B2 patent drawing
  • US7503037B2 patent drawing
  • US7503037B2 patent drawing

AI summary

A system and method for using an automated process to identify bugs in software code. The system can be used to assist with the development of large and complex software products. File-level and/or line-level code coverage information is used to automatically trace-test failures to development changes within the product source code over a specified period of time. Information as to the health of a software product and the test criteria it passes or fails is compared at a first time, when the product may have satisfied all test criteria, with the health of the product at a second time when the same criteria may be failing. This information can then be used to narrow down and/or identify specific product failures to a particular change or set of changes in the software code, before any manual analysis need be done.