Archive for October, 2005
Našao sam grešku! Što sad?

Budiš se. Još jedno maglovito, prohladno jesenje jutro. Tvoj vjerni kućni ljubimac Čarapko ti već skače po krevetu. Gladan je. Da bi prehranio njega, ali i sebe, moraš opet u lov. Jer jedino što može utažiti njegovu i tvoju glad je meso tek ubijene greške.
Navlačiš na sebe kožu greške koja je zadnja završila na tvom tanjuru. Izgledajući kao greška, lakše ćeš im se prikrasti. Smrad raspadajuće kože će prikriti tvoj miris. Krećeš u obližnju šumu. Lokalno stanovništvo je zove Aplikacija. Čarapko, tvoj vjerni pratilac, već njuška okolo.
Ovaj put imaš sreće. Vidiš krdo grešaka. Čarapko ih potjera u trk, a ti odvajaš najslabiju jedinku iz krda i bacaš se na nju. Nakon par sekundi, ulovljena je.
Vraćaš se nazad iz sanjarenja i spremaš Čarapka u džep. Ti ne ubijaš greške. Ti ih samo hvataš. Programeri ubijaju greške.
Sad imaš grešku. Ali još nije mrtva. Nekad prođe podosta vremena dok programer ne ubije baš tu grešku. Kako možeš biti siguran da se neće zaboraviti na nju? Ako zaboraviš na nju, to znači da je ovaj lov bio uzaludan. Čarapku bi slomio srce. Znaš da ne možeš gledati njegove suze.
Slanje pisma programeru nije baš korisno. Pismo se uvijek može izgubiti.
Vidio sam da ljudi rade popise grešaka u Excelu. Iako se jako volim služiti tim programom, za ovu svrhu se nije pokazao kao najbolje rješenje.
Neka tradicionalna rješenja, poput pisanja na ploči ili papiru, mogu biti korisna samo za manji broj grešaka.
Testirao sam aplikacije koje nikad nisu bile sustavno tesirane, a koristile su se godinama. Kad sam ih počeo testirati, nalazio sam i po više desetaka grešaka dnevno. Mogu zamisliti izraz lica programera koji u svom sandučiću ugleda petesetak pisama, ili još bolje, ploču išaranu mojim divnim rukopisom.
Kako bi bili sigurni da se niti jedna greška neće zagubiti, mi koristimo FogBugz. Vrlo je jednostavan za upotrebu i jedan od najkorisnijih alata kojima se služim.
Više o njemu, uskoro.
Testiranje. Kako početi?

Sjećam se svojih prvih dana na ovom poslu. Testirao sam istu aplikaciju koju i sad testiram. Srećom, naslijedio sam popriličnu količinu testova (ali na žalost samo za tu aplikaciju).
Posjeli su me za računalo, dali mi stotinjak testova napisanih u Wordu, url aplikacije (na stroju za testiranje, ne url gdje je sve “za pravo”), korisničko ime i lozinku administratora i rekli: “Testiraj”.
Nakon nekoliko minuta osjećao sam se kao riba u vodi.
Testove sam poslije prebacio iz Worda u Excel (jako volim Excel), dodao koju kolonu, izbacio pokoju, popravio neke greščice koje sam našao (o da, i testeri rade greške)…
Ovo je jedan od tih testova. Ime mu je Napravi-Korisnika, a prezime Test-Funkcionalnosti. O klanovima testova (prepoznaju se po prezimenu) će biti riječi ovih dana. Test-Funkcionalnosti, naravno, provjerava da li neka funkcionalnost aplikacije radi ono što bi trebala. Svako drugo testiranje odbija, pozivajući se na kolektivni ugovor koji je njegov klan potpisao.
Svi testovi pretpostavljaju da je korisnik prijavljen u aplikaciju i da se nalazi na početnoj stranici (osim naravno testova za prijavu i odjavu).
- broj testa: 1
- korisnik: administrator
- naslov: napravi korisnika
- koraci:
- klikni link “napravi korisnika”
- popuni podatke, samo obavezna polja, označena * (zvjezdicom)
- klikni dugme “nastavi”
- postavi ovlasti pristupa za pojedine zajednice
- klikni dugme “spremi”
- ulazni podaci:
- titula
- ime
- prezime
- država
- e-pošta
- korisničko ime
- lozinka
- ponovi lozinku
- ovlasti pristupa za pojedine zajednice
- očekivani rezultati
- povratna informacija da je korisnik napravljen
- korisnik je napravljen
Najzabavnija greška na koju sam ikad naletio

Za jednu našu web aplikaciju smo radili novu funkcionalnost.
Aplikacija služi za komunikaciju između korisnika.
Podijeljena je na radna mjesta (e-Workspaces). Ona okupljaju korisnike sa nekim interesom (moje omiljeno radno mjesto je Krigla, tamo se sve vrti oko toga gdje je piva najveća, najhladnija i najjeftinija).
Nakon registracije, korisnik traži članstvo u nekom radnom mjestu (ili više njih). Tamo komunicira s ostalim korisnicima.
Kako?
- sudjelovanjem u diskusijama – pije li se piva iz čaše (krigle?) ili boce
- dodavanjem dokumenata – slike podložaka, boca, limenki…
- dodavanjem najava – “tad i tad” besplatna piva “tamo i tamo”
- zadataka – ovaj vikend “taj i taj” kupuje pivu, a “taj i taj” se brine da bude hladna
- linkova – piva.org
- kontakata – adrese svih pivovara
- popunjavanjem kalendara događajima – dani “te i te” pive
- sastancima – godišnja skupština pivoljubaca
- …
Sve funkcionalnosti aplikacije su dostupne samo registriranim korisnicima. Sad su poželili da su neke stvari dostupne i neregistriranim korisnicima. Nova funkcionalnost je nazvana public pages (interno sam si to preveo kao javne stranice).
Testirao sam u mom omiljenom pregledniku Firefox-u (FF).
Napravio sam novo radno mjesto koje sam nazvao Željko, po jednom testeru.
Napunio sam moje novo radno mjesto raznolikim sadržajima (jednu datoteku možete vidjeti na slici).
Dopustio sam da sav sadržaj bude vidljiv i na javnim stranicama.
Malo sam kliktao okolo po tim javnim stranicama, kad odjednom, otvori mi se stranica Željka Joksimovića, srpskog pjevača.
Možda je netko gledao Eurosong 2004, gdje je pjevao Lane Moje (ovaaaj… nisam to gledao, pročitao sam upravo na njegovim stranicama).
E, to me stvarno iznenadilo.
Probao sam ponoviti grešku, i vrlo brzo uspio.
Obrisao sam sve iz tog radnog mjesta, dodao nove stvari, obrisao cijelo radno mjesto, pa ga napravio iznova, i još puno toga. Nakon svake navedene akcije i malo kliktanja po javnim stranicama, opet sam uspio završiti kod imenjaka.
Pokušao sam ponoviti grešku i u Internet Explorer-u (IE).
Tamo sam naletio na sasvim drugu grešku.
Pojavi mi se stranica sa porukom “The page cannot be displayed”, a u adresnoj traci piše “http://željko/”.
Opa!
Naime, javne stranice su imale grešku u navigaciji. Na nekom mjestu (ne sjećam se više kojem), umjesto da me usmjere na “http://{url_aplikacije}/Public/{ime_radnog_mjesta}”, poslalo me na “http://{ime_radnog_mjesta}”, što je u ovom slučaju bilo “http://željko/”.
Naravno, taj url ne postoji i IE me je lijepo o tome obavijestio.
FF bi isto bio usmjeren na http://željko/, ali on kad ne bi našao taj url, napravio bi Google pretragu za “željko” i automatski (bez ikakvog pitanja) otvorio stranicu koja je prva na listi.
Sad znam tko je prvi na listi.
