๐ฏ Learning Objectives
By the end of this lesson, you will:
- Explain the difference between static and dynamic testing
- Describe the Shift Left principle in your own words
- Explain why catching bugs early is dramatically cheaper
- Name at least 3 artifacts that can be statically tested
๐ The Big Idea
Here's a question: When does testing start?
If your answer is "when the build is deployed to staging" โ you're leaving your best bugs on the table. ๐
Testing starts the moment the first requirement is written.
๐ Static vs. Dynamic Testing
Dynamic Testing
Dynamic testing means executing the software. You run the app, click buttons, fill out forms, and observe what happens.
- โ Requires working code
- โ Finds runtime bugs
- โ Can only test what's already been built
Static Testing
Static testing means reviewing artifacts without running them. You read documents, analyze specs, inspect mockups.
- โ No running code needed
- โ Finds problems at the source
- โ Much cheaper to fix what you find
- โ Works on: requirements, specs, user stories, design files, test plans, code (in code review)
๐ก Key insight: Static testing is testing the plan, not the product.
โฌ ๏ธ The Shift Left Principle
Imagine a timeline of a project:
[Requirements] โ [Design] โ [Development] โ [Testing] โ [Release]
Traditional QA sits near the right side โ testing after development.
Shift Left means moving QA activities toward the left โ earlier in the process. The earlier you find a problem, the cheaper it is to fix.
The Cost of Bugs (A Classic Rule of Thumb)
| When found | Relative cost to fix |
|---|---|
| In a requirement document | 1x |
| In a design mockup | 5x |
| During development | 10x |
| During QA testing | 25x |
| After release in production | 100x |
A bug found in a spec is fixed with one comment. A bug found in production requires a hotfix, a root-cause analysis, customer communication, and potentially a post-mortem.
๐ ๏ธ What Can Be Statically Tested?
Almost any project artifact:
- ๐ Requirements documents (PRD, BRD, Tech Specs)
- ๐ User Stories and Acceptance Criteria
- ๐จ Design mockups (Figma, Adobe XD, Sketch)
- ๐งช Test plans and test cases (yes, you can review test plans!)
- ๐ป Source code (code reviews are static testing)
- ๐ User documentation (guides, FAQ, release notes)
๐ Real-World Example
Spec says: "The system shall process payments quickly."
Static test question: What does "quickly" mean? 1 second? 10 seconds? 60 seconds?
This isn't a testable requirement. With a static review comment, you catch this ambiguity before a developer builds "quickly" however they interpret it โ and before you spend three days testing something that can't be objectively passed or failed.
๐ก Pro Tips
๐ก Tip 1: Before your next sprint, read the upcoming user stories and make a list of questions. Your developers will thank you for clarifying before they start coding.
๐ก Tip 2: Static testing isn't about being the grammar police. It's about making sure everyone on the team has the same understanding of what needs to be built.
๐ก Tip 3: Document your findings as questions, not accusations. "What should happen if the user doesn't fill in the email field?" lands better than "This spec is incomplete."
๐ Summary
- Static testing = reviewing artifacts without executing code
- Dynamic testing = running the software and observing behavior
- Shift Left = move QA activities earlier in the project lifecycle
- Early bugs cost dramatically less to fix than late bugs
- Static testing applies to requirements, designs, stories, test plans, and documentation
Up next: the types of project documents you'll encounter in the wild โ and what to look for in each one.