Study Guide: Software Testing in 40 Flashcards — Unit, Integration and 30 More Test Types
Learn software testing with 40 flashcards: unit vs integration, the test pyramid, smoke vs sanity, load vs stress, code coverage, mutation testing and TDD.

Studying. But it's also a video game. 🎮
Flashcards, quizzes and games that make you actually remember.
Posted by
Related reading
Master Dynamic Programming with 30 Flashcards: Memoization, Knapsack, LCS and Bitmask DP
Master dynamic programming with deck AI3432: 30 flashcards on memoization, tabulation, knapsack, LCS, LIS, edit distance, Kadane, bitmask and digit DP.
Learn Big O Notation in German: 44 Flashcards on Landau-Notation, Schranken and Sorting Costs
German edition of the Big O flashcard deck: obere, untere and scharfe Schranke, Mergesort, Knoten and Kanten, plus three cards to fix before you study.
Learn Big O Notation in Spanish: 44 Flashcards on Notación Big O
Study Big O notation in Spanish with 44 flashcards: cota superior, inferior y ajustada, tiempo linearítmico, peor caso, plus three cards to fix first.
Deck MN2918 "Testing: Unit & Integration" has 40 cards, but only two of them are about unit and integration testing. The rest is a compact map of the whole software-testing vocabulary: 30+ testing types, the test pyramid, coverage metrics and a few classic principles. That's good news if you're preparing for a QA interview, an ISTQB-style exam or a CS course — as long as you study it as a taxonomy, not as a unit-testing tutorial.
Study this deck: Testing: Unit & Integration
1 / 10Software testing
Tap the card for the answer · swipe right if you knew it, left if not
Sample cards from the deck
| Front | Back |
|---|---|
| Unit testing | Isolated source code (components or modules) is tested to validate expected behavior |
| Integration testing | Multiple components, modules or services tested together, focusing on interactions and data exchange |
| 'test pyramid' approach | Most tests are unit tests, fewer integration tests, a small number of end-to-end tests |
| verification vs validation | "Have we built the software right?" vs "Have we built the right software?" |
| Three main types of code coverage | Function, statement and decision (True and False branches) coverage |
| Smoke testing | Minimal attempts to operate the software to see if basic problems prevent it from working at all |
| Stress testing | Reliability under rare workloads, to find the breaking point |
| Test oracle | The mechanism used to recognize a problem: specs, contracts, past versions, user expectations |
| According to Glenford Myers, what makes a test case successful? | One that detects an as-yet undiscovered error |
Everything the deck covers
Static vs dynamic testing, white-box, black-box and grey-box testing, regression, smoke and sanity testing, acceptance, alpha and beta testing, exploratory testing, TDD, functional vs non-functional testing, performance, load and stress testing, continuous testing, mutation testing, fault injection, fuzzing, API testing, component interface testing, compatibility, usability, security and installation testing, destructive testing, A/B testing, concurrency testing (deadlocks, race conditions), code coverage, test oracles, and the fundamental limit of testing: you can never test every combination of inputs.
Study it by axes, not alphabetically
Forty "X testing" cards blur together fast. Sort them into four questions before your first review:
- How much do you see of the code? white-box / grey-box / black-box.
- What level? unit → integration → system → acceptance (alpha, then beta).
- What quality? functional vs non-functional (performance → load → stress, security, usability, compatibility).
- When does it run? smoke and sanity (before deeper testing), regression (after changes), continuous (in the pipeline).
Then drill the look-alike pairs as pairs: smoke vs sanity (smoke = "does it even start?", sanity = "is this build worth testing further?"), load vs stress, verification vs validation, alpha vs beta.
Two cards to rewrite
- Mutation testing (card 26) and fault injection (card 35) share the same back. They're different: mutation testing makes small edits to the code (flip
>to>=) and checks whether your test suite fails — a surviving mutant reveals a weak test. Fault injection breaks the running system (failed disk, dropped network call) to test robustness. Fuzzing is closer to neither: it throws random or malformed inputs at the program. - TDD (card 17) misses the key point: in test-driven development you write the failing test before the code, then make it pass, then refactor (red → green → refactor).
Continuous testing only makes sense inside a pipeline — pair this deck with our CI/CD study guide, and for testable code design see Design Patterns and SOLID.
Ready to learn faster? 🚀
Join FLIP IT for free and turn studying into a game.