| Vose Software

Industry: Engineering
Product: ModelRisk
Application: Quantifying the Statistical Power of a Proof-Test Qualification Program


A Zero-Failure Test on 20 Units Still Lets One Sub-Target Lot in Twenty Pass

A pressure-vessel supplier qualified each production lot the conventional way: proof-test 20 units at 1.25× design load, accept the lot if none fail. The contract required a demonstrated reliability of R ≥ 0.999 at design load. Passing the test felt like proving the target had been met. The reliability engineer asked the question the pass/fail rule cannot answer: of the lots that pass this test, how many are actually below 0.999? The Monte Carlo answer was 4.9% — about one passing lot in twenty is a sub-target lot that slipped through. Worse, the same test was rejecting 38% of genuinely good lots. The qualification program was simultaneously too weak to catch bad lots and too harsh on good ones.

This is not a statement about any single vessel's stress margin — it is a statement about the test program's statistical power. The team modelled the whole qualification scheme in ModelRisk: an uncertain population of lots, a proof test applied to each, and the gap between what the test demonstrates and what is actually true.

Demonstrated reliability distribution for lots that pass versus fail the proof test

The key realism is that the vendor ships a population of lots, each with its own true reliability — median strength wanders around 1.55× design load and the coefficient of variation around 12%, lot to lot. The histogram splits those lots by test outcome. Lots that pass have a mean true reliability of 0.99980; lots that fail average 0.99708. But the two groups overlap, and the overlap to the left of the 0.999 target is the consumer's risk: sub-target lots that passed anyway. With a zero-failure test on 20 units, that overlap is 4.9% of all passing lots.

How a proof test "demonstrates" reliability

A unit survives the proof test if its true strength exceeds the proof load — a Bernoulli outcome whose probability p = P(strength > proof load) is governed by the lot's (uncertain) strength distribution. The number of failures in a lot of N units is then Binomial(N, 1−p), and the lot is accepted under a zero-failure plan if that count is zero. The classic reliability-demonstration identity follows directly: for a zero-failure plan, the probability a marginal lot passes is p^N.

Each lot's true design-load reliability and its proof-pass probability are both derived from a LogNormal strength model whose median and CV are themselves drawn per lot. Modelling the lot quality as uncertain — rather than assuming every lot is the nominal "good" lot — is what makes consumer's and producer's risk meaningful quantities rather than zero by assumption.

Why a pass/fail verdict fails here

A single pass/fail outcome is one Bernoulli draw on top of an uncertain lot. It carries no statement of how discriminating the test is. A test can pass for two completely different reasons — the lot is genuinely strong, or the lot is marginal and 20 units happened not to find the weak one. The deterministic mindset ("it passed, therefore R ≥ 0.999") cannot separate them. Only by simulating across the population of lots, and tracking each lot's true reliability alongside its test outcome, do the two risks become visible:

  • Consumer's risk — a sub-target lot passes: 4.9%
  • Producer's risk — a genuinely good lot (R ≥ 0.999) fails: 38.3%

The 38% producer's risk is the finding that surprised the team: a 1.25× proof factor with a zero-failure rule is so demanding that more than a third of compliant lots get scrapped or re-tested. The test was expensive in exactly the way nobody had measured.

Sample size is the lever — and 20 units is not enough

Consumer's risk versus number of units proof-tested, for several true reliabilities

For a lot sitting just below target, consumer's risk falls as p^N. Sweeping the zero-failure sample size shows how slowly a marginal lot is caught:

True lot reliability Proof-pass p N for consumer's risk ≤ 10%
0.990 0.677 6
0.995 0.761 9
0.998 0.844 14

A lot at R = 0.998 — only a hair below the 0.999 target — needs 14 units just to push its pass probability under 10%, and far more to discriminate it sharply. The current N = 20 (dashed line) sits in the region where a marginally-bad lot still passes uncomfortably often, because the closer a bad lot is to the target, the harder it is to tell apart from a good one.

The operating-characteristic curve makes the discrimination explicit

Operating characteristic curves comparing N equals 20 and N equals 60 plans

The OC curve plots P(lot passes) against the lot's true reliability — the test's ability to tell good lots from bad. Comparing the current N = 20 plan with a proposed N = 60 plan:

True lot reliability P(pass) at N = 20 P(pass) at N = 60
0.9950 0.4% 0.0%
0.9990 9.6% 0.1%
0.9995 20.1% 0.8%

At N = 60 the curve drops far more steeply through the target: a lot at exactly 0.999 passes only 0.1% of the time instead of 9.6%, and a slightly-better 0.9995 lot passes 0.8% instead of 20%. Tripling the sample size turns a soft, ambiguous accept/reject boundary into a sharp one — at the cost of testing 40 more units per lot, a trade the simulation prices directly.

What drives consumer's risk

Tornado chart of drivers of consumer's risk

Ranking the program levers against the baseline 5% consumer's risk:

  • Proof factor is the strongest lever: dropping it from 1.25 to 1.15 raises consumer's risk +8 points, while a 1.40 factor cuts it ~5 points (12.7-point spread). A harder proof load discriminates better — but also drives producer's risk up.
  • Sample size (10 vs 60 units) moves consumer's risk a 9.8-point spread.
  • Acceptance number — allowing one failure instead of zero — adds about 5 points of consumer's risk, the predictable cost of a looser rule.
  • Lot quality drift (±3% on median strength) is a secondary effect at under 2 points.

What the model changed

  • Sample size raised from 20 to 40 units with the zero-failure rule retained — chosen from the OC curves as the point where consumer's risk at the target fell below 2% without the full cost of the 60-unit plan.
  • Proof factor held at 1.25 rather than increased, once the tornado showed a higher factor would cut consumer's risk but push the already-high 38% producer's risk further up — scrapping compliant lots is its own cost.
  • A re-test allowance added for first-time failures, after the producer's-risk number showed how many good lots the zero-failure rule was rejecting outright.
  • The qualification report rewritten to state demonstrated reliability with its consumer's risk — "R ≥ 0.999 demonstrated at a consumer's risk of 2%" — instead of a bare pass/fail, so the customer sees the confidence behind the verdict.

ModelRisk Functionality Used

  • Uncertain-lot population model with per-lot LogNormal strength (median ~1.55× design, CV ~12%), so the program is evaluated against the lots the vendor could actually ship rather than one nominal lot.
  • Binomial proof-test simulation drawing pass/fail counts as Binomial(N, 1−p) per lot and applying the zero-failure acceptance rule, yielding the 48.6% lot pass rate and the split between true and demonstrated reliability.
  • Consumer's- and producer's-risk tracking that pairs each lot's true reliability with its test outcome — surfacing the 4.9% bad-lot pass rate and the 38.3% good-lot rejection rate a pass/fail count cannot show.
  • Sample-size sweep evaluating consumer's risk as p^N across N, establishing that a marginal R = 0.998 lot needs 14 units just to fall under a 10% pass probability.
  • Operating-characteristic curves for the N = 20 and N = 60 plans, quantifying that the larger plan cuts the at-target pass probability from 9.6% to 0.1%.

A proof test that a lot passes does not prove the reliability target was met — it proves only that this many units survived this load this time. Monte Carlo is what converts "it passed" into "it passed, and here is the probability that a sub-target lot would have passed too" — which is the number a qualification program actually exists to control.