BTC TestStack · Use case

Code Coverage Analysis

Did I test all my code?

Code coverage

limiter.c

1int clamp(int v) {
2 if (v > 5)
3 return MAX;
4 return v;
5}
Statement
100%
Decision
100%
MC/DC
100%

Updated automatically in the background. No separate measurement run.

The challenge

Coverage, measured inefficiently.

Instrumentation-based coverage puts a tax on every part of the workflow. The number you need is never one click away — you pay for it in re-runs.

Run everything, just to measure

Instrumented code only reports what you exercise, so getting a metric means executing the entire test suite — even when you only care about one function.

Change one test, re-run them all

Every edit to a test invalidates the aggregate result. To trust the number again you re-execute the whole suite — the cost repeats on each iteration.

Then do it again on production code

Instrumentation changes the binary, so results on it don't count for the code you ship. Proving coverage on non-instrumented production code means executing everything a second time — double the work.

Integrated · Automated · Certified

Coverage is a result, not a task.

BTC TestStack calculates and updates coverage in the background whenever test cases get created, modified, or deleted. Coverage is calculated per subfunction and per subsystem, so the coverage of any subset you care about is one click away — no re-run, no separate reporting step.

01

Updated automatically

Coverage updated in the background. No instrumentation pass, no dedicated measurement run.

02

Per subfunction & subsystem

Results are resolved down to individual subfunctions and subsystems — not just a single number for the whole build.

03

Any subset, one click

Select a scope and read its coverage immediately. Because the data is already there, filtering never triggers another execution.

04

Every goal, traced to its tests

For each coverage goal you immediately see the list of test cases that cover it — no manual cross-referencing to work out which test hit which objective.

Four coverage areas

Everything you need to measure, in one place.

Structural metrics, robustness, domain checks and your own goals — the full range of coverage, side by side and always current.

Structural coverage

The full set of structural metrics required for functional-safety evidence, calculated together.

Statement (STM)Decision / branch (D)Condition (C)MC/DCFunction + function-callSwitch / caseRelational-operator
ISO 26262-6 · Tables 12 & 15
Unit-level statement, branch and MC/DC, plus integration-level function & call coverage.

Robustness goals

Runtime-error classes are treated as coverage goals: BTC TestStack either proves the code is robust against them, or generates the test that provokes the failure.

  • Division by zero
  • Downcast (lossy narrowing conversion)
  • Array access out of bounds
ISO 26262-6 · robustness testing
Supports freedom from runtime errors and robustness verification (Table 13).

Domain checks

Define or import the valid values and value ranges for each interface object. BTC TestStack then tracks coverage of those domains directly.

ISO 26262-6 · Table 10
Equivalence-class coverage & boundary-value analysis, tracked automatically.

User-defined coverage goals

An editor over all of your interface variables lets you express any goal as a boolean or mathematical expression — then measure whether your tests reach it.

ISO 26262 · project-specific objectives
Additional coverage objectives defined in your safety plan, beyond the standard tables.
Smart test generation

When coverage isn't yet complete, BTC TestStack closes the gap for you. Instead of guessing at inputs, a model-checking algorithm derives the smallest, shortest set of test cases that reaches 100% structural coverage.

It works with direct access to your inputs and calibrations — and where an objective can't be reached, it returns a mathematical proof that it is unreachable, so you can retire it as dead code instead of chasing it.

Random tools guess. Model checking proves.
model_check · generate
100%structural coverage reached
Proven
Generated test set · minimal
TC_01v = 4 → branch false
TC_02v = 6 → branch true
TC_03v = 5 → boundary
1 objective proven unreachable · flagged as dead code
Key benefits

What coverage analysis gives your team.

01

Always up to date

Background updates keep the number current — no separate measurement run to remember.

02

Coverage where you need it

Per-subfunction and per-subsystem results — any subset's coverage is one click away.

03

The full metric range

Structural, robustness, domain and user-defined goals — all in one report, not four tools.

04

Proves the unreachable

Objectives that can't be reached are proven unreachable and flagged as dead code — no wild-goose chases.

See 100% coverage on your own code.

An evaluation license includes a kick-off workshop with our engineers — set up on one of your real units, end to end.