Manual Testing

Manual Testing Tutorial for Beginners

Learn manual testing step by step with beginner-friendly QA examples, test case ideas, bug reporting tips, and a practical testing workflow.

Manual testing is the process of checking software by using it like a real user, comparing its behavior with requirements, and documenting problems without relying on automated scripts for the main execution. It combines planned checks with human observation, investigation, and judgment.

This tutorial gives QA beginners a repeatable workflow they can use on a login page, checkout, profile form, or almost any web feature. You will learn how to read a requirement, identify risks, prepare test data, write useful test cases, execute them, report bugs, and decide what should later become regression automation.

If terms such as expected result, regression, and test level are new, first read what software testing is. You can still follow this tutorial with no coding experience.

What Is Manual Testing?

In manual testing, a person performs the test actions and evaluates the outcome. The tester may click through a browser, use a mobile app, inspect browser developer tools, query a database, or send a request in an API client. "Manual" describes how the check is executed; it does not mean careless, undocumented, or limited to the user interface.

A useful manual test has four parts:

  1. A condition: the application state, user role, environment, and test data.
  2. An action: what the tester does.
  3. An oracle: the requirement or other source used to decide what should happen.
  4. An observation: the actual result and any evidence needed to evaluate it.

For example: given an active account with five failed login attempts, when the user submits the correct password, the documented account-lock rule says access should remain blocked. If the dashboard opens instead, expected and actual results differ in a security-relevant way.

Manual testing is strongest when a human needs to adapt. A tester can notice confusing copy, follow an unexpected state, vary inputs, ask a product question, or investigate a console error that was not part of a predefined script.

When QA Engineers Use Manual Testing

Teams commonly choose manual execution for:

  • New features. Behavior and design may still be changing, so exploration produces faster learning than maintaining scripts.
  • Exploratory testing. The tester designs and executes tests at the same time, using each observation to guide the next check.
  • Usability and accessibility reviews. Human judgment helps evaluate clarity, feedback, navigation, focus, and recovery.
  • Unclear requirements. Manual investigation can expose gaps before the team encodes assumptions in automation.
  • Bug reproduction. A tester varies environments, accounts, data, and actions to isolate the failure.
  • One-time edge cases. Some scenarios matter enough to check but are too rare or expensive to automate.
  • Pre-automation validation. A tester learns the stable behavior, data needs, and failure signals before writing code.
  • Visual and cross-device checks. A person can quickly inspect layout, clipping, content, and interaction differences.

Manual testing remains necessary even on highly automated teams. Automation repeats known expectations. People discover new risks, interpret ambiguous behavior, and decide which expectations are worth repeating.

The Manual Testing Workflow

Use the following nine-step loop. The amount of documentation should match the risk and team, but the thinking remains useful at any scale.

StepMain questionTypical output
1. UnderstandWhat should the feature do, and for whom?Clarified requirement and acceptance criteria
2. Identify conditionsWhat normal, invalid, boundary, state, and role cases matter?Test conditions or coverage map
3. Prepare dataWhich accounts, records, and environment states are required?Controlled test data
4. Design testsWhich cases need detailed steps, and which need a checklist?Test cases and exploratory charter
5. ExecuteWhat actually happens under each condition?Results and observations
6. RecordWhich tests passed, failed, or were blocked?Updated status and evidence
7. ReportCan another person reproduce and understand the problem?Actionable bug report
8. RetestDoes the fix solve the original problem without an obvious regression?Fix verification and focused regression result
9. Improve coverageWhich stable, valuable checks should be repeated?Regression suite or automation candidate

Step 1: Understand the requirement

Start with the user goal, not the buttons. Read the story, acceptance criteria, design, business rules, error copy, analytics needs, and supported platforms. Mark assumptions and ask concrete questions.

For a login feature, useful questions include:

  • Are email addresses case-sensitive?
  • What is the minimum and maximum password length?
  • How many failures trigger an account lock?
  • How is the user told that an account is locked?
  • Does a successful login return the user to the page they originally requested?
  • How long does a session last?
  • What happens in two open browser tabs after logout?

Do not silently invent answers. An unresolved requirement can be a testing blocker or a product risk worth recording.

Step 2: Identify test conditions

A test condition is a behavior or risk to check. Build a compact coverage map before writing detailed steps.

Consider these categories:

  • happy path and common alternatives;
  • missing, invalid, and malformed input;
  • minimum, maximum, just-inside, and just-outside boundaries;
  • user roles and permissions;
  • new, active, locked, expired, or deleted states;
  • interruptions, retries, refreshes, back navigation, and multiple tabs;
  • slow or failed network responses;
  • supported browser, device, keyboard, and accessibility behavior;
  • connected systems, saved data, email, or notifications;
  • privacy and security risks appropriate for functional QA.

Prioritize by impact and likelihood. A payment total error matters more than a minor spacing inconsistency. A recent authentication change deserves more attention than an untouched low-risk settings label.

Step 3: Prepare test data

Uncontrolled data causes misleading results. Record which account and state each test needs.

For login testing, prepare:

  • an active user with verified email;
  • a user with an incorrect-password history below the lock threshold;
  • a locked or deactivated user;
  • a user for each meaningful permission role;
  • a known password that meets the current policy;
  • access to reset or restore the account after destructive tests.

Never use real customer credentials or sensitive production data for practice. Use an approved test environment and synthetic accounts. If tests share an account, coordinate changes so one tester does not invalidate another tester's result.

Step 4: Choose test cases, checklists, and charters

Use a detailed test case when the workflow is high risk, needs consistent repetition, depends on exact data, or must be handed to another tester. Use a checklist for familiar, low-complexity coverage. Use an exploratory charter when the objective is to investigate a risk and adapt based on observations.

An exploratory charter might say:

Explore login session behavior across logout, refresh, back navigation, multiple tabs, and direct protected URLs. Focus on unintended access after the session should end. Time box: 30 minutes.

The charter gives direction without predicting every useful action.

Step 5: Execute carefully

Confirm the build, environment, account state, and data before starting. Follow the case when consistency matters, but do not ignore unexpected behavior outside the written steps. Record the exact input and state that produced a result.

Avoid changing several variables at once during investigation. If login fails on mobile Safari with a locked account and poor network connectivity, simplify conditions one at a time to isolate what matters.

Step 6: Record results

Use clear statuses:

  • Pass: actual result matches the confirmed expectation.
  • Fail: actual result differs from the confirmed expectation.
  • Blocked: the test cannot run because a dependency, environment, access, data, or unresolved rule prevents it.
  • Not run: execution has not started.

"Blocked" is not a softer version of fail. Record the blocker and owner so the team can distinguish product defects from unavailable test conditions.

Step 7: Report bugs clearly

A useful report contains:

  • concise title with behavior and condition;
  • environment, build, browser, device, and account state;
  • preconditions and exact test data, excluding secrets;
  • minimal reproducible steps;
  • expected result;
  • actual result;
  • frequency, such as 3 of 3 attempts;
  • impact and affected user;
  • screenshots, video, console errors, network request IDs, or logs when useful.

Avoid assigning technical root cause unless you have evidence. Report "dashboard opens for a locked account" instead of guessing "authentication cache is broken."

Step 8: Retest the fix and regress nearby behavior

Recreate the original condition and use the same steps and data when possible. Then check nearby risks. If a fix prevents locked users from entering, also confirm that active users can still sign in, errors remain safe, the unlock path works, and logout still ends the session.

Retesting answers, "Was this defect fixed?" Regression testing asks, "Did the change damage behavior that already worked?"

Step 9: Decide what deserves repeat coverage

Add a case to the manual regression set when it protects an important, stable rule. Consider automation when the case is repeated often, deterministic, valuable, and supported by controllable data and environment setup.

Do not automate a confusing requirement simply to stop executing it manually. Clarify and stabilize the behavior first.

Practical Example: Testing a Login Page

Assume the requirement says:

An active registered user can log in with a valid email and password. Invalid credentials show "Email or password is incorrect." Five consecutive invalid attempts lock the account. Logout ends access to protected pages.

1. Translate the requirement into test conditions

  • valid active user;
  • wrong password and unknown email;
  • blank and malformed fields;
  • attempts immediately before, at, and after the lock boundary;
  • locked and deactivated users;
  • password masking and show-password control;
  • forgot-password link;
  • logout, back button, and protected URL access;
  • supported browser and keyboard behavior;
  • slow or failed authentication response.

2. Note requirement gaps

The requirement does not say how long the lock lasts, whether failures must be consecutive, whether success resets the counter, or how locked users recover. Ask these questions before marking the related tests pass or fail.

3. Prepare accounts

Create an active user, a locked user, and an account whose failure count can be reset. Confirm the test environment can deliver password-reset email or provide an approved mail-capture tool.

4. Execute focused coverage

Start with the critical happy path to confirm the build is testable. Then cover validation and account states. Finish with session, browser, accessibility, and exploratory checks. If a serious defect appears, pause dependent tests, report it, and assess which results are now blocked or unreliable.

Manual Test Case Template and Login Examples

Copy this structure into a spreadsheet, test management tool, Markdown file, or portfolio document.

Test IDScenarioStepsTest DataExpected ResultActual ResultStatus
LOGIN-001Active user logs in1. Open login. 2. Enter valid email and password. 3. Select Log in.Active userCorrect user's dashboard opens; authenticated session beginsFill during executionNot run
LOGIN-002Wrong password is rejected1. Open login. 2. Enter active email and wrong password. 3. Select Log in.Active email, wrong passwordLogin stays blocked; general credential error appears; no session beginsFill during executionNot run
LOGIN-003Blank email is validated1. Open login. 2. Leave email blank. 3. Enter a password. 4. Submit.Blank emailRequired-field guidance identifies email; request is not acceptedFill during executionNot run
LOGIN-004Password remains private while typed1. Focus password. 2. Type a value. 3. Inspect visible characters.Valid-format passwordCharacters are masked; accessible field name remains availableFill during executionNot run
LOGIN-005Fifth failure locks account1. Reset failure count. 2. Submit wrong password five times. 3. Submit correct password.Resettable active userAccount follows confirmed lock and recovery rules; correct password does not bypass lockFill during executionNot run
LOGIN-006Forgot-password path opens1. Open login. 2. Select Forgot password.NonePassword-reset flow opens and identifies the information requiredFill during executionNot run
LOGIN-007Logout ends protected access1. Log in. 2. Log out. 3. Use Back. 4. Open protected URL directly.Active userProtected content is not available; user is directed to authenticateFill during executionNot run

For production work, add columns only when they improve decisions. Useful additions include priority, preconditions, requirement ID, environment, owner, execution date, and evidence link. A table with twenty unused columns creates maintenance work without improving testing.

How to Write Useful Manual Test Cases

Name the behavior, not the click sequence

"Locked user cannot access the dashboard" is easier to understand than "Click login button test." The title should explain the condition and outcome.

State preconditions explicitly

If the account must be active, verified, and one failure below the lock threshold, say so. Hidden preconditions make another tester's result unreliable.

Use precise but maintainable steps

Write enough detail for the intended reader. "Submit the login form with the active test account" may be sufficient for an experienced team. A regulated handoff may require numbered actions and exact data references. Do not describe every mouse movement when labels and workflow are obvious.

Make the expected result observable

Avoid "works fine," "successful," or "correct error." State what appears, changes, remains blocked, or is stored. One case may contain several related observations, but split it when a failure would otherwise be hard to locate.

Include negative and boundary cases

Positive testing shows that accepted input works. Negative testing shows that invalid or forbidden actions fail safely. Boundary testing targets values near limits, such as 4, 5, and 6 failed attempts around a threshold of 5.

Keep cases independent when practical

One failed case should not invalidate the next ten. Reset state, create dedicated data, and avoid assuming tests always run in a fixed order. When a sequence is the behavior under test, document it clearly.

Test Case, Checklist, or Exploratory Session?

FormatBest useExample
Detailed test caseHigh-risk rule, handoff, auditability, exact data, or repeatable regressionAccount locks at the confirmed threshold
ChecklistFamiliar feature and lightweight repeat coverageLabels, tab order, masking, forgot-password link
Exploratory charterDiscovery, ambiguity, usability, or complex state interactionsExplore session behavior across tabs and navigation

Mature manual testing uses all three. Writing longer cases for every obvious observation can reduce the time available for actual investigation.

Example Bug Report

Title

Locked account reaches dashboard when correct password is submitted after five failed attempts

Environment

  • QA build 2026.07.21.2
  • Chrome on macOS
  • Synthetic account locked-user-02 with failure count reset before execution

Preconditions

  • Account is active and email is verified.
  • Requirement states that five consecutive failures lock the account.

Steps

  1. Open the login page.
  2. Submit the account email with an incorrect password five times.
  3. Submit the same email with the correct password.

Expected result

The account remains locked according to the requirement, no authenticated session begins, and the user receives the approved recovery guidance.

Actual result

The dashboard opens and displays the account's private content. Reproduced 3 of 3 times after resetting the account state.

Impact

The documented protection against repeated password attempts can be bypassed by supplying the correct password after the threshold. The affected account's session and private data become accessible.

Attach a short recording and relevant network request identifier if policy permits. Do not include the password or session token.

Manual Testing vs Automation Testing

Decision areaPrefer manual testing whenPrefer automation when
Behavior maturityRequirements or UI are changingRules and interfaces are stable
PurposeDiscover, investigate, or judge usabilityRepeat a known expectation consistently
FrequencyOne-time or infrequentRuns on builds, releases, or many data combinations
ResultNeeds human interpretationHas deterministic pass/fail signals
DataRequires flexible human setupCan be created, isolated, and cleaned reliably
MaintenanceScript cost exceeds repetition costLong-term repetition justifies code ownership

Manual testing is not less skilled or less important. It develops the test-design thinking that useful automation depends on. Automation makes repeatable checks faster; it does not decide which product risks matter.

After you can design and execute API checks manually, learn what API testing is and practice requests in the Postman REST API testing tutorial. When stable checks need code, use the QA Automation Engineer Roadmap to choose your next skills.

Common Beginner Mistakes

  • Testing only what the requirement says word for word. Also investigate omissions, state changes, invalid use, and user recovery.
  • Running without controlled data. Unknown account state makes passes and failures difficult to trust.
  • Using vague expected results. "Works correctly" cannot guide execution or diagnosis.
  • Mixing expected and actual results. Expected comes from the confirmed rule; actual records what happened.
  • Changing many conditions during reproduction. Isolate one variable at a time.
  • Writing a novel for every test. Use checklists and charters when detailed steps do not add value.
  • Reporting without impact or evidence. Help the team reproduce, prioritize, and investigate.
  • Retesting only the exact failing click. Restore the original state and check related behavior.
  • Starting automation before test design. Code cannot rescue a weak or ambiguous test.

A Practice Exercise You Can Complete Today

Choose a public practice site or a small application you own. Do not probe systems without permission.

  1. Write a one-paragraph login requirement.
  2. List ten test conditions across happy path, negative, boundary, state, accessibility, and session categories.
  3. Identify three unanswered requirement questions.
  4. Prepare two synthetic accounts.
  5. Write three detailed cases using the template above.
  6. Create a 20-minute exploratory charter.
  7. Execute, record actual results, and save non-sensitive evidence.
  8. Write one sample bug report, clearly label it as a portfolio example if it is not a real defect.
  9. Summarize what was tested, what was blocked, and what risk remains.

This package can become the first project in a beginner QA portfolio. The QA tester career roadmap explains how to present it honestly and build two complementary projects.

Manual Testing Completion Checklist

  • Requirement and user goal are understood.
  • Open questions and assumptions are recorded.
  • Critical, negative, boundary, role, and state conditions are prioritized.
  • Approved environment and synthetic test data are ready.
  • Detailed cases, checklists, and charters are used appropriately.
  • Actual results and statuses are recorded consistently.
  • Defects contain reproducible steps, impact, environment, and safe evidence.
  • Fixes are retested from the correct initial state.
  • Nearby regression risk is checked.
  • Untested scope, blockers, and remaining risk are communicated.
  • Stable high-value cases are considered for future regression automation.

Frequently Asked Questions

What is manual testing in simple words?

Manual testing means a person uses software, compares what happens with what should happen, and investigates or reports meaningful differences. The person executes and evaluates the check instead of relying on a script to do it automatically.

Is manual testing still needed?

Yes. New features, exploration, usability, accessibility, unclear behavior, bug investigation, and unusual state combinations require human observation and adaptation. Automated checks support manual work by repeating stable expectations.

How do I start manual testing?

Choose one feature with a clear requirement. Identify normal and failure conditions, prepare controlled data, write a few observable expected results, execute carefully, and record what happened. Focus on testing logic and clear communication before collecting tools.

What are examples of manual testing?

Examples include testing login with valid and invalid accounts, exploring a cart when quantities and stock change, checking a form with keyboard navigation, reproducing a mobile layout defect, validating a password-reset flow, and inspecting an API response manually in Postman.

Do manual testers need coding?

Coding is not required to begin. Manual testers benefit first from requirements analysis, test design, browser developer tools, bug reporting, API basics, SQL, and communication. Coding becomes useful for repeatable setup, utilities, and automation growth.

Should I learn manual testing before automation?

Yes. First learn how to recognize risk, design a valuable check, define an observable expected result, control data, and report failure. Then automate stable cases whose repetition justifies the maintenance cost.

Continue Your QA Practice

Apply the workflow to a cart or checkout next. Pay attention to quantity boundaries, stock changes, totals, saved state, roles, interruptions, and recovery. Keep each project small enough to finish, but detailed enough that another tester could understand your decisions. Find more references in SuperSQA tutorials and cheat sheets.

Manual Testing Tutorial for Beginners | SuperSQA