Úvod do HTTP status codes pre testerov softvéru

Na internete sa nachádzajú miliardy webových stránok po celom svete. Ak by si si ako bežný používateľ chcel pozrieť skóre svojho obľúbeného tímu, skontrolovať bankový účet, prezerať e-maily či rezervovať letenky, na získanie požadovaných informácií je potrebná konkrétna webová adresa.

Vždy, keď sa do prehliadača (klienta) zadá webová adresa URL (Uniform Resource Locator), odošle sa požiadavka na server (kde je webová stránka umiestnená). Inak povedané, klient odošle požiadavku protokolu HTTP (Hypertext Transfer Protocol) na server, ktorý klientovi vráti odpoveď alebo stavový kód HTTP o tom, či daná požiadavka bola úspešná alebo nie. Ty zadávaš požiadavku pomocou protokolu HTTP a server odpovedá.

Čo je HTTP?

Protokol HTTP (Hypertext Transfer Protocol) je základom World Wide Webu (WWW) a používa sa na načítanie webových stránok pomocou hypertextových odkazov. HTTP je protokol aplikačnej vrstvy určený na prenos informácií medzi sieťovými zariadeniami a beží nad ostatnými vrstvami zásobníka sieťových protokolov. Typický tok cez HTTP zahŕňa klientsky počítač, ktorý zadá požiadavku serveru a ten následne odošle správu s odpoveďou.

Čo obsahuje HTTP požiadavka (HTTP request)?

Požiadavka HTTP je spôsob, akým internetové komunikačné platformy, ako napríklad webové prehliadače, žiadajú o informácie potrebné na načítanie webovej stránky. Každá požiadavka HTTP odoslaná cez internet so sebou nesie sériu zakódovaných údajov, ktoré nesú rôzne typy informácií. Typická požiadavka HTTP obsahuje:

  • typ verzie HTTP,
  • adresu URL,
  • metódu HTTP,
  • hlavičku požiadavky http (http header),
  • voliteľné telo http (http body).

Čo je metóda HTTP?

Metóda HTTP, niekedy označovaná ako sloveso HTTP, označuje činnosť, ktorú požiadavka HTTP očakáva od dopytovaného servera. Napríklad dve najbežnejšie metódy HTTP sú „GET“ a „POST“; požiadavka „GET“ očakáva spätnú informáciu (zvyčajne vo forme webovej stránky), zatiaľ čo požiadavka „POST“ zvyčajne znamená, že klient odosiela informácie webovému serveru (napríklad informácie z formulára, napr. odoslané používateľské meno a heslo).

Čo je HTTP header?

HTTP header alebo inak aj http hlavička, obsahujú textové informácie uložené v pároch kľúč-hodnota a sú súčasťou každej požiadavky HTTP (a aj odpovede). Tieto hlavičky oznamujú základné informácie, napríklad aký prehliadač klient používa a aké údaje sa požadujú.

Príklad http request headers zo sieťovej karty prehliadača Google Chrome:

http request headers

http request headers

Čo obsahuje odpoveď HTTP (HTTP response)?

Odpoveď HTTP je to, čo weboví klienti (často prehliadače) dostanú od internetového servera ako odpoveď na požiadavku HTTP. Tieto odpovede poskytujú cenné informácie na základe toho, čo bolo požadované v požiadavke HTTP.

Typická odpoveď HTTP obsahuje:

  • stavový kód http (http status code),
  • hlavičku odpovede HTTP,
  • voliteľné telo http.

HTTP vs HTTPS

HTTPS je HTTP so šifrovaním a overovaním. Jediný rozdiel medzi týmito dvoma protokolmi je, že HTTPS používa TLS (SSL) na šifrovanie bežných požiadaviek a odpovedí HTTP a na digitálne podpisovanie týchto požiadaviek a odpovedí. Výsledkom je, že protokol HTTPS je oveľa bezpečnejší ako protokol HTTP.

HTTPS je HTTP so šifrovaním a overovaním

ZDROJ: cloudflare.com

Protokol a HTTP kódy

Protokol digitálny jazyk so vzájomne uznávanými pravidlami, ktoré umožňujú odosielanie aj čítanie komunikácie cez internet. K dispozícii je niekoľko protokolov s rôznymi atribútmi, napríklad DNS, FTP, HTTP, IRC a SSL.

Z hľadiska kódov protokolu HTTP pri každom odoslaní požiadavky na server sa stavový kód vzťahuje na stav požiadavky, či je úspešná, neúspešná alebo niečo medzi. Hoci sa tieto stavy vracajú pri každej interakcii klienta so serverom, pre koncového používateľa nie je potrebné, aby tieto transakcie opakovane videl. Stavové kódy HTTP sú však kľúčové pre vývojárov a testerov na diagnostikovanie a odstraňovanie problémov v konfigurácii webových stránok.

Ako fungujú stavové kódy HTTP?

Vždy, keď používateľ zadá adresu URL do prehliadača, odošle sa požiadavka webovému serveru, ktorý ju spracuje a odošle späť odpoveď. Táto odpoveď sa často prijíma vo forme HTML, CSS, PDF alebo JSON ako celý zväzok dokumentov spolu s hlavičkou HTTP. Hlavička HTTP nesie informácie o klientovi, serveri a požadovanej stránke a obsahuje aj stavové kódy. Tieto kódy sa vracajú vždy, keď server prijme požiadavku od klienta a opäť nie je potrebné, aby používateľ tieto kódy zobrazoval, ale zobrazujú sa, keď sa niečo pokazí.

Pre testerov a vývojárov je k dispozícii mnoho nástrojov, ako napríklad Web Sniffer, ktoré umožňujú zobraziť stavové kódy HTTP, ktoré bežne v prehliadači nevidíme.

Kategórie stavových kódov HTTP

Existuje päť kategórií stavových kódov, pričom prvá číslica každého kódu označuje kategóriu, do ktorej patrí. Napríklad stavový kód 404 patrí do kategórie 4xx. Klasifikácia kategórií je opísaná nižšie:

  • 1xx Informačné – Ide o informačnú kategóriu a označuje, že požiadavka od klienta bola iniciovaná serverom.
  • 2xx Úspech – Ak bola požiadavka prijatá serverom od klienta úspešne spracovaná alebo dokončená, zobrazí sa správa o úspešnom spracovaní.
  • 3xx Presmerovanie – Existujú prípady, keď webová stránka alebo niektoré informácie, ktoré používateľ požadoval, mohli byť presunuté na inú stránku alebo odkaz, preto sa uskutoční presmerovanie. To znamená, že server prijal požiadavku, ale je potrebné vykonať ďalšie kroky, aby bolo možné dokončiť túto konkrétnu požiadavku.
  • 4xx Chyba klienta – Táto kategória sa klasifikuje ako kódy chýb klienta. Server prijal požiadavku, ale nemôže pokračovať, pretože môže obsahovať nesprávnu syntax.
  • 5xx Chyba servera – Táto kategória znamená chybu servera. Tento stavový kód sa zobrazí, keď je požiadavka platná, ale obsahuje chybu, takže server nie je schopný požiadavku splniť.

Číslica „xx“ označuje rôzne čísla od 00 do 99.

Stavové kódy začínajúce číslom „2“ znamenajú úspech. Napríklad po tom, ako klient požiada o webovú stránku, najčastejšie sa vyskytujú odpovede so stavovým kódom „200 OK“, čo znamená, že požiadavka bola správne dokončená.

Ak odpoveď začína číslom „4“ alebo „5“, znamená to, že došlo k chybe a webová stránka sa nezobrazí. Stavový kód začínajúci číslicou „4“ znamená chybu na strane klienta (veľmi často sa stretávame so stavovým kódom „404 NOT FOUND“ pri preklepoch v adrese URL). Stavový kód začínajúci číslicou „5“ znamená, že sa niečo pokazilo na strane servera. Stavové kódy môžu začínať aj na „1“ alebo „3“, ktoré označujú informačnú odpoveď, resp. presmerovanie.

Zoznam dôležitých stavových kódov HTTP

Existuje viac ako 40 stavových kódov ale tu sa budeme zaoberať len niekoľkými z nich.

Informačný 1xx

  • 100 Pokračovať: Tento kód označuje, že od klienta bola prijatá čiastočná požiadavka a pokiaľ nie je požiadavka zamietnutá, klient by v nej mal pokračovať.
  • 102 Spracovanie: Tento chybový kód znamená, že požiadavka od klienta bola prijatá a server spracováva konkrétnu požiadavku, ale stav tejto požiadavky bude vrátený neskôr. Tento stavový kód je podobný kódu „100 Pokračovať“, pri ktorom môže byť výsledok vrátený okamžite, zatiaľ čo pri kóde „102 Spracovanie“ bude výsledok vrátený po prijatí celej požiadavky.

Úspešný 2xx

  • 200 OK: Keď je požiadavka servera úspešná a funguje podľa očakávania, potom sa vygeneruje tento stavový kód. Zvyčajne nie sú pre používateľa viditeľné.
  • 201 Prijaté: Tento stav označuje, že požiadavka od klienta bola prijatá na spracovanie, ale proces ešte nebol úspešne dokončený.
  • 203 Neautoritatívne informácie: Ak je medzi klientom a serverom niečo, ako napríklad HTTP proxy server alebo tretia strana, čo mení odpovede pred ich poskytnutím klientovi, server použije stavový kód 203, aby ukázal, že odpoveď bola upravená.
  • 204 Žiadny obsah: Server splnil požiadavku, ale nemusí vrátiť telo odpovede. Server môže vrátiť aktualizované metainformácie.

Presmerovanie 3xx

  • 301 Moved Permanently (Presunuté natrvalo): Tento stavový kód znázorňuje, že stránka požadovaná klientom nie je na danej adrese dostupná a je natrvalo presunutá. Používateľ je nepozorovane navigovaný na túto novú adresu.
  • 302 Found (Nájdené): Tento stavový kód je často nesprávne chápaný. Tento stav znamená, že zdroj, ku ktorému sa klient snaží získať prístup, bol dočasne presunutý na inú adresu URL. Inými slovami, obsah je zatiaľ umiestnený niekde inde.
  • 303 Pozri iné: Tento stav znamená, že výsledok, ktorý klient požaduje, možno nájsť na inom mieste. Keď sa klient pokúsi získať odpoveď oproti požiadavke POST, server odpovie správou o úspechu. Namiesto zobrazenia správy zo servera je dobrým postupom presmerovať používateľa na konkrétnu adresu URL.

Chyba klienta 4xx

  • 400 Zlá požiadavka: Tento kód konvertuje, že požiadavka, ktorú klient dostal na server, nie je zrozumiteľná a vyžaduje si úpravu pri opätovnom odoslaní tej istej požiadavky. Každý stavový kód, ktorý sa začína svojím radom so 4, znamená, že klient urobil niečo nesprávne. 400 je všeobecný chybový kód a používa sa v situáciách, keď iné kódy nevyhovujú.
  • 401 Neautorizované: Tento stavový kód označuje, že požiadavka zadaná klientom je chránená heslom a na prístup k nej sú potrebné poverovacie údaje, napríklad používateľské meno a heslo. Ak boli poskytnuté nesprávne poverovacie údaje, tento chybový kód sa aj tak vygeneruje.
  • 402 Požadovaná platba: Tento stavový kód označuje problém s autorizáciou; ak zadávaš požiadavky cez HTTPS, môže sa táto chyba zobraziť, ak prehliadač nemá prístup k tvojmu účtu.
  • 403 Zakázané: Tento stavový kód znamená, že stránka požadovaná klientom je neprístupná. Napríklad pri pokuse o prístup k takýmto informáciám bez zadania správneho hesla môže server vygenerovať tento stavový kód.
  • 404 Nenájdené: Tento všeobecne rozšírený stavový kód znamená, že obsah požadovaný klientom neexistuje alebo nie je na serveri dostupný.
  • 408 Časový limit požiadavky: Tento kód znamená, že požiadavka od klienta trvá dlhšie, než sa očakáva, kým sa dostane na server. Dôvodov je mnoho, napríklad pomalé internetové pripojenie alebo žiadne internetové pripojenie.

Chyba servera 5xx

  • 500 Internal Server Error (Vnútorná chyba servera): Každý stavový kód, ktorý začína sériou 5, znamená, že server urobil niečo nesprávne. Táto chyba sa vyskytuje na strane servera, keď požiadavka od klienta nie je načítaná. Dôvodom môže byť odpojenie od siete, prerušenie spojenia s databázou alebo možno chyba v kóde.
  • 501 Nevykonáva sa: To znamená, že server nemôže vykonať to, čo klient požaduje. Ak sa napríklad pokúsiš použiť časť webovej stránky alebo služby, ktorá nebola na serveri implementovaná a nastavená alebo sa na nej pracuje, môže sa zobraziť tento kód.
  • 502 Bad Gateway: Tento kód označuje, že server dostal zlú odpoveď od iného servera.
  • 503 Služba nie je dostupná: Tento stavový kód označuje, že z dôvodu preťaženia servera nie je možné požiadavku odoslanú klientom momentálne spracovať.
  • 504 Časový limit brány: Tento chybový kód označuje, že server funguje ako brána alebo proxy server a v skutočnosti nedostal požadovanú odpoveď včas.

Ako využijú znalosť HTTP kódov testeri ?

Zmena stavových kódov HTTP na účely testovania používateľského rozhrania je dôležitým krokom na zabezpečenie správneho fungovania webovej aplikácie. Manipuláciou so stavovými kódmi HTTP, ktoré sú vrátené zo servera, môžeš simulovať rôzne scenáre a testovať, ako tvoja webová aplikácia reaguje na tieto zmeny.

Tu sú niektoré z dôvodov, prečo by si mohol chcieť zmeniť stavové kódy HTTP na testovanie používateľského rozhrania:

  • Ak chceš otestovať spracovanie chýb: Simulovaním chýb môžeš otestovať, ako webová aplikácia tieto chyby spracuje a zabezpečiť, aby bolo používateľské rozhranie prezentované spôsobom, ktorý je informatívny a užitočný.
  • Na testovanie okrajových prípadov: Môžu nastať špecifické situácie, v ktorých webová aplikácia môže vrátiť neočakávané stavové kódy HTTP. Testovaním týchto okrajových prípadov môžeš zabezpečiť, že webová aplikácia je odolná a dokáže si poradiť s týmito neočakávanými scenármi.
  • Zlepšenie výkonu: Testovaním reakcií webovej aplikácie na rôzne stavové kódy HTTP môžeš identifikovať prípadné slabé miesta výkonu a podľa toho optimalizovať svoj kód.

Existuje niekoľko rôznych spôsobov, ako zmeniť stavové kódy HTTP na testovanie používateľského rozhrania. Jedným zo spôsobov je použitie nástroja, ako je Fiddler alebo Charles Proxy, na zachytenie a úpravu http kódu medzi tvojou webovou aplikáciou a serverom. Ďalším spôsobom je použitie nástroja, ako je Selenium alebo Puppeteer, na automatizáciu procesu vykonávania požiadaviek HTTP a overovania odpovedí.

Ak vieš po nemecky a si IT tester alebo automatizovaný tester, pozri si naše firemné benefity a reaguj na voľné pracovné miesta.

O autorovi

Michaela Kojnoková

Agile Test Engineer

Po štúdiu informatiky na ŽU a TUKE som sa najviac ponorila do oblasti automatizácie testovania. Okrem toho sa venujem tvorbe webov, databázam, dátovej analytike, umelej inteligencii a strojovému učeniu. Mám rada cestovanie, šport a najviac si užívam čas strávený v prírode s mojimi blízkymi. LinkedIn

Daj nám o sebe vedieť