Result Analyzer¶
The Result Analyzer performs statistical analysis across multiple test runs. It aggregates
expectation values from all reports in logs/pass/ and logs/fail/, computes statistics
(mean, standard deviation, Pp, Ppk), and renders histograms — helping you identify measurement
drift, process capability issues, and intermittent failures.
Hotkey: F5
Overview¶
While the Result Viewer shows a single run's pass/fail results, the Result Analyzer looks at trends over time. It answers questions like:
- Is a measurement drifting toward its limit?
- What is the process capability (Pp/Ppk) for a given expectation?
- Which tests have the lowest yield?
- How spread are the measured values?
Workflow¶
- Open the Result Analyzer (F5).
- Configure filters (optional) — narrow down to specific serials, UUTs, sequences, or tests.
- Click "Generate" — the analyzer scans all report files and computes statistics.
- Review results — browse the hierarchical view with statistics and histograms.
Filter Options¶
Before generating, you can narrow the analysis scope:
| Filter | Description |
|---|---|
| Serial Numbers | Only analyze reports with these serials. Empty = all. |
| Locations (UUTs) | Only analyze specific UUT positions. Empty = all. |
| Sequences | Only include these sequences. Empty = all. |
| Tests | Only include these tests. Empty = all. |
Combine All Locations¶
When checked (default): all UUT positions are combined into a single statistical pool.
When unchecked: statistics are computed per-UUT position separately. Useful when different UUT slots have different measurement characteristics (e.g., different routing, different tolerances).
Statistics Computed¶
Per Test / Per Sequence¶
| Statistic | Description |
|---|---|
| Total | Number of times this scope was executed |
| Passed | Number of times it passed |
| Pass % | Pass rate as a percentage |
| Enabled | How often it was enabled |
| Skipped | How often it was skipped (requirement unmet) |
| Average Duration | Mean execution time |
Per Expectation (Numeric Values)¶
For expectations with numeric matchers (ToBeInRange, ToBeInPercentage, ToBeNear,
ToBeGreater, ToBeLesser, etc.):
| Statistic | Description |
|---|---|
| Total | Number of samples |
| Passed | Number that passed the expectation |
| Pass % | Yield for this expectation |
| Min Observed | Lowest measured value |
| Max Observed | Highest measured value |
| Mean | Average of all measured values |
| Median | Middle value (50th percentile) |
| Mode | Most frequently observed value |
| Range | Max − Min observed |
| Standard Deviation | Spread of values around the mean (lower is better) |
| Pp | Process Performance: (USL − LSL) / (6σ) |
| Ppk | Process Performance Index: min((Mean − LSL) / 3σ, (USL − Mean) / 3σ) |
Where USL/LSL are the upper/lower specification limits from the expectation's matcher
parameters (e.g., min and max for ToBeInRange).
Interpreting Pp/Ppk
- Ppk ≥ 1.33 — process is capable with margin.
- 1.0 ≤ Ppk < 1.33 — process is capable but tight.
- Ppk < 1.0 — process is not capable; failures are expected.
- Ppk < 0 — the process mean is outside the specification limits.
Per Expectation (Exact Values)¶
For expectations with exact matchers (ToBeTrue, ToBeFalse, ToBeEqual, ToBeType):
| Statistic | Description |
|---|---|
| Observed Values | Each unique value seen, with its occurrence count |
| Pass rate | How often the expected value was observed |
Histogram¶
For numeric expectations, an interactive histogram is rendered using ImPlot:
- X axis — measured values
- Y axis — frequency (or density/cumulative, configurable)
- Vertical lines — mark the specification limits (min/max)
Histogram Settings¶
| Option | Description |
|---|---|
| Bin method | Sqrt, Sturges, Rice, Scott, or manual N bins |
| Horizontal | Flip the histogram orientation |
| Density | Normalize to probability density |
| Cumulative | Show cumulative distribution |
| No Outliers | Exclude outliers from bin calculation |
Saving and Loading Reports¶
Save¶
After generating an analysis, click "Save Report" to export the results as a JSON file. This preserves the statistical summary for archival or sharing.
Load¶
Click "Load Reports" to open previously saved analysis files. Multiple files can be loaded simultaneously for comparison.
Results Hierarchy¶
The analysis results are displayed in a tree structure:
Location: UUT1
├── Overall: 95.2% pass (142/150), avg 4.2s
├── Power On (sequence)
│ ├── 100% pass, avg 0.8s
│ ├── Supply Voltage (test)
│ │ ├── 100% pass, avg 0.3s
│ │ └── VCC (expectation)
│ │ ├── Stats: mean=3.31, σ=0.02, Ppk=1.8
│ │ └── [Histogram]
│ └── Current Draw (test)
│ └── ...
└── Functional (sequence)
└── ...
Tips¶
- Run the analyzer after a production batch. After testing 50+ boards, the statistics become meaningful. Running it on 2-3 boards won't give useful Pp/Ppk values.
- Watch for Ppk < 1.33. Even if everything is passing now, a low Ppk means you're at risk of future failures as the process drifts.
- Use filters for focused analysis. If a specific test is failing intermittently, filter to just that test to see its value distribution clearly.
- Compare locations. Uncheck "Combine all locations" to see if one UUT slot performs differently — this can indicate a fixture wiring issue.
- Save reports before fixture changes. Save an analysis before and after a fixture modification to compare process capability.
See Also¶
- Result Viewer — single-run pass/fail results
- Expectations — how matchers define specification limits
- Test Lifecycle — where report files are stored