1Figuring out what the system must do in terms of requirements and behavior
Software Analysis
2Figuring out how the system will achieve its goals through architecture and interfaces
Software Design
3The tactical mechanism that translates analysis into design constraints
TDD Implementation
4The traditional lifecycle fallacy where analysts, architects, and developers work in isolation, inheriting unverified specs and leading to Architectural Drift
"Throw It Over the Wall" Lifecycle
5The framework that shifts analysis and design to Day Zero, translating abstract requirements into executable design contracts
Test-Driven Development (TDD)
6The TDD phase that involves writing a failing test to force complete understanding of the requirement and expose vague conditions
P1 (RED) / The Analysis Constraint
7The TDD phase that involves writing the simplest functional logic to pass the analysis constraint and establish a functional baseline
P2 (GREEN) / Deferring Architecture Safely
8The TDD phase that involves cleaning code structure and applying design principles without altering external behavior
P3 (REFACTOR) / Pure Software Design
9The testing technique that maps out every mathematical permutation of multiple interacting inputs to uncover hidden gaps
Matrix and Decision Table Testing / Exhaustive Associative Analysis
10The testing approach applied when an application’s response depends heavily on its historical context, validating events and actions
State Transition Testing
11The architectural strategy of explicitly asserting in automated tests that correct error types are thrown instead of the software crashing
Exception Assertions
12The practice of validating components in absolute isolation
Unit Testing
13The practice of verifying data transfer, communication interfaces between modules, and connections to real environments like databases
Integration Testing
14The integration strategy of verifying control layers first and substituting missing low-level modules with dummy codes
Top-Down Strategy
15Dummy codes used in Top-Down testing to simulate the behavior of an undeveloped lower-level module
Stubs
16The integration strategy of verifying primitive logic and hardware drivers first by relying on orchestrating programs
Bottom-Up Strategy
17Programs used in Bottom-Up testing to simulate a calling component
Drivers
18The anti-pattern of merging all software components at the very end of development and hoping for success
Big Bang Approach
19The infrastructure flaw that introduces unreliability, test conflicts, and false negatives in modern integration testing
Shared staging databases
20Lightweight tools leveraging Docker to launch ephemeral, real databases in system memory that are automatically destroyed after a test
Testcontainers
21The type of test double that is programmed with expectations and verifies that a specific method was called during a test
Mocks
22The type of test double that provides a working implementation but takes a shortcut that makes it unsuitable for production environments
Fakes
23The type of test double that simply records information about how it was called so it can be verified later
Spies
24The testing approach that focuses on the internal structure, design, and coding of the software
White-Box Testing
25The testing approach that focuses on the functional requirements of the software without looking at the internal code
Black-Box Testing
26The testing technique that divides input data into valid and invalid groups to reduce the number of redundant test cases
Equivalence Partitioning
27The testing technique that focuses on testing the extreme edges of input ranges where errors are most likely to occur
Boundary Value Analysis
28The type of testing that ensures recent code changes have not adversely affected existing, working features
Regression Testing
29The phase of testing that evaluates the software's compliance with business requirements and determines if it is ready for delivery
Acceptance Testing
30The metric that measures the percentage of application code lines executed by automated tests
Code Coverage