Topic 33

How the Web Works for Testers

Web & APIs

For seven chapters you've tested Fernway through its screens. But between the screen and the answer there's a whole relay — browser, network, server, database — and every leg of that relay is a place where a bug can actually live. A tester who can name the legs can locate bugs, not just witness them — and "locates, not just witnesses" is the single biggest credibility jump available to a junior. This chapter makes that jump; this page builds the map it needs.

Client and Server

Two words carry everything. The client is the program asking — your browser, or the Fernway mobile app. The server is a program answering — built up gently, because this book promised no assumed background: a server is just a program running on an always-on computer in a data center, whose whole job is to wait for requests and answer them. When you open Fernway, your browser (client) asks a Fernway server for the page; the server figures out the answer — consulting the database, the organized storage where all the bookings and travelers live — and sends it back. Ask, compute, answer. That's the web, and everything else is detail on that skeleton.

The Request/Response Cycle

Now the same story in the vocabulary you'll use daily. You type a destination and click Search. The browser composes a request — a structured message saying, in effect, "give me stays in Lisbon, Nov 10–13, 2 guests" — and sends it across the network to Fernway's server. The server does the work: checks the database, applies the rules, assembles an answer. Back comes the response: a status code (a three-digit summary of how it went — one minute, they get their own section) plus the data — the matching stays. The browser takes that data and renders it: turns it into the pixels you see. One full round trip, repeated dozens of times per page, hundreds of times per session. Every leg — compose, send, compute, respond, render — can be the leg that breaks.

The restaurant, one last time, now end-to-end: you (the browser) give your order to the waiter (the network), the kitchen (the server) checks the pantry (the database) and cooks, and the dish comes back — or a "sorry, we're out of that," or, on a truly bad night, a fire alarm. Where exactly the evening went wrong determines who you talk to. Hold that thought; it's about to become your triage skill.

The relay — and what can break at each leg
Browser → requestis the right question being asked?
Networkdid the question arrive?
Server + databaseis the answer computed right?
Response → renderis the right answer shown right?

Status Codes: the Server's Tone of Voice

Every response carries a three-digit status code, and you need the families, not a memorized list. 2xx — fine: 200 is the everyday "here's your answer." 4xx — your request was the problem: 404 means no-such-thing (the URL points nowhere), 400 means the request itself was malformed, 403 means you're not allowed. 5xx — the server itself broke: 500 is the kitchen fire alarm — the request was fine; the server choked on it. Here's why the families matter more than the numbers: 4xx-versus-5xx is the first clue about whose bug you're looking at. A 4xx says the client sent something wrong — look at what the frontend composed. A 5xx says the server failed at its own job — the backend has a problem, whatever the screen looks like. One glance at a code, and your investigation already has a direction.

Frontend Bug or Backend Bug?

Now the triage instinct this page exists to build. Three patterns cover most cases. Wrong data, rendered nicely — the page looks perfect and the numbers are wrong: the server computed a wrong answer; backend. Right data, rendered wrongly — the server sent Nov 13 and the screen shows Nov 14 (hello, FW-312): the rendering leg broke; frontend. The request never went out, or went out wrong — the server never got a fair question: frontend again, at the compose leg. You can't always see which pattern you're in from the screen alone — which is exactly what the next topic's tools are for — but knowing the three patterns turns "it's broken" into "I know which half to suspect," and that sentence changes how developers hear you.

One honest flag before the tour continues: this page skipped real machinery — DNS, caching layers, content delivery networks all live between browser and server, and each can host its own bugs. The full relay is the Networking Deep Dive course's whole book; this simplified map is honest as far as it goes, and it goes as far as a junior web tester needs.

The First Bug You Locate

The payoff, immediately. A traveler-facing search for Saltwater Lodge shows no results — "search is broken," says the ticket. Old you would have re-filed that sentence with better formatting. New you asks: which leg? The page renders fine (render leg OK). The server answers other searches (server leg probably OK). So — what did the request actually ask? Next topic gives you the X-ray to see it, and the answer will turn out to be a frontend bug with a stale date, FW-380 — located, not witnessed. That's the chapter's arc: this page gave you the map; the next four give you the instruments.

Common Confusions
  • "The website is what I see on screen." The screen is the last leg of a relay — browser, network, server, database — and the bug can live on any leg. Testing only the pixels means witnessing bugs you could be locating.
  • "An error page means the server is down." A 4xx means the request was wrong and the server answered it correctly; only 5xx means the server itself failed. The families point in opposite directions — that's their whole value.
  • "Testers don't need networking knowledge." This page's map — one relay, four legs, three triage patterns — is a fraction of networking knowledge, and it's the fraction that doubles a bug report's usefulness.
  • "If the page looks right, the request was right." A page can render beautifully around a failing or wrong request — stale data, silent errors. Looking right and being right part ways constantly, which is why the next topic exists.
Why It Matters
  • "Locates, not just witnesses" is the credibility jump: a report that says "the request carries yesterday's date — frontend" gets fixed in an hour; "search is broken" gets investigated for a day.
  • The 4xx/5xx split is the fastest triage heuristic in web testing — one glance at a code and the investigation has a direction.
  • This map is the prerequisite for everything ahead: DevTools (next), API testing, the data layer, and half of every "how would you investigate…" interview question.

Knowledge Check

What happens between clicking Search and seeing results?

  • The browser sends a request; the server computes an answer from the database; a response returns and gets rendered
  • The browser searches its own stored copy of all bookings
  • The database draws the results directly onto the screen
  • The network computes the results while carrying the request

A request comes back with status 500. What does that tell you?

  • The request the browser sent was malformed
  • The server itself failed while processing a request that may have been fine
  • The page the browser asked for doesn't exist
  • Everything worked exactly as intended

The checkout page looks perfect, but the total is wrong by $45. Which half do you suspect first?

  • The backend — the server computed a wrong answer that the page displayed faithfully
  • The frontend — the page must be displaying the number wrong
  • The network — it probably altered the number in transit
  • Nothing — you must always investigate all legs equally

Why do the 4xx and 5xx families point investigations in opposite directions?

  • Because 4xx codes are warnings and 5xx codes are errors
  • Because 5xx bugs are always more severe than 4xx bugs
  • 4xx blames the request (client side); 5xx blames the server's own processing
  • Because 4xx bugs are fixed by testers and 5xx by developers

You got correct