Book 10
Testing & Quality
How teams check that code works and keeps working: kinds of tests, test doubles and the tools that catch mistakes early.
Contents
- 01A/B Testing1A/B testing is an experiment that shows two versions of a feature to random groups of real users and measures which one performs better on a chosen metric.
- 02Acceptance Testing2Acceptance testing checks whether software meets the requirements agreed with its users or customers, so the team can decide if it is ready to release.
- 03Assertion3An assertion is a statement in code declaring that a condition must be true at that point, stopping the test or program with an error if it is false.
- 04Behavior-Driven Development4Behavior-driven development is a practice where developers, testers, and business people agree on plain-language examples that become automated tests.
- 05Black-Box Testing5Black-box testing checks software only through its inputs and outputs, against what it is supposed to do, without looking at or relying on the code inside.
- 06Contract Testing6Contract testing is a technique that checks whether two services agree on the requests and responses they exchange, without running both of them together.
- 07Cypress7Cypress is a JavaScript framework that runs end-to-end and component tests for web apps inside the browser, with automatic waiting and an interactive runner.
- 08End-to-End Test8An end-to-end test is an automated test that runs a complete user journey through the whole application, from the user interface to the database and back.
- 09Exploratory Testing9Exploratory testing is a hands-on approach in which a tester learns about the software, designs tests, and runs them at once, guided by what they discover.
- 10Flaky Test10A flaky test is an automated test that sometimes passes and sometimes fails without any change to the code, which makes its results hard to trust.
- 11Fuzz Testing11Fuzz testing is an automated technique that feeds a program huge numbers of unexpected or malformed inputs to find crashes, hangs, and security vulnerabilities.
- 12Integration Test12An integration test is an automated test that checks whether several parts of a system, such as code, a database, and an API, work correctly together.
- 13Jest13Jest is a popular JavaScript testing framework that bundles a test runner, assertions, mocking, snapshots and code coverage in one package with little setup.
- 14Linting14Linting is the automated analysis of source code, without running it, to flag likely bugs, style problems, and suspicious patterns before the code ships.
- 15Load Testing15Load testing is a type of performance testing that simulates many users or requests at once to measure how a system behaves under expected traffic.
- 16Mocking16Mocking is a testing technique that replaces a real dependency, such as a database or API, with a fake you control so that code can be tested in isolation.
- 17Mutation Testing17Mutation testing measures the quality of a test suite by inserting small deliberate bugs into the code and checking whether the tests fail and catch each one.
- 18Performance Testing18Performance testing measures how fast, stable and scalable a system is under expected and extreme load, from response times to its breaking point.
- 19Playwright19Playwright is Microsoft's open-source framework for end-to-end testing and browser automation, driving Chromium, Firefox and WebKit through one API.
- 20Property-Based Testing20Property-based testing checks that a rule holds for many automatically generated inputs, instead of only for a handful of examples written by hand.
- 21Quality AssuranceQA21Quality assurance (QA) is the set of practices that ensure software meets its requirements and works reliably, aiming to prevent defects, not just find them.
- 22Regression Testing22Regression testing is the practice of re-running existing tests after a code change to make sure that features which used to work have not broken.
- 23Selenium23Selenium is an open-source suite of tools for automating web browsers, used mainly for end-to-end testing, with its WebDriver API available in many languages.
- 24Smoke Test24A smoke test is a quick, shallow check that the most important features of a build work at all, run before any time is spent on deeper testing.
- 25Snapshot Testing25Snapshot testing is a technique that saves the output of code to a file on the first run and fails later runs if the output no longer matches that copy.
- 26Static Analysis26Static analysis is the automated examination of source code without running it, to find bugs, security vulnerabilities, and quality problems early.
- 27Stress Testing27Stress testing pushes a system beyond its expected workload on purpose to find its breaking point and to check that it fails gracefully and recovers afterward.
- 28Test Automation28Test automation is using code to run tests and check their results, so the same checks repeat quickly and consistently on every change instead of by hand.
- 29Test Case29A test case is a check of one specific behavior: starting conditions, input or steps, and the expected result that shows if the software behaves correctly.
- 30Test Coverage30Test coverage is a metric that measures how much of a program's source code is executed when its automated tests run, usually shown as a percentage.
- 31Test Fixture31A test fixture is the known state a test needs before it runs, such as sample data or a configured object, plus the code that sets it up and tears it down.
- 32Test Pyramid32The test pyramid is a model for balancing automated tests: many fast unit tests, fewer integration tests, and only a few slow end-to-end tests at the top.
- 33Test Runner33A test runner is a tool that finds a project's automated tests, executes them, and reports which ones passed or failed, usually from a single command.
- 34Test-Driven Development34Test-driven development is a coding practice in which you write a failing test first, then write just enough code to pass it, and then clean up the design.
- 35Unit Test35A unit test is a small, automated check that verifies one function, method, or class behaves correctly in isolation from the rest of the program.
- 36White-Box Testing36White-box testing designs tests from knowledge of the code's internal structure, so that its statements, branches and paths are exercised and checked directly.