Topic 14

Static vs Dynamic: Finding Bugs Without Running Code

Levels & Types

Every technique in this chapter so far runs the software. But some of the cheapest bugs you'll ever catch are found with the product sitting completely still — by reading, reviewing, and questioning documents and code before anything executes. The industry splits all testing along this axis too: dynamic testing runs things; static testing examines them at rest. And here's the twist — you've already done static testing in this book, twice, without the name.

Blueprints explain why the still kind matters. Proofreading an architect's blueprint and stress-testing the finished building both find problems — but the blueprint reading catches the missing fire exit while it's a pencil line, years and millions cheaper than discovering it in a walkthrough of the built thing.

Dynamic Testing: Everything That Runs

Dynamic testing is the familiar kind: execute the product and observe. Every level from Topic 10, every smoke pass and regression run from Topic 13 — all dynamic, because the software is alive while you probe it. Dynamic testing's superpower is truth: whatever the documents claim, running code shows what actually happens. Its limit: it can only test what got built. A missing feature, an unhandled situation, a requirement nobody wrote — running the product can't reveal the absence of things.

Static Testing: Examining Artifacts at Rest

Static testing examines work products without executing them: requirements, user stories, designs, test cases, code read as text. The tools are human attention and good questions. When you dissected "the promo discount applies to long stays" in Chapter 2 — how long is long? what combines with what? — that was static testing of a requirement. When you asked in refinement whether a gift card can pay for part of a booking, that was static testing too. ISTQB is explicit on this: evaluating a work product is testing; execution is optional.

And this is where the absence-blindness of dynamic testing gets its cure: a review can notice what isn't there. No test run will ever fail because the story forgot to say what happens when Paylane is down — the scenario was never written, so no test was ever designed for it. A reviewer reading the story can ask "what if the payment provider is unreachable?" in five seconds. Reviews catch absent things; execution can't.

Two lanes to the same goal — what each alone can catch
Static — read it, question it
reviews · walkthroughs · analysis of documents · finds what's absent
Dynamic — run it, observe it
all test levels · smoke, regression, exploration · finds what misbehaves

Reviews: a Spectrum of Rigor

Most static testing happens as reviews, and reviews come in weights. An informal review is a colleague reading your work and commenting — no ceremony, high value per minute; most reviews in the wild are this. A walkthrough has the author present the work while others question it — Petra walking the team through the gift-card story in refinement is exactly one. A technical review brings qualified peers to examine the work against standards, with findings recorded. And a formal inspection — the heavyweight — has defined roles, entry criteria, checklists, and metrics; you'll meet it in regulated industries, rarely elsewhere. The pattern: rigor rises with cost, and teams pick the weight the stakes deserve — the same right-sizing logic you'll see again with documentation in Chapter 5.

Where does a junior tester fit? In refinement walkthroughs from day one — your questions there are static testing in its natural habitat. And soon, reviewing test cases: a fresh pair of eyes on a colleague's checks is the cheapest quality upgrade a QA team can buy itself.

Static Analysis: the Tool-Shaped Cousin

One more term, for map completeness. Static analysis is software that reads code without running it, hunting known trouble patterns — a variable used before it's set, a branch that can never execute, style violations. It lives in the developers' world, runs automatically in their tools, and no, you won't operate it — but you'll hear "the static analyzer flagged it" in standups, and now the sentence parses: a robot proofreader for code, catching pattern-shaped mistakes while humans catch meaning-shaped ones. The division of labor matters: tools catch patterns; only humans catch a requirement that contradicts another requirement.

The Fifteen-Minute Institution

Back at Fernway, your gift-card question from Chapter 2 has quietly become an institution. Nadia noticed that one refinement question deleted an entire bug lifecycle, did the arithmetic, and made it official: every sprint now starts with a fifteen-minute story review, and you bring the checklist — is every criterion yes-or-no answerable? Is there a quality expectation (the Chapter 3 lesson)? What happens when the third party fails? What's missing? Fifteen minutes of static testing per sprint, catching bugs at the price of a sentence each. It is, per minute, the highest-value testing Fernway does — and nothing ever runs.

Common Confusions
  • "Static testing is a developer activity." Static analysis (the tool) is developer-side; static testing is much broader — requirement and story reviews are core QA work requiring zero code. Your refinement questions are the genre's purest form.
  • "Reviews are meetings, not testing." By the industry's own definition, evaluating a work product is testing. A review that finds an ambiguous requirement found a defect — earlier and cheaper than any test run ever could.
  • "Static analysis makes human reviews unnecessary." Tools catch pattern-shaped mistakes; humans catch meaning-shaped ones — a story that contradicts another story, a missing failure scenario. No analyzer flags what was never written.
  • "If it can't fail a test run, it's not a real defect." The missing what-if-Paylane-is-down scenario is as real as any crash — it just can't fail a test that was never designed. Absence is exactly the defect class only static testing catches.
Why It Matters
  • Static testing is Principle 3 — early testing saves money — in its purest form: defects caught while they're still sentences in a document.
  • Story review is where a junior tester contributes visibly from week one, before knowing the product deeply — the questions transfer between products; the checklist travels with you.
  • "Static vs dynamic" and the review types are standard ISTQB interview material, and the Paylane-is-down example gives your answer a memorable spine.

Knowledge Check

What makes testing "static"?

  • The tests are run automatically instead of by hand
  • The work product is examined without being executed
  • The results never change between runs
  • It can only be applied to source code

Why can a review catch the missing "what if Paylane is down?" scenario when no test run ever could?

  • A test for an unwritten scenario was never designed, so nothing exists to fail
  • Reviewers are more experienced than test executors
  • Paylane's sandbox never fails, so the case can't be triggered
  • Dynamic testing is generally unreliable and misses most bugs

Petra presents the gift-card story to the team, who question it as she goes. Which review type is this?

  • An informal review
  • A walkthrough
  • A formal inspection
  • Static analysis

What do static analysis tools catch, and what do they leave to humans?

  • Tools catch requirement contradictions; humans catch code patterns
  • Tools catch known trouble patterns in code; humans catch meaning-level problems
  • Tools catch runtime crashes by executing the code safely
  • Tools catch everything eventually, making human review temporary

You got correct