Learn how professional QA testers think — write test cases, explore with browser DevTools, run smoke and regression checks, and practice on real pages at elangodev.com.
What is manual testing?
Every time you open an app and ask "does this button work?" or "why is this error message confusing?" you are doing informal manual testing. Professional manual QA turns that instinct into repeatable test cases, structured bug reports, and release checklists so teams ship software users can trust.
This guide is hands-on. You will practice on public pages of this site — contact forms, blog navigation, handbook content — using only a browser and DevTools. No test automation framework required to get started.
Test CasesSmoke TestingRegressionBug ReportsDevToolsAccessibilityCross-browser
Start here
Recommended learning path
Complete these six steps in order. Each builds practical skills you can list on a resume or use in your first QA role.
1
Learn the core testing methods
Read the testing methods section. Each method includes a simple analogy, step-by-step example, and pass vs fail outcomes on this site. Jump to section →
2
Write your first test case
Use the test case template to document steps, expected results, and test data for the contact form happy path. Jump to section →
3
Practice negative testing
Submit the contact form with missing fields and invalid email. Confirm error messages appear and no success toast shows. Jump to section →
4
Explore with browser DevTools
Open Chrome or Firefox DevTools. Inspect elements, watch the Network tab during form submit, and check Console for errors. Jump to section →
5
Run a smoke test on public pages
Walk through the site inventory checklist — home, blog, handbook, contact, and footer links. Log any broken navigation. Jump to section →
6
File a practice bug report
Pick a minor UI issue (spacing, typo, or responsive layout). Document it using the bug report template. Jump to section →
Foundations
QA fundamentals
Vocabulary and concepts every manual tester should know before writing the first test case.
What is manual testing?
Manual testing means a human tester explores software without automation scripts. You click buttons, fill forms, read messages, and compare what you see to what the requirements say should happen. It catches usability problems, visual bugs, and confusing flows that code-only checks often miss.
Manual vs automated testing
Automated tests repeat the same steps quickly in CI pipelines. Manual testing is better for first impressions, exploratory sessions, and subjective quality like readability or layout. Most teams use both: automation for regression, manual for new features and edge cases.
Test cases and test plans
A test case is one scenario with steps, test data, and an expected result. A test plan groups cases by feature or release. Good documentation lets another tester reproduce your work without guessing what you did.
Positive vs negative testing
Positive testing confirms the app works with valid input (happy path). Negative testing deliberately uses bad data — empty fields, wrong formats, extremely long text — to confirm the app fails gracefully with clear error messages instead of crashing.
Regression testing
After a bug fix or new feature, regression testing re-runs related scenarios to ensure nothing else broke. A short smoke checklist on core pages (home, contact, login) is a practical daily regression habit.
Exploratory testing
Exploratory testing has no fixed script upfront. You learn the product while testing, following curiosity: What if I double-click? What happens on slow network? What if I go back mid-form? Time-box 30 minutes and note surprises.
Core methods
Testing methods with real examples
Each method below includes a plain-language analogy, step-by-step instructions, a hands-on example on this site, and clear pass vs fail outcomes.
Can everyone use the site — including keyboard-only users?
~30–45 min per critical flow
/contact
Smoke Testing
A 5-minute health check before anything else
~5–15 min
Smoke testing confirms the most critical paths work after a deploy. You do not test every edge case — you verify the app is stable enough for deeper testing.
Think of it like this
Like starting your car before a long drive — you check the engine starts, lights work, and doors close. You are not inspecting every bolt yet.
When: After every deploy, before a demo, or at the start of your work day.
How to do it — step by step
1
Open the homepage — page loads without errors
2
Click Blog in the nav — listing appears
3
Open one article — content is readable
4
Open Contact — form fields are visible
5
Submit with fake test data — success message shows
Functional testing verifies that every button, field, and link behaves according to requirements. You test what the feature is supposed to do, not how pretty it looks.
Think of it like this
Like checking a vending machine — you put in a coin, press B4, and expect a snack to drop. The label, color, and logo are separate concerns.
When: When a new feature ships or an existing feature is changed.
How to do it — step by step
1
Read what the feature should do (requirement or help text)
2
List every input, button, and link on the page
3
Test each one with valid data and observe the result
4
Compare actual behavior to the documented expectation
Positive testing uses valid, expected input to confirm the application works under normal conditions. This is the first test you write for any feature.
Think of it like this
Like ordering your usual coffee with the correct size and name — the barista should hand you exactly what you asked for, no surprises.
When: First test for any new feature; baseline before trying edge cases.
How to do it — step by step
1
Identify valid test data (realistic name, proper email format)
Negative testing uses invalid, missing, or unexpected input to verify the app handles errors gracefully — clear messages, no crashes, no data corruption.
Think of it like this
Like trying to pay with an expired card — the cashier should politely decline and ask for another card, not freeze or charge you anyway.
When: After positive tests pass; essential for forms, login, and search.
How to do it — step by step
1
Submit the form with all fields empty — note error messages
2
Enter an invalid email (e.g. not-an-email) — submit again
3
Fill only some required fields — confirm partial submit is blocked
4
Double-click Submit rapidly — confirm no duplicate messages
Exploratory testing is simultaneous learning, test design, and execution. You have a time box and a mission, but no fixed steps — discoveries drive what you test next.
Think of it like this
Like exploring a new city without a map — you wander, notice interesting alleys, and remember spots that felt confusing or delightful.
When: New features, before major releases, or when scripted tests feel stale.
How to do it — step by step
1
Set a timer for 30 minutes and pick a starting page
2
Click everything that looks clickable — note surprises
3
Try browser Back mid-flow, refresh mid-form, open 5 tabs
Test the edges — min, max, and just outside limits
~15–25 min per field
Boundary testing focuses on values at the limits of what is allowed: empty string, one character, maximum length, special characters. Most bugs live at the edges, not the middle.
Think of it like this
Like a parking garage with a 2 m height limit — test a car at 1.99 m (pass), exactly 2 m (pass), and 2.01 m (fail).
When: Forms with length limits, numeric fields, file uploads, and pagination.
How to do it — step by step
1
Find the min and max rules (e.g. message required, email format)
2
Test empty value, 1 character, and a very long string (500+ chars)
3
Test special characters: <script>, emoji, accents (é, ñ)
4
Confirm the app truncates, rejects, or accepts per requirements
Usability testing evaluates how easy and pleasant the product is to use. You observe whether labels make sense, flows feel natural, and errors are understandable — not just whether code works.
Think of it like this
Like watching someone assemble IKEA furniture — the pieces might fit, but unclear instructions cause frustration.
When: New user flows, redesigns, or when support tickets mention confusion.
How to do it — step by step
1
Give yourself a goal without hints: 'Send a message to the site owner'
2
Start from the homepage — can you find /contact in under 30 seconds?
3
Read every label aloud — do they make sense without jargon?
4
Note anywhere you hesitated, mis-clicked, or re-read instructions
Same site, different browsers — should look and work the same
~30 min (same checklist, 2+ browsers)
Cross-browser testing verifies your application works in Chrome, Firefox, Safari, and Edge. Layout engines differ — a page perfect in Chrome may break in Safari.
Think of it like this
Like printing the same photo on two printers — colors and margins should match closely enough that no one notices a difference.
When: Before major releases and after CSS or font changes.
Can everyone use the site — including keyboard-only users?
~30–45 min per critical flow
Accessibility (a11y) testing ensures people with disabilities can use your product — keyboard navigation, screen readers, sufficient contrast, and meaningful labels.
Think of it like this
Like a building with ramps and elevators, not just stairs — everyone should reach the same destination.
When: Ongoing for public sites; required before launch in many organizations.
How to do it — step by step
1
Unplug your mouse — tab through /contact using only keyboard
2
Confirm focus ring is visible on every interactive element
3
Check every input has a visible label or aria-label
4
Run Lighthouse Accessibility audit in Chrome DevTools
Good test cases are repeatable, observable, and independent. Copy the template below into a spreadsheet or test management tool.
1. Name your test clearly
Use action + object: "Submit contact form with valid data" not "Test 1". IDs like TC-CONTACT-001 help traceability in spreadsheets or Jira.
2. List preconditions
State starting URL, login state, and test data. Another tester should not need to ask "were you logged in?"
3. One action per step
Step 3: Click Submit — not "Fill form and submit and check email." Split actions so failures pinpoint the exact step.
4. Expected result must be observable
Bad: "It works." Good: "Green toast shows 'Message sent' and form fields clear." Observable outcomes are pass/fail without debate.
5. Record actual result and evidence
On failure, capture screenshot, URL, browser version, and Console errors. Attach Network HAR only when debugging API-related UI issues.
6. Maintain a smoke suite
Keep 10–15 high-priority cases you run before every release. On elangodev.com that might be: home, blog, contact happy path, footer links, mobile nav.
Sample test case (contact form)
JSON
Test Case ID: TC-CONTACT-001
Title: Submit contact form with valid data
Priority: High
Preconditions: User is on https://elangodev.com/contact
Test Data:
- Full name: Manual Test User
- Email: manual-test@example.com
- Message: Practice submission from manual testing guide.
Steps:
1. Navigate to /contact
2. Enter full name, email, and message
3. Click Send / Submit
Expected Result:
- Success confirmation appears
- No JavaScript errors in Console
- Network tab shows POST /api/messages with HTTP 201 (optional check)
Actual Result: [fill when executing]
Status: Pass / Fail
Tester: [your name]
Date: [YYYY-MM-DD]
DevTools
Browser tools for manual testers
Press F12 (Windows/Linux) or Option+Cmd+I (Mac) to open DevTools. These panels cover 90% of day-to-day manual QA work.
Elements (Inspector)
View HTML structure, CSS classes, and computed styles.
How: Right-click any element → Inspect. Verify buttons are real <button> or <a> tags, not unclickable divs.
Console
See JavaScript errors and warnings that break functionality.
How: Open DevTools → Console. Reload the page. Red errors during normal use are bugs worth reporting.
Network
Watch HTTP requests when forms submit or pages load data.
How: Network tab → submit contact form → find POST /api/messages. Check status 201 and response JSON.
Device toolbar
Simulate phone and tablet screen sizes.
How: Toggle device mode (Ctrl+Shift+M). Test 375px, 768px, and 1280px widths on key pages.
Lighthouse (Chrome)
Quick accessibility, performance, and SEO signals — not a full QA substitute.
How: DevTools → Lighthouse → run Accessibility audit on /contact and /blog.
Application → Cookies
Verify cookie consent and session behavior.
How: After accepting or rejecting cookies, confirm consent cookie is set and analytics behave per policy.
Hands-on practice
Practice scenarios on elangodev.com
Real pages, real forms — use fake test data only. Document pass/fail in your test case template as you go.
Highfunctional
Contact form — happy path
The most common real-world manual test: fill a public form and confirm success feedback. Use clearly fake test data only.
Valid input is necessary but not sufficient. Always try empty fields, wrong formats, double-submit, and back-button mid-flow.
Vague bug reports
"Contact broken" does not help developers. Include exact URL, steps, expected vs actual, browser, and screenshots.
Ignoring the Console
A page can look fine while JavaScript throws errors. Open Console on every serious test session.
Testing in one browser only
Safari and Firefox still surface layout and date-picker bugs Chrome hides. Spot-check at least two engines before sign-off.
Using production data carelessly
Contact and message APIs write real data. Use fake emails like test@example.com and obvious test messages. Never spam forms.
Confusing UI bugs with API bugs
If the UI shows success but Network shows 500, report both. If Postman returns 200 but the form fails, suspect front-end validation or CORS — see the API Testing Guide.
Troubleshooting
When testing gets confusing
I cannot reproduce a reported bug
Match the reporter's browser, viewport, and cache state. Try incognito. Ask for a screen recording or HAR file. Clear cookies if the issue involves consent or auth.
Flaky test — passes sometimes, fails others
Look for race conditions: slow network, animations, or double-click submit. Throttle Network to Slow 3G in DevTools and retry.
Page looks different from staging vs production
Compare build versions, feature flags, and CDN cache. Hard refresh (Ctrl+Shift+R) bypasses cached CSS.
Form submits but nothing appears to happen
Check Network for failed POST, Console for errors, and whether a toast appears off-screen on mobile. Verify you are not blocked by ad blockers intercepting analytics only.
Frequently asked questions
Quick answers for beginners starting a manual QA learning journey.
What is manual testing?
Manual testing is when a human interacts with software to find defects — clicking, typing, reading screens, and comparing behavior to requirements — without running automated test scripts. It is essential for usability, visual quality, and exploratory discovery.
Do I need coding skills to do manual testing?
No. Entry-level manual QA focuses on attention to detail, clear communication, and structured test cases. Basic browser DevTools help but are learnable in an afternoon. Coding becomes useful later for test automation.
What is the difference between manual and automated testing?
Manual testing relies on human judgment and exploration. Automated testing runs scripts (Selenium, Playwright, Cypress) on a schedule. Automation is fast for regression; manual testing excels at new features, UX, and ad-hoc exploration.
What should I test first on a new website?
Start with a smoke test: homepage loads, main navigation works, one critical user journey (contact, signup, or checkout) succeeds, and there are no obvious Console errors. Then expand into negative cases and cross-browser checks.
How do I practice manual testing on elangodev.com?
Use the practice scenarios on this page. Begin with the contact form happy path and validation cases, then run the blog and navigation scenarios. Document results in the test case template and file practice bugs with the bug report template.
What is a test case?
A test case documents ID, title, preconditions, steps, test data, expected result, and actual result. It should be repeatable by someone who did not write it.
What is negative testing?
Negative testing uses invalid or boundary input — empty fields, malformed email, extremely long strings — to verify the application handles errors gracefully instead of crashing or corrupting data.
What tools do manual testers use?
Browsers (Chrome, Firefox, Safari), DevTools (Elements, Console, Network, device mode), screenshot tools, spreadsheets or TestRail/Jira for cases, and optionally Lighthouse for accessibility signals.
How do I write a good bug report?
Include a short title, severity, environment (URL, browser, OS, viewport), numbered steps to reproduce, expected vs actual result, and screenshots or videos. See the bug report template on this page.
Is manual testing enough for production apps?
Rarely alone. Serious products combine manual exploration with automated regression, API tests, monitoring, and staged rollouts. Manual testing remains vital for release sign-off and customer-facing polish.
Can I test the login page without an account?
Yes — test UI validation, empty submit, invalid email format, and error messages with fake credentials. Do not attempt credential stuffing or password guessing.
How does manual testing relate to the API Testing Guide?
Manual testing checks what users see. API testing checks server responses directly. When a form fails, use Network tab in the browser first, then Postman from the API Testing Guide to isolate front-end vs back-end issues.
Pair UI testing with API testing
When a form fails, check the Network tab — then verify the API directly with Postman using the API Testing Guide.