Testing & QA
Making sure software does what it should, and finding out where it does not: how to plan and design tests, how to automate them at the right level, how to test performance, security and accessibility, and how teams keep quality high over time.
18 pages 146 glossary terms ISTQB CTFL
How to use this topic
Every programming language in this encyclopedia has its own page on testing tools, such as debugging and testing in Programming Concepts. This topic is about testing as a craft, independent of the language. The first five pages cover the basics: what testing is, test levels and strategy, designing test cases and reporting bugs. Pages 6 to 12 are about automated tests, with Python and pytest as the example language. Pages 13 to 15 cover performance, security and accessibility testing, and the last three the human side: exploratory testing, quality in agile teams and keeping a test suite healthy.
The pytest, coverage, mutation and property-based examples are real runs with their exact output (only run times differ per run). The load-test output was recorded with k6 against a small local test server. Browser-based tools such as Playwright and axe could not run on the test machine, so their output is marked illustrative.
Pages marked ISTQB CTFL cover the ISTQB Certified Tester Foundation Level syllabus (version 4.0). The tool tutorials and the topics that syllabus only names, such as performance, security and accessibility testing, are untagged.
Learning path
- 01What Is Software Testing?Why we test and what testing can and cannot prove: quality assurance, quality control and testing, errors, defects and failures, the seven testing principles, and the tester's mindset.
- 02Test Levels and Test TypesThe levels at which software is tested — unit, integration, system and acceptance — and the types of testing: functional and non-functional, regression, smoke and confirmation testing.
- 03Test Strategy and the Test PyramidDeciding what to test, how much and where: the test pyramid and its alternatives, risk-based testing, shift-left and shift-right, and a test strategy that fits the team.
- 04Test Design TechniquesChoosing test cases systematically instead of by gut feeling: equivalence partitioning, boundary value analysis, decision tables, state transition testing and pairwise testing.
- 05Test Cases and Bug ReportsWriting test cases others can run and bug reports developers can act on: preconditions, steps and expected results, severity and priority, reproduction steps, and the life of a defect.
- 06Unit Testing with pytestWriting and running unit tests in Python with pytest: test functions and assertions, fixtures, parametrized tests, testing exceptions, and reading a failure report.
- 07Test Doubles: Mocks, Stubs and FakesReplacing real dependencies in tests: dummies, stubs, spies, mocks and fakes, unittest.mock and monkeypatch, and why too many mocks make tests brittle.
- 08Test-Driven DevelopmentWriting the test first: the red-green-refactor cycle, small steps, a worked TDD session, behavior-driven development and Gherkin, and when TDD helps and when it does not.
- 09Integration and Contract TestingTesting how parts work together: databases in tests, test containers, API tests, consumer-driven contract tests, test data management and keeping integration tests fast.
- 10End-to-End and UI TestingTesting the whole system through its user interface: Playwright and Selenium, locators and page objects, waiting instead of sleeping, visual testing, and why end-to-end tests should be few.
- 11Code Coverage and Mutation TestingMeasuring how much testing you have: statement and branch coverage with coverage.py, why 100% coverage proves little, and mutation testing to check whether tests catch real changes.
- 12Property-Based TestingLetting the computer invent test cases: properties instead of examples, Hypothesis strategies, shrinking to the smallest failing case, and properties that are worth testing.
- 13Performance and Load TestingFinding out how a system behaves under load: load, stress, soak and spike tests, writing a k6 script, reading percentiles and throughput, and avoiding misleading results.
- 14Security TestingTesting for vulnerabilities as part of normal work: SAST, DAST and SCA, secret scanning, fuzzing, ZAP and the OWASP testing guide, and when to call in a penetration tester.
- 15Accessibility TestingChecking that everyone can use the software: WCAG 2.2 and the accessibility rules that build on it, automated checks with tools such as axe, keyboard and screen reader testing, and what automation cannot find.
- 16Exploratory and Manual TestingTesting with a thinking human: exploratory testing with charters and time boxes, session-based test management, heuristics, usability observations and when manual testing beats automation.
- 17Quality in Agile TeamsHow testing fits into agile work: the whole-team approach, the Definition of Done, acceptance criteria and the three amigos, testing in the sprint, quality metrics and the role of testers.
- 18Flaky Tests, Test Maintenance and Testing in ProductionKeeping a test suite healthy and testing after release: causes and fixes of flaky tests, quarantining, test smells, and testing in production with canaries, feature flags and synthetic monitoring.
Testing & QA glossary
Short definitions of the terms used in this topic. The full glossary covers every topic.