Code Coverage Visualization for Software Integration Stability

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In software development, there is a need to evaluate newly developed code for compatibility and correctness before merging it with the main code branch, especially in complex projects where multiple teams are involved, to prevent integration issues and ensure seamless functionality.

Innovation Solution

A method and system for providing code coverage, which involves receiving new code and corresponding tests, evaluating the code using these tests, and generating a visual display of the results to indicate covered portions and test outcomes, ensuring that a predetermined threshold of code coverage is met before merging the new code into the master code branch.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If new code is merged into the master code branch without thorough testing, then productivity is improved by faster integration, but reliability deteriorates due to integration issues and compatibility problems

Engineering Contradiction:
Improvecode integration speedVSAvoidsoftware stability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system performs preliminary testing actions by automatically generating tests from code comments and executing them before code merge. This preliminary action identifies potential issues early, allowing developers to fix problems before integration, thus maintaining both productivity and reliability.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system provides feedback through automated test results and code coverage reports that indicate whether new code meets quality thresholds. This feedback loop enables developers to understand the impact of their changes and make informed decisions about merging, preventing reliability degradation.

Inventive Principle:
Principle #23Feedback

2Reliability

If comprehensive testing is performed on new code before merging, then reliability is improved by identifying issues early, but productivity deteriorates due to additional testing time and complexity

Engineering Contradiction:
Improvecode qualityVSAvoiddevelopment cycle time
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system enables self-service testing by automatically generating test cases from code comments and executing them without requiring manual test creation. This automation eliminates the time-consuming manual testing process while maintaining comprehensive code quality checks, thus improving reliability without significantly impacting productivity.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system allows flexible configuration of testing parameters such as code coverage thresholds and test generation options. Developers can adjust these parameters based on project needs, enabling comprehensive testing when necessary while allowing faster integration when code quality is already high, thus balancing reliability and productivity.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If manual code review and testing is performed by multiple teams, then reliability is improved through thorough evaluation, but device complexity increases due to coordination overhead and communication requirements

Engineering Contradiction:
Improvecode compatibilityVSAvoidprocess complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system acts as an intermediary by providing an automated testing platform that mediates between different development teams. Instead of teams directly coordinating complex manual testing processes, the system automatically generates and executes tests, simplifying the interaction between teams while maintaining thorough code compatibility evaluation.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system segments the testing process into automated, independent test cases that can be executed separately and aggregated. This segmentation allows different teams to work on different code modules independently while the system coordinates the overall testing and integration, reducing the complexity of inter-team coordination while maintaining comprehensive evaluation.

Inventive Principle:
Principle #1Segmentation

4Reliability

If code coverage thresholds are enforced before merging, then reliability is improved by ensuring sufficient testing, but productivity deteriorates due to additional evaluation steps

Engineering Contradiction:
Improvetest coverageVSAvoidmerge speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system performs code coverage evaluation as a preliminary action before the merge process. By automatically calculating coverage metrics and comparing them against thresholds before merging, the system ensures sufficient testing without adding post-merge evaluation steps, thus maintaining both reliability and productivity.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

When code coverage thresholds are met, the system allows rapid progression through the merge process by automatically approving the integration. This skipping of manual approval steps for adequately tested code maintains high merge speed while still enforcing quality standards, thus balancing reliability and productivity.

Inventive Principle:
Principle #21Skipping (Rushing through)

Data Source

PatentUS10691582B2Code coverage
Publication Date: 2020.06.23 SONY INTERACTIVE ENTERTAINMENT LLC
  • US10691582B2 patent drawing
  • US10691582B2 patent drawing
  • US10691582B2 patent drawing

AI summary

The present disclosure describes methods and systems directed towards providing code coverage during software development. Implementation of code coverage assist developers in visualizing what portions of new code being developed can be tested via available tests as well as evaluating those portions of new code. The testing of the new code in this manner allows developers to understand whether portions of the new code have been developed properly. When the new code is determined to be satisfactory, via the tests and coverage, the new code can be incorporated into the master code branch. By testing the new code before merging, interruptions and downtime associated with the master code branch can be minimized.