Manual Testing Techniques
Manual testing means a person using the software, deliberately and critically, to find problems. It ranges from scripted test cases to free-form exploration, and it finds things automated checks do not think to look for.
Structured and exploratory
- In scripted (structured) testing, steps and expected results are written in advance, as a test case or checklist. This suits repeatable checks, such as a release smoke test, and handing work to someone else. It only finds what the script covers.
- In exploratory testing you learn the system, design tests and run them at the same time, guided by what you find. A common way to organise it is a session: a fixed time box (for example 45 minutes) and a short charter such as “explore the checkout with invalid payment data”. Take notes as you go.
Both have a place. Automate the stable, repetitive checks and spend human time on exploration. See Test Automation Principles.
Techniques for choosing inputs
- Equivalence partitions: group inputs that should behave the same (valid ages, negative ages, non-numeric) and try one from each group.
- Boundary values: bugs cluster at the edges, so test the limit, just below and just above (0, 1, max, max plus one).
- State and sequence: try actions in an unusual order, go back, refresh, repeat, double-click, or use two sessions.
- Error guessing: use experience to try empty fields, very long text, special characters, copy and paste, slow or lost network, expired sessions.
Habits for manual testing
- Understand the expected behaviour first. Read the story and acceptance criteria, and ask when they are unclear. See Requirements and User Stories.
- Test your own change before review, including the unhappy paths as well as the example you built it for.
- Write down what you did. Notes make a failure reproducible and show what has been covered.
- When something breaks, capture it properly. See Defect Reporting.
- Re-test the fix and the surroundings. A change can break neighbouring features, which is what regression testing looks for.
Try it
Take a feature you know, such as a login form or a search box. Set a 20-minute timer and explore it with the charter “find ways to make this misbehave”. Use at least one boundary value, one unusual character set and one out-of-order action. Write each finding as a one-line note, and turn the most serious one into a full bug report.
Common mistakes
- Testing only the example you built the feature for.
- Not writing down what you did, so failures cannot be reproduced.
- Skipping the boundary values where bugs cluster.
- Not re-testing neighbouring features after a fix.
Check yourself
- What is a charter in an exploratory session?
- Which values would you test at the boundary of an input range from 1 to 100?
- Why re-test the surroundings after a fix?