Skip to content
Bugwise
Menu
Tutorials

Traceability and Test Summary Reports

Learn how a requirements traceability matrix links stories, test cases, runs and bugs, how to use it to find coverage gaps and the impact of a change, and how to write status updates and an honest test summary report, with an RTM explorer for the FoodDash 2.0 release.

intermediate Mobile & web
Short on time? Switch to the quick version.

Thursday, 16:00. The FoodDash 2.0 run is closed. The product owner stops by: “So, can we ship tomorrow? And did anyone test the new courier tip? Marketing is announcing it on Monday.”

You open the run: 11 cases, 7 passed, 3 failed, 1 blocked. Nothing in there says “tip”. Was it covered by some other case? Or did nobody write one? Answering that in ten seconds instead of an hour is what traceability is for. Answering “can we ship?” honestly, in one page, is what the test summary report is for. This lesson covers both.

It builds on Test Runs and Test Management Tools, so if run, status and Blocked are new words to you, start there.

Two questions at the end of every cycle

Traceability

Did we test what we promised?

Every requirement linked to its test cases, their latest results and their bugs. Gaps become visible.

Reporting

What did we find, and what’s left?

Scope, results, open bugs, risks and a recommendation, short enough to be read before the release meeting.

The essentials

The traceability matrix

A requirements traceability matrix (RTM)Traceability matrixA table linking each requirement to the test cases that cover it.Open in glossary → is a table that links each requirementRequirementA statement of what the software must do or how well it must do it.Open in glossary → or user storyUser storyA short description of a feature from the user's point of view.Open in glossary → to the test cases that check it, and in practice also to the latest run results and the bugs found:

RequirementTest casesLatest resultBugs
FD-104 Coupon rulesC202FailedFD-242
FD-105 Tip the couriernone––
FD-106 Pay with a saved cardC301Blocked–

Test management tools can build this for you from the links; a spreadsheet works too.

Forward and backward

  • Forward (requirement → tests): is every requirement tested? Finds coverage gaps, like FD-105 above.
  • Backward (test or bug → requirement): why does this test exist, and which story does this bug hurt? Finds orphan tests and helps prioritize bugs.

Impact analysis

When a requirement changes, the matrix shows which cases and bugs are linked to it, so you know what to update and re-run. It shows direct links only, so still think about what else depends on the change. See impact analysisImpact analysisWorking out which parts of a product a change could affect, to decide what to retest.Open in glossary →.

Status updates and the summary report

During the cycle, send a short daily or weekly update: progress, blockers, the important new bugs, what you need. At the end, write a test summary reportTest summary reportA report at the end of testing that summarizes what was tested, results, open bugs, risks and a recommendation.Open in glossary → with:

  1. Scope: release, build, environments, dates.
  2. What was tested, and what wasn’t (and why).
  3. Results: executed, passed, failed, blocked.
  4. Open bugs by severity, with the user impact of the worst ones.
  5. Risks.
  6. Recommendation: go, no-go, or go with conditions. The product owner decides.

Numbers that mislead

“92% passed” sounds great until you learn the 8% are all in checkout. Pair every number with what it means for users, and never use counts to compare testers. More in Which quality metrics help, and which harm?.

Switch to Detailed at the top for the full method: building an RTM, coverage gaps, impact analysis, a complete FoodDash 2.0 report, templates and the metrics table.

What a traceability matrix is

A traceability matrixTraceability matrixA table linking each requirement to the test cases that cover it.Open in glossary → (RTM, requirements traceability matrix) is a map of links. In its simplest form it’s two columns: requirement and test cases. Most teams add the latest run result and the bugs, because that’s what people actually ask about.

Here’s the FoodDash 2.0 matrix after the build 412 iPhone run:

RequirementTest casesLatest resultBugs
FD-101 Sign in with emailC101, C1021 passed, 1 failedFD-241
FD-102 Sign in with Face IDC103Passed–
FD-103 Add and remove dishesC201, C203PassedFD-118 (closed)
FD-104 Coupon rulesC202FailedFD-242
FD-105 Tip the couriernone––
FD-106 Pay with a saved cardC301Blocked–
FD-107 Choose a delivery slotC302FailedFD-243
FD-108 Track the orderC401, C402Passed–
FD-109 Reorder a past ordernone––
FD-110 Edit profile detailsC501Passed–

In ten seconds you can answer the product owner: no, the courier tip (FD-105) has no tests. Neither does reorder. And card payment has a test, but it was blocked, so it’s not verified either.

Forward and backward traceability

Forward: requirement → tests → results

  • Is every requirement covered by at least one case?
  • Did those cases run on this build, and pass?
  • Finds coverage gaps: FD-105 and FD-109 have no cases.

Backward: bug → test → requirement

  • Which story does bug FD-242 hurt? (FD-104, coupons, money.)
  • Why does test C601 exist? It links to nothing: gift cards were cut.
  • Finds orphan tests and bugs found outside any case.

When a matrix supports both directions it’s called bidirectional. That’s the normal case in tools, where a link is visible from both ends.

Building an RTM, step by step

  1. Give every requirement an ID. Jira story keys are perfect (FD-104). If requirements live in a document, number them (REQ-07). No ID, no traceability.
  2. Link each test case to the requirement(s) it checks. Do it while writing the case, not later. One case can cover several requirements, and most requirements need several cases (positive, negative, edge).
  3. Run the cases and record statuses. The run supplies the “latest result” column.
  4. Link bugs to the failed case results (and in Jira, to the story).
  5. Generate or update the matrix from the tool, or with a spreadsheet lookup. Review it before every report.

Using the matrix

Finding coverage gaps

Read the matrix forward and look for four kinds of gaps:

  • No tests at all (FD-105, FD-109). Write cases, or state in the report that it’s untested.
  • Tests exist but didn’t run or were blocked (FD-106). Covered on paper, not verified.
  • Only failing tests (FD-104, FD-107). The requirement is not met yet.
  • Thin coverage: one happy-path case for a complex rule. A link doesn’t tell you how well something is tested. FD-104 with a single case doesn’t check expired codes, minimum order value or what happens after removing an item.

Impact analysis when a requirement changes

Product decides that from 2.1, a coupon needs a minimum order of €15. The matrix answers what is directly affected? in seconds:

  • Cases linked to FD-104: C202, which checks that the expired code SPRING5 is rejected, uses a €12 cart. After the change the code would be refused for the minimum order too, so the case no longer proves anything about expiry. Update its data in the repository and add a case for the new minimum before the next run.
  • Bugs linked through those cases: FD-242 (“Expired coupon SPRING5 is still accepted”). Still a bug, but its steps use the same €12 cart. Update them so developers reproduce the expiry problem, not the new rule.

Then think beyond the links. FD-109 (reorder) copies an old cart together with its coupon. Old orders under €15 would now be refused, so reorder is affected too, even though nothing links it to FD-104. The matrix gives you a starting point; impact analysisImpact analysisWorking out which parts of a product a change could affect, to decide what to retest.Open in glossary → still needs your head.

Status updates during the cycle

Between “run created” and “summary report”, people want to know where you are. A short, regular update beats a long one nobody reads. Post it at the same time every day (or week) in the same format:

FoodDash 2.0 · build 412 · day 3 of 5
Progress: 84/120 executed (70%). 71 passed, 9 failed, 4 blocked.
New since yesterday: FD-243 (Major) delivery slots offered after closing time.
Blocked: 4 card-payment cases, PayCo sandbox down until 15:00.
Need: a decision on FD-241 ('Remember me' ignored) by Wednesday.
On track for Thursday's summary: yes, if the sandbox is back today.

Keep the detail one click away (a link to the run and to the bug filter). For non-technical readers, translate: “some users can’t sign in on their phone” rather than “case-sensitive email comparison”. How do you present testing status to stakeholders? goes deeper.

The test summary report

A test summary reportTest summary reportA report at the end of testing that summarizes what was tested, results, open bugs, risks and a recommendation.Open in glossary → (also called a test closure or test completion report) closes a test cycle. It helps the team decide whether to release, and it records what was known at that moment. For an agile team it’s one page. For a regulated project it can be a formal document, but the content is the same.

SectionWhat goes inWatch out for
ScopeRelease, build, environments and devices, dates“Latest build” is not a build number.
Tested / not testedFeatures and requirements covered; what wasn’t tested and whyThe not-tested list is the most valuable part. Never leave it out.
ResultsExecuted, passed, failed, blocked, not runCounts with meaning, not counts alone.
Open bugsBy severitySeverityHow much damage a bug does to the product or the user.Open in glossary →, with the user impact of the worstA list of 40 bug titles is not a summary.
RisksWhat could still go wrong, how likely, how badInclude risks from untested areas.
RecommendationGo, no-go, or go with conditions, and whyYou recommend; the product owner decides.

Worked example: FoodDash 2.0

Notice what’s not in it: no “64% passed”, no “testing is complete”, no bug list copied from Jira. Every number is next to what it means.

A template you can copy

Test summary: <app> <version> (build <n>)
Scope: <environments / devices>, <dates>, <stories or features in scope>
Tested: <what was covered>, <executed / passed / failed / blocked>
Not tested: <what> – <why> – <plan or accepted risk>
Open bugs: <n Critical, n Major, n Minor>; worst: <key> – <user impact>
Risks: <what could still go wrong>
Recommendation: <go / no-go / go if ...> – decision by <who>
Links: <run>, <bug filter>, <traceability matrix>

Metrics that help, and metrics that mislead

Numbers belong in a report, but only with context. A useful rule: if a number could make a reader feel safer than they should, put the explanation right next to it.

MetricHelps when…Misleads when…
Pass rateShown per area, next to what failedUsed alone as “92% ready”
Requirement coverageIt points at untested storiesRead as “tested well”
Open bugs by severityIt comes with the user impactBugs are simply counted
Burndown of remaining casesUsed to spot blockers earlyTesters rush to make it look good
Bugs found per testerAlmost neverAlways: it rewards noise and punishes testers in stable areas

Teams that turn a number into a target get the number, not the quality. Read Which quality metrics do you find useful, and which can do more harm than good? for a deeper take, and entry and exit criteria for how numbers become agreed release rules.

Common mistakes

Practice: find the gaps

Label each FoodDash story by what the matrix tells you, then switch to the Backward view to trace bugs and tests back to their stories. Finish with the impact analysis at the bottom.

Traceability explorer: FoodDash 2.0

Ten user stories, the test run on build 412 (iPhone) and the bugs it produced. Where are the gaps?

Requirement → test cases → run result → bugs. Answers "is every requirement tested, and how did it go?"

  • FD-101 Sign in with email and password

    Tests:C101: PassedC102: Failed
    Bugs:FD-241: Major, Open
  • FD-102 Sign in with Face ID (iOS)

    Tests:C103: Passed
    Bugs:–
  • FD-103 Add and remove dishes in the cart

    Tests:C201: PassedC203: Passed
    Bugs:FD-118: Minor, Closed
  • FD-104 Coupon rules: valid and expired codes

    Tests:C202: Failed
    Bugs:FD-242: Major, Open
  • FD-105 Tip the courier at checkout

    Tests:none
    Bugs:–
  • FD-106 Pay with a saved card

    Tests:C301: Blocked
    Bugs:–
  • FD-107 Choose a delivery time slot

    Tests:C302: Failed
    Bugs:FD-243: Major, Open
  • FD-108 Track the order status

    Tests:C401: PassedC402: Passed
    Bugs:–
  • FD-109 Reorder a past order

    Tests:none
    Bugs:–
  • FD-110 Edit profile details

    Tests:C501: Passed
    Bugs:–
  • Passed
  • Failed
  • Blocked
  • FD-118 closed bug
0 / 10 labeled

Impact analysis

Product changes FD-104: from 2.1, a coupon needs a minimum order of €15. Which of these need attention?

Practice: fair or misleading?

Each sentence below comes from a draft summary report for the same run. Would you put your name under it?

Fair or misleading?

Sentences from draft summary reports for the FoodDash 2.0 run above (11 cases: 7 passed, 3 failed, 1 blocked). Would you sign each one?

  1. “7 of 11 test cases passed (64%), so the release is about two-thirds ready.”

  2. “All requirements in scope were tested.”

  3. “Paying with a saved card (FD-106) is not verified because the payment sandbox was down. It is the biggest open risk.”

  4. “No critical bugs were found, so the release is safe.”

  5. “Three Major bugs are open. FD-241 signs users out every time they restart the app, even with 'Remember me' on.”

0 / 5 judged

Before you send a summary report

Before you send a summary report

0 of 8 checked

Check your understanding

Quick quiz

0/6 answered · 0 correct

  1. 1.What does forward traceability help you find?

  2. 2.A test case in the repository is linked to no requirement. Which view shows it, and what do you do?

  3. 3.FD-106 'Pay with a saved card' has one test, and it was Blocked. How should the report describe FD-106?

  4. 4.Product changes the coupon rule. What does the matrix give you first?

  5. 5.Which sentence belongs in a good test summary report?

  6. 6.Why is 'bugs found per tester' a harmful metric?

Key takeaways

  • A requirements traceability matrix links requirements to test cases, run results and bugs. It’s a by-product of good linking habits, not an end-of-cycle chore.
  • Forward traceability finds untested requirements; backward traceability finds orphan tests and shows which story a bug hurts.
  • Use the matrix for coverage gaps (no tests, blocked, failing, thin) and as the starting point of impact analysis when a requirement changes.
  • Covered is not the same as tested well, and blocked is not tested.
  • A test summary report gives scope, what was and wasn’t tested, results, open bugs by severity, risks and a recommendation. You recommend; the product owner decides.
  • Every number needs its meaning next to it. Never use metrics to rank testers.

Finished this page?Nice work, this page is complete!

Mark it as done to track your progress. It's saved in this browser, no account needed.

Its review cards are now in Bites ⚡
Esc

Type to search the whole site.