- Equivalence partitioning and boundary values
- Equivalence partitioning groups inputs the system treats the same, so one representative per group is enough. Boundary value analysis tests at and around the edges, for example ages 17, 18, 65 and 66 for a range of 18 to 65. Do not forget invalid partitions such as empty strings, negative numbers, Unicode and overly long values.
- Decision tables and pairwise
- A decision table lists combinations of conditions and the resulting actions, ideal for discount rules or permission logic with many branches. When combinations explode, pairwise testing picks a subset that covers every pair of values, cutting case count sharply while still catching most two-parameter interaction bugs.
- State transition testing
- Draw a state diagram for objects with a lifecycle, such as an order (draft, paid, shipped, cancelled), then test both valid and invalid transitions. Bugs often hide in forbidden transitions the system still allows, like cancelling a delivered order or paying twice.
- Exploratory testing with charters
- Exploratory testing is simultaneous learning, test design and execution, structured rather than random clicking. A charter in Elisabeth Hendrickson's template reads: explore area X, with resources Y, to discover information Z. Session-based test management timeboxes each session to 60 to 90 minutes and ends with notes, bugs and open questions.
- Bug reports developers want to read
- A good bug report has a title naming symptom and location, minimal reproduction steps, actual versus expected result, environment (browser, build, test account) and evidence such as a screenshot, video, HAR or trace ID. Keep severity (technical impact) separate from priority (business order). One bug per report.