Branch Coverage - Georgia Tech - Software Development Process

Udacity
23 Feb 201504:18

Summary

TLDRThe video script discusses branch coverage, a software testing technique that aims to execute all branches in a program. It explains the test requirements and coverage measure, emphasizing that branches are the outgoing edges from decision points like if statements. Using a 'printSum' example, the script illustrates how test cases can achieve varying levels of branch coverage, from 25% to 100%. It highlights that 100% coverage doesn't guarantee defect-free code but increases the likelihood of finding issues. The concept of test criteria subsumption is introduced, showing that branch coverage is a stronger, yet more expensive, criterion than statement coverage.

Takeaways

  • 🌟 Branch coverage is a testing technique aimed at executing all branches in a program's control flow graph (CFG).
  • 📏 The test requirement for branch coverage is to cover all branches, which are the outgoing edges from decision points like if statements or switch cases.
  • 📈 The coverage measure for branch coverage is calculated as the ratio of executed branches to the total branches in the program.
  • 🔄 Branches are identified by decision points in the CFG that have more than one outgoing edge, representing different paths of execution.
  • 🔍 In the 'printSum' example, there are two decision points leading to a total of four branches, necessitating specific test cases to achieve full branch coverage.
  • 📉 Running existing test cases with 100% statement coverage only achieved 75% branch coverage, indicating a need for additional test cases targeting uncovered branches.
  • 🔑 A test case where both input parameters (A and B) are zero was identified as crucial for reaching 100% branch coverage by executing the remaining branch.
  • 🚫 Achieving 100% branch coverage does not guarantee the absence of bugs; it only increases the likelihood of finding issues through more thorough testing.
  • 📚 Test criteria subsumption is introduced as a concept where one testing criterion encompasses another, with branch coverage being stronger and more encompassing than statement coverage.
  • ⏏️ Achieving branch coverage is generally more expensive than statement coverage due to the need for a larger number of test cases to ensure all branches are executed.

Q & A

  • What is branch coverage in the context of software testing?

    -Branch coverage is a test requirement that aims to execute all branches in a program. A branch refers to the outgoing edges from a decision point, such as an if statement or a switch statement, and the goal is to ensure that all possible paths through the code are tested.

  • How is the coverage measure for branch coverage defined?

    -The coverage measure for branch coverage is defined as the ratio of the number of branches executed by the test cases to the total number of branches in the program.

  • What are the test requirements for achieving 100% branch coverage?

    -To achieve 100% branch coverage, all branches in the program must be executed at least once by the test cases, covering every possible decision path.

  • How does branch coverage relate to statement coverage?

    -Branch coverage is a stronger criterion than statement coverage. Achieving 100% branch coverage guarantees 100% statement coverage, but the reverse is not true. Branch coverage ensures that every decision point is tested, which inherently tests every statement.

  • What is the relationship between test criteria subsumption and branch coverage?

    -Test criteria subsumption occurs when one test criterion encompasses another. In this case, branch coverage subsumes statement coverage because satisfying branch coverage requirements automatically satisfies statement coverage requirements.

  • Why is achieving branch coverage considered more expensive than statement coverage?

    -Achieving branch coverage is more expensive because it often requires a larger number of test cases to ensure that all branches are executed, which can be more complex and time-consuming than simply covering all statements.

  • What is the significance of the term 'decision point' in the context of branch coverage?

    -A decision point refers to a location in the code where the flow can diverge, such as an if statement or a switch statement. Branch coverage requires that all outgoing edges (branches) from these decision points are executed.

  • Can you provide an example from the script where branch coverage was not initially achieved?

    -In the 'printSum' example, the initial set of test cases achieved 100% statement coverage but only 75% branch coverage, missing the branch where both if predicates are false.

  • What additional test case was needed to achieve 100% branch coverage in the 'printSum' example?

    -To achieve 100% branch coverage in the 'printSum' example, an additional test case was needed where both A and B are equal to 0, ensuring that the branch where both if predicates are false is executed.

  • What is the importance of understanding the difference between branch coverage and statement coverage?

    -Understanding the difference is crucial because it helps in designing more effective test cases. Branch coverage provides a more thorough testing approach, increasing the chances of finding potential issues in the code by ensuring all possible execution paths are tested.

  • Does achieving 100% branch coverage guarantee that there are no problems in the code?

    -No, achieving 100% branch coverage does not provide a guarantee that there are no problems in the code. It increases the likelihood of finding issues but does not ensure complete error detection.

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This

5.0 / 5 (0 votes)

Related Tags
Software TestingBranch CoverageTest RequirementsCoverage MeasureDecision PointsTest CasesCode AnalysisTesting StrategiesQuality AssuranceDebugging