Testiranje alatom curl provjerava pogrešnu stvar
O sadržaju i njegovoj provjeri
U ovom članku
Zahtjev za brojač koji stigne bez identiteta preglednika zapisuje u dva od dvanaest mjesta kojima izbrojeni posjet uobičajeno pristupa. Odgovara s 200. Vraća valjanu sliku brojača. Nigdje ništa ne govori da je deset od dvanaest preskočeno.
Čemu služi filtar i koliko košta
Ovdje brojači razdvajaju robote i ljude, a razdvajanje se temelji na identitetu kojim se klijent predstavlja. Popis oznaka kratak je i namjerno nedvosmislen, a curl/ na njemu je. Isto vrijedi za prazan identitet, uz obrazloženje da zahtjev bez ikakva korisničkog agenta nije preglednik.
Oboje je ispravno. Usluga ne griješi kada obični curl smatra robotom; to i jest. Problem je što osoba koja upravlja alatom curl obično ne testira radi li prepoznavanje robota. Testira radi li brojanje, a neprimjetno je zatražila put za robote.
Što dobiva: ukupni broj pregleda dana raste za jedan, stupac botova raste za jedan i to je sve. Nema retka jedinstvenog posjetitelja, pa nema ničega o posjetiteljima. Nema unosa na popisu prisutnih. Nema stranice, države, preglednika, operacijskog sustava, uređaja ni sata. Dijelovi sustava koje bi itko doista želio provjeriti upravo su oni koji se nisu izvršili.
Neuspjeh nema simptoma
Na ovom dijelu vrijedi zastati. Test koji ništa ne mjeri obično se sam najavi: pogreška, prazan rezultat, nula ondje gdje bi trebao biti broj. Ovdje je odgovor 200. Tijelo je stvarna slika brojača, ima 3.361 bajt. Broj na slici čak je i porastao jer je ukupni broj pregleda jedna od dviju stvari koje su se doista dogodile.
Zato proba izgleda kao uspjeh. Sve što iz nje slijedi — „postupak brojanja radi“, „novi se stupac zapisuje“, „promjena ništa nije pokvarila“ — zaključak je iz pokretanja koje je preskočilo većinu koda koji je trebalo izvršiti.
Dogodilo se tijekom pisanja
Prva verzija mjerenja iza ove objave tražila je /c/<number>. To nije adresa slike brojača; stvarna nosi dizajn i nastavak, /c/<number>-<design>.png. Zahtjev je vratio 404.
Skripta je triput ispisala: zapisuje u 0 od 12 mjesta. Što je točno, a ujedno upravo ono kako bi ispravan filtar botova izgledao na prvi pogled. Odgovor 404 bio je u ispisu, u istoj tablici, jedan redak iznad nula. Minutu nije bio pročitan jer su nule bile zanimljive i odgovarale očekivanju.
To je ista pogreška o kojoj govori ova objava, jednu razinu više: mjerenje koje je proizvelo uvjerljiv odgovor iz razloga koji nitko nije provjerio. Otkriveno je samo zato što je skripta brojila retke u dvanaest tablica umjesto vjerovanja zahtjevu — zahtjev koji ne uspije i zahtjev koji je filtriran izvana izgledaju isto.
Što učiniti umjesto toga
Pošaljite identitet preglednika. Jedna opcija, -A sa stvarnim nizom korisničkog agenta, i isti zahtjev zapisuje u deset od dvanaest mjesta umjesto u dva.
I izbrojite nešto s druge strane. Kod odgovora kaže da je zahtjev stigao; ništa ne govori o tome što je učinio. Za sve gdje je smisao popratni učinak — brojač, red čekanja, redak zapisnika, neki redak negdje — proba mora pogledati popratni učinak. Brojanje prije i poslije u svakoj uključenoj tablici ovdje je zahtijevalo dvadeset redaka i dvaput pretvorilo dvosmislen rezultat u nedvosmislen: jednom za filtar, jednom za 404.
Dva od dvanaest mjesta ostala su prazna i s identitetom preglednika: stupac botova, ispravno, i popis upućujućih stranica koji nije zabilježio poslanu upućujuću stranicu. Drugo se ovdje ne objašnjava jer još nije istraženo. Navodi se jer bi druga mogućnost bila objaviti tablicu s jedanaest redaka i nazvati ih dvanaest.