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.
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:
| Requirement | Test cases | Latest result | Bugs |
|---|---|---|---|
| FD-104 Coupon rules | C202 | Failed | FD-242 |
| FD-105 Tip the courier | none | – | – |
| FD-106 Pay with a saved card | C301 | Blocked | – |
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:
- Scope: release, build, environments, dates.
- What was tested, and what wasn’t (and why).
- Results: executed, passed, failed, blocked.
- Open bugs by severity, with the user impact of the worst ones.
- Risks.
- 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:
| Requirement | Test cases | Latest result | Bugs |
|---|---|---|---|
| FD-101 Sign in with email | C101, C102 | 1 passed, 1 failed | FD-241 |
| FD-102 Sign in with Face ID | C103 | Passed | – |
| FD-103 Add and remove dishes | C201, C203 | Passed | FD-118 (closed) |
| FD-104 Coupon rules | C202 | Failed | FD-242 |
| FD-105 Tip the courier | none | – | – |
| FD-106 Pay with a saved card | C301 | Blocked | – |
| FD-107 Choose a delivery slot | C302 | Failed | FD-243 |
| FD-108 Track the order | C401, C402 | Passed | – |
| FD-109 Reorder a past order | none | – | – |
| FD-110 Edit profile details | C501 | Passed | – |
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
- 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.
- 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).
- Run the cases and record statuses. The run supplies the “latest result” column.
- Link bugs to the failed case results (and in Jira, to the story).
- 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.
| Section | What goes in | Watch out for |
|---|---|---|
| Scope | Release, build, environments and devices, dates | “Latest build” is not a build number. |
| Tested / not tested | Features and requirements covered; what wasn’t tested and why | The not-tested list is the most valuable part. Never leave it out. |
| Results | Executed, passed, failed, blocked, not run | Counts with meaning, not counts alone. |
| Open bugs | By severitySeverityHow much damage a bug does to the product or the user.Open in glossary →, with the user impact of the worst | A list of 40 bug titles is not a summary. |
| Risks | What could still go wrong, how likely, how bad | Include risks from untested areas. |
| Recommendation | Go, no-go, or go with conditions, and why | You 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.
| Metric | Helps when… | Misleads when… |
|---|---|---|
| Pass rate | Shown per area, next to what failed | Used alone as “92% ready” |
| Requirement coverage | It points at untested stories | Read as “tested well” |
| Open bugs by severity | It comes with the user impact | Bugs are simply counted |
| Burndown of remaining cases | Used to spot blockers early | Testers rush to make it look good |
| Bugs found per tester | Almost never | Always: 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: FailedBugs:FD-241: Major, OpenFD-102 Sign in with Face ID (iOS)
Tests:C103: PassedBugs:–FD-103 Add and remove dishes in the cart
Tests:C201: PassedC203: PassedBugs:FD-118: Minor, ClosedFD-104 Coupon rules: valid and expired codes
Tests:C202: FailedBugs:FD-242: Major, OpenFD-105 Tip the courier at checkout
Tests:noneBugs:–FD-106 Pay with a saved card
Tests:C301: BlockedBugs:–FD-107 Choose a delivery time slot
Tests:C302: FailedBugs:FD-243: Major, OpenFD-108 Track the order status
Tests:C401: PassedC402: PassedBugs:–FD-109 Reorder a past order
Tests:noneBugs:–FD-110 Edit profile details
Tests:C501: PassedBugs:–
- Passed
- Failed
- Blocked
- FD-118 closed bug
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?
“7 of 11 test cases passed (64%), so the release is about two-thirds ready.”
“All requirements in scope were tested.”
“Paying with a saved card (FD-106) is not verified because the payment sandbox was down. It is the biggest open risk.”
“No critical bugs were found, so the release is safe.”
“Three Major bugs are open. FD-241 signs users out every time they restart the app, even with 'Remember me' on.”
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.What does forward traceability help you find?
2.A test case in the repository is linked to no requirement. Which view shows it, and what do you do?
3.FD-106 'Pay with a saved card' has one test, and it was Blocked. How should the report describe FD-106?
4.Product changes the coupon rule. What does the matrix give you first?
5.Which sentence belongs in a good test summary report?
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 ⚡