iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
To find bugs in software, test one feature against a clear expectation, try the normal workflow and a few sensible variations, then repeat any surprising result and report exactly what happened. You do not need to know the cause: a useful report gives the team enough evidence to reproduce and investigate the problem.
What counts as a bug?
In testing, a defect is a flaw that can cause a component or system not to perform a required function. A failure is the observable problem when the software runs; debugging is the development work of locating and fixing its cause. In everyday conversation, “bug” is a natural term for a suspected problem.
An unexpected result is evidence to investigate, not proof of a particular coding fault. The behavior could also involve the environment, configuration, or a misunderstanding of how the feature is intended to work. Describe what you observed and avoid guessing at the cause.
Testing is broader than clicking around. It includes preparation and evaluation, and some testing activities do not execute the software. A test provides evidence about the cases and conditions you exercised; even a passing result cannot establish that all defects are absent from a nontrivial product.
How to find bugs as a beginner
1. Choose one feature and define the expected result
Keep the target small: a page, feature, or end-to-end workflow. Look for a requirement, acceptance criterion, help page, or ordinary user expectation you can state plainly. For example: “After I submit a valid address, the form should show a confirmation.” Note the app or build and test environment if you know them.
2. Try the normal path first
Complete the main task as a user normally would. Pay attention to what appears on screen, whether data is saved, and whether the next step works. Compare the observed result with the expectation you wrote down. A clear mismatch is more useful than a vague impression that something “seems broken.”
3. Try reasonable variations
Once the normal path works—or you have recorded where it fails—probe cases users might encounter. These are useful heuristics, not a guarantee that you will find every defect:
Free tools Windows power users keep installed
One-click scans. No signup required.
- Boundaries: Try values near a limit, such as the shortest or longest permitted input, if the feature defines one.
- Missing or invalid input: Leave a required field blank or enter a value that the interface says it should reject.
- Repeated actions: Submit twice, refresh, or use a control again to see whether the outcome is sensible.
- Interrupted workflows: Navigate away, cancel, or briefly interrupt the task, then see what state remains.
- Feature combinations: Try a relevant sequence involving two features, such as editing an item and then filtering the list.
If a result surprises you, change one variable at a time when practical. That makes it easier to tell which condition is associated with the behavior.
4. Keep exploratory testing focused
Exploratory testing combines learning about the product, designing tests, executing them, and evaluating results. ISTQB’s CTFL v4.0 syllabus describes it this way: “In exploratory testing, tests are simultaneously designed, executed, and evaluated while the tester learns about the test object.” It can be especially useful when specifications are limited or unclear, and it complements more formal techniques.
Give an exploratory session a small objective, or charter, such as “check whether editing a saved profile preserves its required fields.” A time box and brief notes about actions and discoveries help keep the session focused and make a result easier to revisit.
Rank #4
5. Repeat the surprising result
Start from a clean state if you can, or describe the state you used. Repeat the same steps and record whether the result happens again. If it does not, note that too: intermittent behavior may depend on timing, account state, or environment. Separate the observation (“the save button remained disabled”) from an inference (“the validation code is broken”).
Recommended Free Tools
Choosing a testing approach
These approaches can be combined. Which one to emphasize depends on the risk, information available, time, and whether the goal is discovery or consistent coverage.
Best Value
| Approach | Useful when | Trade-off |
|---|---|---|
| Exploratory testing | Requirements are unclear or limited, or you need to learn a feature quickly. | Flexible and discovery-oriented; a charter and notes help keep it focused and repeatable. |
| Checklist-based testing | A known set of conditions needs to be revisited consistently. | Provides prompts and structure; stale or overly broad checklist items can lose value. |
| More formal test design | Requirements and risks are understood and repeatable coverage matters. | More planned and traceable; preparation takes time, and it can miss unanticipated behavior if used alone. |
What to include in a useful bug report
A report should let another person understand and attempt the same scenario. OWASP BLT’s report workflow puts the goal plainly: “A good report helps maintainers reproduce the problem, evaluate impact, and decide the next action.” Use the receiving project’s required fields and approved reporting channel; teams may use their own definitions for severity and triage.
- Summary: A short, specific description of the observed problem.
- Target and context: The page or feature, app version or build, browser, operating system, account role, and network conditions when relevant and safe to share.
- Setup: Preconditions, including any account state or existing data needed to see the result.
- Steps: A numbered sequence of concrete actions. Name the page or control and include input values.
- Expected result: What you thought should happen, based on a requirement or reasonable user expectation.
- Actual result: What happened instead, in observable terms.
- Evidence: A screenshot, recording, or error text if it helps support the report.
For example, “The profile page is broken” is hard to act on. A clearer summary is “Saving a profile with the optional phone field blank shows an error.” The steps and context should then explain how to reach that state and what appeared, rather than claim a cause you have not established.
Review and submit the report safely
- Check the project’s reporting guidance and search for an existing report describing the same behavior.
- Review the steps and results for clarity; make sure expected and actual behavior are distinct.
- Remove credentials, access tokens, private data, and unrelated information from text and attachments.
- Submit through the project’s approved channel, then save the issue link and follow its status.
Security issues need extra care: follow the target project’s security disclosure instructions and do not test systems without authorization.
What a test can—and cannot—tell you
A passing test means the software behaved as expected under the conditions you tried. It does not establish that other inputs, environments, account states, or workflows will also work. Record the scope of a test accurately: “the checkout worked with this browser and this order” is stronger evidence than a broad claim that checkout is bug-free.
Beginners do not need a certification to start practicing these habits. For readers who want structured study, ISTQB provides a CTFL syllabus and sample-exam resources; its certification information is available at ISTQB’s official certification site. Certification is an optional learning path, not a prerequisite for reporting a reproducible software problem.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

