Quality·Field Manual
DARK
SE401 · Software Quality Assurance and Testing · Chapter 07

Working isn't the bar.
Quality is the bar.

A system that runs is not the same as a system that's good. This chapter uses one very expensive, very public disaster — the 2013 launch of HealthCare.gov — to show what happens when "we'll test it after we build it" meets 50,000 concurrent users. Then it gives you the vocabulary to actually measure quality: reliability metrics, the full spectrum of software qualities, the cost curve of a defect left too long, and the V-model of verification & validation that should have caught all of it.

A $2B case study
MTBF, MTTF, MTTR
V&V: right vs. right thing
4 levels of testing
39% CHAOS 2012 SUCCESSFUL Success 39% Challenged 43% Impaired 18%
§ 01 — FACTORS IN PROJECT SUCCESS & FAILURE

Software has a bad track record — and it's not a coincidence

Before the "how to fix it," the deck opens with "how bad is it," because the numbers explain why this course exists.

💥
Memory hook
"AT&T Broke the Switch, Ariane Blew the Fuse."
Named software crises to keep straight: 1990 AT&T long-distance network down 8+ hours (a missing break in a switch statement) · 1996 Ariane 5 rocket exploded 37s after liftoff · 2001 NYSE trading floor shut down over an hour · 2017 British Airways disrupted 75,000 passengers · 2020 Heathrow disruption, 100+ flights.
1995 CHAOS study (Standish Group)
16.2%
IT projects on-time & on-budget
31%+
IT projects canceled outright
$81B
cost of canceled U.S. projects
Most projects that do ship are still late, missing functionality, riddled with major defects, don't do what the customer wanted, and hard to maintain — "success" is a low bar even when it's hit.
CHAOS Report — the three outcomes
TypeDefinition2012
1 — SuccessfulOn-time, on-budget, all features/functions as specified39%
2 — ChallengedCompleted & operational, but over-budget, over-time, fewer features43%
3 — ImpairedCanceled at some point during development18%
Between 1992 and 2017, "completed on-time & within budget" nearly doubled (16% → 29%) and outright cancellations fell (31% → 19%) — real improvement, but over half of all projects are still late and over budget.
§ 02 — A CASE STUDY

The initial launch of HealthCare.gov (2013)

This is the deck's centerpiece: a real, government-scale system that failed publicly because of decisions any of the "quality" concepts below would have caught. Treat it as the worked example for the whole chapter.

🏛️
Memory hook
"Four Failures: Test, Requirements, Manage, Rules."
The postmortem groups the causes into four buckets — Testing was inadequate, Requirements kept rolling, Management expertise was in contracts not delivery, and government IT procurement Rules were outdated.
March 23, 2010 — March 2011

ACA signed; development contracts awarded

Affordable Care Act signed into law. HealthCare.gov: a healthcare exchange website — "one-stop shopping for health insurance." CBO forecast: 7 million users in year one. Contracts awarded September 2011 as no-bid, cost-plus deals to pre-certified private contractors — lead contractor CGI Group, with at least 47 companies involved including QSSI, Equifax, Serco, coordinated by CMS (Centers for Medicare and Medicaid Services). Total budget: $293 million.

2011 – Summer 2013

Evolving, rolling requirements

Regulations and policies were still in flux when contracts were signed and stayed in flux until summer 2013 — repeated delays to specs, repeated design changes. CGI didn't start coding until spring 2013. The team followed a "write-down-all-the-requirements-then-build-to-those-requirements" waterfall approach, never adopted agile, and committed to an all-or-nothing launch date anyway.

T-minus 2 weeks to T-minus 1 day

Inadequate testing, compressed to nothing

"This system just wasn't tested enough." — CMS. Full testing didn't begin until 2 weeks before launch. The final "pre-flight checklist" at T-1 week found 41 of 91 functions failing. No end-to-end test existed as late as T-4 days. Stress tests at T-1 day showed performance degrading with only 1,100 concurrent users — against an expected 50,000–60,000. Final top-to-bottom security tests were never finished. No integration test. No beta test.

October 1, 2013 — Launch

The site goes live and breaks immediately

Landing-page response time exceeded 8 seconds ("maddeningly long wait times"). Broken navigation UI. Availability around 43%, intermittent crashes. Incorrect and incomplete data returned to users. Per-page error rate around 6%. System capacity capped under 1,100 concurrent users. Enrollment completion rate under 30%.

The McKinsey "Red Team" assessment

Ideal process vs. what actually happened

McKinsey's own diagram contrasted the two: the ideal large-scale program has clear requirements, minimal third-party dependency, sequential requirements→design→build→test with iteration between phases, full end-to-end testing, and a limited/gradual initial launch. HealthCare.gov's actual characteristics: evolving requirements, multiple definitions of success, heavy dependency on external contractors, all phases "stacked" in parallel instead of sequential, insufficient time and scope for end-to-end testing, and launch at full volume with no gradual ramp-up.

Management & policy failures

Contracts over delivery, staffing over substance

"Management expertise is in getting contracts, not delivering projects." Project quality was sacrificed for appearances. Three months before launch, only 10 developers were working on a crucial part of the site, and only one was "at a high enough skill level." Coordination among the 47+ contractors was poor — unclear responsibilities, fragmented authority. Underlying policy problem: "the firms that typically get contracts are the firms that are good at getting contracts, not typically good at executing on them" — a symptom of outdated, cost-plus, no-bid government IT procurement.

The recovery, quarter by quarter
Dec 2013
Avail. >90%, error <1%, 400+ bug fixes
Apr 2014
CGI fired (Jan 10); 7.1M signed up
Feb 2015
11.4M sign-ups, smoother after outages
By December 2013, response time on the landing page was under 1 second (down from 8+), system capacity reached ~50,000 concurrent users, and completion rate hit ~80%. Sign-ups: 27,000 (Oct) → 110,000 (Nov) → 975,000 (Dec).
The final bill, and the lessons
Accenture took over as lead contractor in Jan 2014 ($175M). GAO (July 2014): cost through Feb 2014 was $834M; total estimated cost exceeded $2 billion. GAO: "CMS undertook the development of HealthCare.gov without effective planning or oversight practices," and found "increased and unnecessary risk of unauthorized access, use, disclosure, modification or loss" of data. CMS withheld only $267,000 in fees from CGI — 2% of the contract.
Lessons learned (straight from the slides): adopt software engineering best practices (agile, test early, QA throughout) · adopt management best practices (clear responsibility/accountability, performance metrics and progress tracking) · revamp government IT procurement — the current system is antiquated and has failed; bring government IT into the 21st century.
§ 03 — SOFTWARE RELIABILITY

Turning "it broke" into a number

HealthCare.gov's postmortem is full of numbers — 8s response time, 43% availability, 6% error rate. These are the formal metrics behind those numbers.

⏱️
Memory hook — the deck's own note: "Memorize, you'll solve"
"Fail, Fix, then Between."
MTTF (Mean Time To Failure) = average time a system runs before it fails. MTTR (Mean Time To Repair) = average time to get it back running. MTBF (Mean Time Between Failures) = the two chained together.
MTBF = MTTF + MTTR
Performance & scalability
TermDefinition
PerformanceAbility to complete requested functions/services within the time span users expect. E.g. average response time for a task.
ScalabilityCapacity of a system to handle increasing load or demand. E.g. # of concurrent users, transactions/sec, requests/sec.
HealthCare.gov failed both: response time >8s and scalability collapsing under 1,100 users (not the 50,000+ expected).
Availability & reliability, precisely
Availability = up time ⁄ total time
Reliability = # successful ops ⁄ # attempted ops
Availability = MTTF ⁄ (MTTF + MTTR) × 100%. Five-nines availability (99.999%) means just 5 minutes of downtime a year.

Error rate vs. completion rate

not the same as success

Reliability depends on the unit of operation you measure — and an operation may consist of multiple steps, so reliability ≠ completion rate.

Error rate (per page)

The fraction of pages (the unit of operation, here) that time out or fail. HealthCare.gov: ≈6% at launch, <1% by December.

Completion rate

The fraction of all attempted operations that eventually complete. Completion ≠ success — a user can finish an enrollment full of wrong data. HealthCare.gov: <30% at launch, ≈80% by December.

§ 04 — THE SPECTRUM OF SOFTWARE QUALITY

Quality isn't one thing — it's a whole checklist

"Quality" has competing definitions before it even gets to software: Crosby says zero defects, ISO says fitness to satisfy specified/implied needs, Juran says fitness for purpose, the dictionary just says "degree of excellence." Software breaks quality down into concrete, individually measurable attributes.

🧩
Memory hook
"CARPS-USR-MP" — external; "MRPI" — internal.
External (user-visible): Correctness, Availability, Reliability, Performance, Scalability, Usability, Security, Robustness, safety. Internal (developer-visible): Maintainability, Reusability, Portability, Interoperability, efficiency.

Correctness

Whether the system is consistent with its specification.

external
🟢

Availability

Fraction of time the system is up and usable.

external
🎯

Reliability

Probability the system operates without failure.

external

Performance

Completes requested functions within expected time.

external
📈

Scalability

Handles increasing load or demand.

external
🧮

Efficiency

Makes maximum, efficient use of system resources.

internal
🛡️

Safety

Prevents certain undesirable behaviors — hazards.

external
🙂

Usability

Users can use all features without special effort.

external
🔒

Security

Maintains integrity of operation and data.

external
🌪️

Robustness

Fails or degrades gracefully outside normal parameters.

external
🔧

Maintainability

Can be changed, enhanced, adapted, evolved over time.

internal
♻️

Reusability

Parts of the system can be reused in other projects.

internal
📦

Portability

Can be ported to a different platform or OS.

internal
🔗

Interoperability

Works together with other systems.

internal

Correctness vs. Reliability

expected behavior
Correctness

Whether a system is consistent with its specification. It's an all-or-nothing proposition — a program cannot be "mostly correct" or "30% correct." It is correct on all possible behaviors, or it is not correct. (Ironically, it's trivially easy to be "correct" against a very bad spec.) Correctness is a goal to aim for, but is rarely provably achieved.

Reliability

Software is reliable if the user can depend on it — formally, the probability the software operates as expected over a specified time interval, relative to its specification and a usage profile. Reliability is a statistical approximation to correctness: 100% reliable ≈ correct.

Safety vs. Robustness

exceptional behavior
Safety

The ability of a software system to prevent certain undesirable behaviors, i.e. hazards.

Robustness

The ability to fail or degrade gracefully outside normal operating parameters — acceptable (degraded) behavior under extreme conditions. Correctness and reliability assume normal operating conditions; software that's "correct" can still fail when those assumptions are violated — how it fails is what robustness measures.

Traffic light worked example: correctness/reliability = "let traffic pass according to the correct pattern and central scheduling." Robustness/safety = provide degraded function when possible: never signal conflicting greens; blinking red/yellow is better than no lights; no lights is better than conflicting greens.

How the four qualities overlap

Venn relationship

Reliable and Robust are two overlapping circles; Correct sits inside Reliable, Safe sits inside Robust.

RegionMeaning
Reliable, but not correctFailures occur — just rarely.
Robust, but not safeCatastrophic failures can still occur.
Correct, but not safe/robustThe specification itself is inadequate.
Safe, but not correctAnnoying (non-catastrophic) failures can occur.
§ 05 — SOFTWARE QUALITY, DEFINED

Conformance to customers' requirements

The working definition

from the slides

"Conformance to explicitly stated functional and performance requirements, explicitly documented development standards, and implicit characteristics that are expected of all professionally developed software." In the narrowest sense, quality is commonly recognized as the lack of "bugs" in the product — but too many functional defects means the basic requirement of providing the desired function isn't met either.

Why "lack of bugs" isn't enough on its own: correct operation is not sufficient by itself — performance, usability by the end-user, and the quality of the software specifications all matter too.
Two kinds of quality
Quality of designEncompasses requirements, specifications, and the design of the system.
Quality of conformanceFocused primarily on implementation — does the build match the design?
User satisfaction = compliant product + good quality + delivery within budget and schedule.
Cost of quality — three buckets
Prevention costsQuality planning, formal technical reviews, test equipment, training.
Internal failure costsRework, repair, failure mode analysis.
External failure costsComplaint resolution, product return & replacement, help-line support, warranty work.
On "exceeding customer expectations": the slides pose this as a trap — chasing ever-rising expectations rather than a fixed, testable set of requirements is exactly the kind of scope creep that helped sink HealthCare.gov's rolling, never-finalized requirements.
§ 06 — COST OF SOFTWARE DEFECTS

The earlier you catch it, the cheaper it is

This is the number that justifies "test early" as more than a slogan.

📉
Memory hook
"Ten Lines, One Bug."
Even experienced engineers inject roughly one defect for every 10 lines of code. Find/fix time ranges from ~3 minutes in code reviews, to 25 minutes in inspections, up to 1,400 minutes in system testing.

Cost-to-correct multiplier table

time introduced × time detected

A defect's cost depends on both when it was introduced and when it was detected. Fixing it in the same phase it was introduced costs "1×" — but let it slip further downstream and the multiplier explodes.

Introduced ↓ / Detected →SpecDesignCodeTestPost-release
Spec5–10×15×30–100×
Design10×20×30–100×
Code10×20–50×
Rule to memorize: the earlier a defect is discovered, the lower the cost of fixing it — this is why "test throughout," not "test at the end," is the whole point of the chapter.
Where defects are introduced vs. found
Introduced (%)Total
Specification / design70%
Code / unit test20%
Integration / system test10%
Detected (%)Total
Spec / design3.5%
Code / unit test16.5%
Integration / system test50.5%
Beta test9%
Post-release20.5%
Punchline: the majority of defects are introduced early (specification/design, 70%) but the majority are discovered late (integration/ system test onward, ~80%) — the exact gap HealthCare.gov's compressed T-2-week testing schedule made fatal.
Cost by development phase (where the money actually goes)
Maintenance — 67%
Integration — 8%
Unit Testing — 7%
Design — 6%
Specification — 5%
Coding — 5%
Requirements — 2%
Two-thirds of total lifecycle cost (67%) is spent on maintenance — after release. Every corner cut during requirements (2%) or specification (5%) shows up amplified, multiple times over, in that 67%.
§ 07 — SOFTWARE VERIFICATION AND VALIDATION (V&V)

Two questions that sound similar and aren't

🍽️
Memory hook
"Verification checks the recipe. Validation checks the taste."
Verification: "Are we building the software right?" — does it meet the requirements specification. Validation: "Are we building the right software?" — does it meet the user's real needs.
Verification

Does the system meet the requirements specification?

Checked internally against the spec document. Includes: testing (mostly), inspections, static analysis. Answers: "done correctly?" Test-level examples: unit test, integration test, automated testing.

Validation

Does the system meet the user's real needs?

Checked externally against actual requirements. Includes: usability testing, user feedback. Answers: "done the right thing?" Release-level examples: prototype release, customer release.

Where they meet

Actual Requirements → SW Specs → System. Validation runs against actual requirements at the front; verification runs against the SW specs feeding into the system. System test and qualification measures sit in the overlap — both a verification and a validation activity.

Testing inside V&V
Verification testingFinds defects by executing the program in a test or simulated environment. E.g. functional test, integration test.
Validation testingFinds defects by executing the program in a real environment or with real users. E.g. usability test, beta test.
HealthCare.gov, reread through V&V: it failed verification (41 of 91 functions failed the pre-flight checklist, no end-to-end test) and validation (no beta test — real users only found out the site didn't work on launch day).
§ 08 — SOFTWARE TESTING IN THE DEVELOPMENT LIFE CYCLE

Testing is not a phase. It's a lifestyle.

The chapter's closing argument: quality cannot be bolted on at the end — it results from a set of inter-dependent activities integrated throughout the process.

🏗️
Memory hook
"Units Integrate into Systems that get Accepted."
The four levels of granularity, in order, small to large: Unit (component/module) → Integration → System → Acceptance. Each level tests against a different reference document.

The Quality Process

a framework, not a checklist

A set of activities and responsibilities, focused primarily on ensuring adequate dependability, but also concerned with project schedule and product usability. It provides a framework for selecting and arranging activities and considering interactions/trade-offs with other important goals. For every development activity there is a corresponding testing activity, each level has objectives specific to that level, and test design should start as early as possible — applicable to both waterfall and agile development models.

The V-Model of Validation & Verification

what tests against what

Development moves down the left side of the V (Specs → Subsystem Design → Unit Specs → Components); testing climbs back up the right side, each level checked against its matching left-side document, until the whole thing is checked against the actual needs and constraints that started it.

Test levelChecked againstV&V
Unit TestUnit/Component SpecsVerification
Integration TestSubsystem Design/SpecsVerification
System TestSystem SpecificationsVerification
User Acceptance (Alpha, Beta)Actual Needs and ConstraintsValidation
Every arrow going back up also feeds a Review/Analysis loop into the specs one level down, and a final User Review of External Behavior runs the whole way across the bottom of the V.
Unit Testing

Testing of an individual software unit/module/component — a.k.a. module or component testing. Focus: functionality, correctness, accuracy of that one unit. Usually carried out by the developers of the unit. Basis: component specifications, detailed design and code.

Integration Testing

Exposes defects in the interfaces and the interactions between integrated sub-systems — focus is on the seams between modules, not the modules themselves. Usually carried out by the developers of the sub-systems involved. Basis: system design/architecture, subsystem & interface specification.

System ("end-to-end") Testing

Tests an integrated system to determine whether it meets the specification, in full — a.k.a. the end-to-end test. Verifies functional and non-functional requirements. Carried out by developers and independent testers. Basis: software requirement spec, functional spec. HealthCare.gov never ran this until 4 days before launch.

Regression Testing

Used whenever a large amount of testing is needed and small changes can affect many parts of the system. Compiler-development example: collect examples that exercise each part → add new examples whenever a bug is found → run the whole collection and capture output → repeat after every code change → compare against the baseline.

Acceptance Testing

the user's verdict

Formal testing with respect to user needs, requirements, and business processes, conducted to determine whether a system satisfies the acceptance criteria — the exit criteria a component or system must satisfy to be accepted by a user, customer, or other authorized entity. Focus: customer acceptance. Carried out by independent testers and the customers. Basis: system/user requirements, use cases, business processes, risk analysis.

Acceptance testing techniques
Random (statistical) test Alpha test Beta test

Random test: test cases selected randomly, possibly via a pseudo-random number generation algorithm, to match an operation/usage profile — not the same thing as ad hoc testing.

Alpha vs. Beta, side by side
Alpha testSimulated operational testing, performed by personnel acting as potential users/customers, carried out in a controlled environment, observed by the development organization.
Beta testOperational testing by real users in their own environment, performing actual tasks without interference or close monitoring. One form of acceptance testing.
HealthCare.gov skipped this entirely: "No integration test. No beta test." Real users became, by accident, the beta testers — on launch day, in production.
Extra memorization aid — decide your test level
IF testing one function/module aloneUnit test
IF testing how two+ modules talk to each otherIntegration test
IF testing the whole system against its written specSystem test
IF testing whether the system satisfies real user needsAcceptance test
IF a small change could ripple across many partsRegression test
IF using simulated users in a controlled settingAlpha test
IF using real users in their real environmentBeta test
§ 09 — CHEAT SHEET

The whole chapter, one table

ConceptDefinition / formulaWatch for
CHAOS outcomesSuccess 39% / Challenged 43% / Impaired 18% (2012)Impaired = canceled, not "all failures"
MTBFMTBF = MTTF + MTTRMTTF ≠ MTBF
Availabilityup time / total time = MTTF/(MTTF+MTTR) × 100%Not the same as reliability
Reliability# successful ops / # attempted ops≠ completion rate
CorrectnessConsistency with spec — all-or-nothingRarely provably achieved
Safety vs. RobustnessPrevent hazards vs. degrade gracefullyRobust ≠ safe
Verification"Building the software right" — vs. spec≠ validation
Validation"Building the right software" — vs. real needs≠ verification
Defect cost multiplier1× at origin phase → up to 100× post-releaseEarlier is always cheaper
Cost by phase67% of lifecycle cost is MaintenanceNot "coding"
Unit testvs. unit/component specsOne module only
Integration testvs. subsystem design/interface specThe seams, not the units
System testvs. system specification; "end-to-end"HealthCare.gov skipped this until T-4 days
Acceptance testvs. actual needs; alpha/beta/randomHealthCare.gov: no beta test
Alpha testSimulated users, controlled environment≠ beta test
Beta testReal users, real environment, no interference≠ alpha test
§ 10 — COMMON MISTAKES

Where students actually lose points

Eight confusable pairs the deck sets up almost on purpose — expect at least one of these on an exam.

1. Verification vs. Validation

✗ WRONG — "Verification checks that users like it; validation checks the spec."
✓ RIGHT — Verification = spec ("building it right"). Validation = real user needs ("building the right thing"). It's easy to swap them — anchor on the mnemonic phrase, not the words alone.

2. MTBF vs. MTTF

✗ WRONG — Treating MTBF and MTTF as interchangeable.
✓ RIGHT — MTTF is only the "up" time before failure. MTBF = MTTF + MTTR, i.e. it also counts the repair time. MTBF is the simple measure of reliability, not MTTF alone.

3. Correctness vs. Reliability

✗ WRONG — "A reliable program is a correct program."
✓ RIGHT — Correctness is absolute and binary (all-or-nothing vs. a spec). Reliability is a statistical, probabilistic approximation to correctness. 100% reliable ≈ correct — they converge only at the extreme.

4. Robustness vs. Safety

✗ WRONG — Assuming "robust" automatically means "safe."
✓ RIGHT — A system can be robust (degrades gracefully) but not safe — catastrophic failures can still occur. Safety specifically prevents hazards; robustness is broader graceful-degradation behavior.

5. Completion rate vs. Reliability/Success

✗ WRONG — "80% completion rate means the system is 80% reliable."
✓ RIGHT — Completion ≠ success. A user can complete an enrollment with incorrect data (HealthCare.gov's own reported issue). Reliability is about successful operations, not merely finished ones.

6. Quality of Design vs. Quality of Conformance

✗ WRONG — Using the two terms interchangeably.
✓ RIGHT — Quality of design covers requirements, specs, and design of the system. Quality of conformance is about implementation — did the build match the design?

7. Integration Testing vs. System Testing

✗ WRONG — Calling any test involving multiple components "system testing."
✓ RIGHT — Integration testing targets interfaces/interactions between specific sub-systems. System testing checks the fully integrated system against the whole specification — it's "end-to-end," a different scope entirely.

8. Alpha Testing vs. Beta Testing

✗ WRONG — "Both are done by real customers in the real world."
✓ RIGHT — Alpha is simulated: personnel acting as users, in a controlled environment, observed by the developers. Beta is real users, their own environment, no interference or close monitoring.
§ 11 — POP QUIZ

Click a question to reveal the answer

Self-check before the practice lab — no reload needed.

Short answer
What was the single biggest software-engineering failure in the HealthCare.gov launch?
Reveal
Inadequate testing. Full testing began only 2 weeks before launch, 41 of 91 functions failed the T-1-week checklist, no end-to-end test existed as late as T-4 days, stress tests showed collapse at 1,100 users (vs. 50,000+ expected), and there was no integration test and no beta test at all.
Formula
If MTTF = 480 hours and MTTR = 20 hours, what is MTBF, and what is availability?
Reveal
MTBF = MTTF + MTTR = 480 + 20 = 500 hours. Availability = MTTF/(MTTF+MTTR) × 100% = 480/500 × 100% = 96%.
Multiple choice
Which best defines Validation? (a) "Are we building the software right?" (b) "Are we building the right software?" (c) Checking code against unit specs (d) Checking interfaces between modules
Reveal
Answer: (b). Validation asks whether the system meets the user's real needs. (a) describes verification; (c) is unit testing; (d) is integration testing.
Short answer
Per the cost-multiplier table, a defect introduced during spec but not caught until post-release costs how much more to fix than if caught in spec?
Reveal
30–100× more expensive than fixing it right at the spec stage (the "1×" baseline).
Multiple choice
A team hires temp staff to pose as customers and test a new banking app in a controlled lab before release. This is: (a) Beta test (b) Alpha test (c) Regression test (d) Unit test
Reveal
Answer: (b) Alpha test — simulated operational testing, personnel acting as users, in a controlled environment, observed by the development organization.
Short answer
Name the three outcomes in the CHAOS Report classification, with their 2012 percentages.
Reveal
Successful (39%) — on-time, on-budget, full scope. Challenged (43%) — completed but over-budget/over-time/reduced scope. Impaired (18%) — canceled during development.
Short answer
Why can a system be "correct" and still fail catastrophically in production?
Reveal
Because correctness and reliability are contingent on normal operating conditions. Software that's correct with respect to its spec can still fail when the assumptions of its design are violated (bad input, hardware malfunction). Whether it fails gracefully is a matter of robustness, not correctness.
Multiple choice
67% of total software lifecycle cost typically goes to: (a) Coding (b) Requirements (c) Maintenance (d) Unit testing
Reveal
Answer: (c) Maintenance — 67%, dwarfing requirements (2%), specification (5%), design (6%), coding (5%), unit testing (7%), and integration (8%) combined.
§ 12 — PRACTICE LAB

Apply it to a scenario

Exam-shaped questions grounded directly in the chapter's HealthCare.gov case study and the V&V / metrics material.

1. A government contractor delivers a system that technically matches every line of a 2011-era requirements document, even though the regulations that document was based on were rewritten repeatedly through 2013. Users find the system doesn't do what they actually need today. Has the system passed verification, validation, both, or neither?
→ Passed verification, failed validation
Why: it's consistent with the (outdated) spec — verification passes. But it doesn't meet the user's real, current needs — validation fails. This is close to HealthCare.gov's actual rolling-requirements problem.
2. Stress tests one day before launch reveal the system degrades badly with only 1,100 simultaneous users, against an expected 50,000. Which quality attribute is failing?
→ Scalability
Why: scalability is the capacity of a system to handle increasing load or demand, measured directly in concurrent users — exactly what collapsed.
3. A system is up 90% of the time (availability), but of the operations users attempt while it's up, only 30% actually complete. Are availability and reliability/completion the same metric here? What's actually happening?
→ No — they measure different things
Why: availability is the fraction of time the system is up; completion/reliability is the fraction of attempted operations that succeed once you're using it. A system can be "up" and still fail most of the work users try to do on it — precisely HealthCare.gov's October 2013 state (43% availability, <30% completion).
4. A bug is introduced during the design phase and isn't caught until system testing. Roughly what cost multiplier applies, versus catching it during design itself?
→ 20×
Why: per the cost table, a defect introduced in design and detected in test costs about 20× what it would have cost to fix during design (the "1×" baseline for that row).
5. A team ships a feature nobody asked for that also crashes on edge-case input, but the crash displays a friendly error page instead of losing data. Classify: is this system correct? Robust? Safe?
→ Possibly not correct/complete; robust; likely safe
Why: shipping an unrequested feature suggests the spec (or its fulfillment) is questionable, so correctness is in doubt. But failing gracefully with a friendly error page — instead of crashing catastrophically or corrupting data — is the definition of robustness, and if no hazard occurred, it's also safe.