Dio 1 – Plan i rizik
Dio 2 – Procjena, metrike, izvještaj
Dio 3 – Kontinuirana integracija i regresija
Praksa – Test plan i CI za DeliveryApp
Materijale priredio Erkan Islamović
erkan.islamovic@eubd.edu.ba · erkan.islamovic@gmail.com
Petnaest sedmica: svaka ima tri časa teorije i tri časa praktične nastave. Danas: poglavlje 14 (Sedmica 14, označeno). Isti primjer kroz knjigu: DeliveryApp, narudžba N-1001.
| Sed. | Poglavlje | Teorija (3 časa) | Praksa (3 časa) |
|---|---|---|---|
| 1 | Zašto testiramo | Uvodne priče; greška, defekt, otkaz; sedam principa; DeliveryApp | Tabela očekivanih cijena rukom |
| 2 | Proces i nivoi | Test proces; nivoi i V-model; vrste; statičko testiranje | Recenzija zahtjeva DeliveryApp |
| 3 | Manuelno testiranje | Test slučaj; izvještaj o defektu; istraživačko testiranje | Test slučajevi za web stranicu |
| 4 | Automatizovano testiranje | Šta automatizovati; piramida testova; prvi test | Prvi pytest |
| 5 | Jedinično testiranje | AAA; fixture, parametri, izuzeci; TDD | Testovi za dostavu i popust |
| 6 | Bijela kutija | Graf toka; pokrivenost; ciklomatska složenost | coverage.py do 100 % grana |
| 7 | Tok podataka | Definicija i upotreba; anomalije; statička analiza, mutacije | ruff, mypy, ručna mutacija |
| 8 | Crna kutija | Ekvivalencija i granice; tabela odlučivanja; stanja | Lov na pet grešaka |
| Sed. | Poglavlje | Teorija (3 časa) | Praksa (3 časa) |
|---|---|---|---|
| 9 | Model i integracija | Model; strategije integracije; API | TestClient za API |
| 10 | Sistemsko testiranje | Sistemsko; performanse i sigurnost; prihvatno i BDD | Locust, Gherkin |
| 11 | OO testiranje | Stanje objekta; nasljeđivanje; dvojnici | Narudzba, unittest.mock |
| 12 | Paralelne aplikacije | Trka podataka; zastoj; nestabilni testovi | Niti, 1000 ponavljanja |
| 13 | Web aplikacije | Web i DOM; Playwright; Page Object, pristupačnost | Playwright za DeliveryApp |
| 14 | Upravljanje testiranjem | Test plan i rizik; metrike; CI/CD | GitHub Actions |
| 15 | Alati, AI, projekat | Pregled alata; AI u testiranju; ISTQB | Odbrana projekta |
U nedjelju, 22. aprila 2018., britanska banka TSB završila je projekat koji je pripreman godinama: podaci o klijentima preseljeni su sa starog računarskog sistema, koji je banka do tada iznajmljivala od druge banke, na novu platformu koju je napravila njena nova vlasnica, španska banka Sabadell. Sami podaci prešli su bez gubitka. Ali kad su klijenti u ponedjeljak pokušali ući u svoj račun, nova platforma je odmah počela padati. Ljudi se nisu mogli prijaviti, neki su vidjeli tuđe račune i tuđe iznose, plaćanja nisu prolazila, a poslovnice nisu mogle pomoći jer ni njihov sistem nije radio. Problemi su pogodili sve poslovnice i značajan dio od 5,2 miliona klijenata, a banka se potpuno vratila u normalan rad tek u decembru 2018. Primila je preko 222 000 pritužbi, isplatila desetine miliona funti odštete, a direktor je podnio ostavku.
Četiri godine kasnije, u decembru 2022., britanski regulatori kaznili su TSB sa 48,65 miliona funti zbog propusta u upravljanju rizikom i nadzoru nad projektom. Nezavisni izvještaj koji je banka naručila ocijenio je da ni nova platforma ni firma koja ju je vodila nisu bile spremne za rad sa svim klijentima, a da su rizici i rezultati testiranja nedovoljno provjereni prije odluke da se krene. Problem, dakle, nije bio samo u nekom testu koji je falio. Bio je u upravljanju: šta se testira, koliko, ko odlučuje da je dovoljno, i na osnovu čega. To je tema ovog poglavlja.
U poglavljima 1 do 13 naučili smo kako se testira: tehnike, alati, nivoi. Sada se pitamo kako se testiranje vodi: kako se planira, kako se bira šta je najvažnije kad nema vremena za sve, kako se prati napredak i kako se, na kraju, donosi odluka da li izdanje ide korisnicima. Prvo test plan i rizik. Zatim procjena, metrike i izvještaj. Na kraju kontinuirana integracija: kako da se svi testovi iz ove knjige sami pokrenu pri svakoj izmjeni koda, alatom GitHub Actions.
push pokreće zadate korake (testove, analizu, isporuku).Nakon poglavlja možete:
razlikovati test strategiju i test plan; napisati kratak test plan za izdanje DeliveryApp; postaviti ulazne i izlazne kriterije; procijeniti rizik kao vjerovatnoća × uticaj i iz njega odrediti prioritete; procijeniti trajanje testiranja metodom tri tačke; izabrati korisne metrike i izbjeći opasne; izračunati DRE; napisati izvještaj o stanju testiranja i preporuku za odluku o izdanju; objasniti kontinuiranu integraciju i isporuku; napisati GitHub Actions fajl koji pokreće ruff, pytest s pokrivenošću i Playwright testove; izabrati testove za regresiju.
| Čas | Sadržaj | Na času |
|---|---|---|
| Teorija 1 | 14.1–14.3 Strategija i plan; kriteriji; rizik | Šta testirati prvo u izdanju 1.1? |
| Teorija 2 | 14.4–14.6 Procjena; metrike; izvještaj i odluka o izdanju | Da li bi vi pustili izdanje? |
| Teorija 3 | 14.7–14.9 CI i CD; GitHub Actions; regresija | Crveni znak na pull requestu |
Testiranje bez plana liči na putovanje bez mape: možete stići, ali ne znate kad, koliko ste potrošili, ni šta ste propustili. Dva dokumenta daju mapu:
Test strategija je opšti pristup, isti za mnoga izdanja. Za DeliveryApp bi mogla reći: pravila se testiraju jediničnim testovima (pytest), API testovima TestClienta, web stranica Playwrightom; svaki push pokreće automatske testove; pokrivenost grana mora biti bar 90 %; prije svakog izdanja radi se istraživačko testiranje od dva sata.
Test plan je za jedno izdanje: šta je novo, šta je rizično, šta se testira, ko, do kada. Standard ISO/IEC/IEEE 29119-3 predlaže sadržaj; skraćena verzija za DeliveryApp:
| Dio plana | DeliveryApp, izdanje 1.1 |
|---|---|
| predmet | napojnica za dostavljača (PP-8), narudžba za preuzimanje (poglavlje 11), vrijeme dostave (PP-9) |
| šta se ne testira | plaćanje karticom (servis banke se ne mijenja; samo regresija) |
| pristup | TDD za nove funkcije; ugovorni testovi za podklase; BDD scenariji za napojnicu; Playwright za ekran napojnice; regresija svih postojećih testova |
| okruženje | testno okruženje s izmišljenim podacima (K-01 … K-05); predprodukcija za sistemski test i Locust |
| raspored | 10 radnih dana; dani 1–3 novi testovi, 4–8 izvršavanje, 9 regresija i istraživanje, 10 izvještaj |
| uloge | vođa testiranja, dva testera, programer za automatizaciju, vlasnik proizvoda za prihvatanje |
| rizici projekta | testno okruženje kasni; vlasnik proizvoda nedostupan za BDD sastanak |
| ulazni kriteriji | kod je u grani release-1.1; svi postojeći automatski testovi prolaze; testno okruženje radi |
| izlazni kriteriji | svi testovi za rizike ≥ 12 izvršeni i prolaze; nema otvorenih defekata ozbiljnosti „kritična” ili „visoka”; pokrivenost grana ≥ 90 %; NZ-1 ispunjen u predprodukciji |
| rezultati | test slučajevi, izvještaji o defektima, dnevni status, završni izvještaj s preporukom |
Plan nije ugovor koji se ne smije mijenjati. Kad se nešto promijeni (okruženje kasni, otkriven je novi rizik), plan se ažurira, a promjena se zapiše.
Najvažniji redovi plana su kriteriji. Bez njih „gotovo” znači „ponestalo je vremena”.
Ulazni kriteriji sprečavaju gubljenje vremena: nema smisla početi sistemsko testiranje ako se server ne pokreće ili ako polovina jediničnih testova pada.
Izlazni kriteriji su mjerljivi uslovi za kraj. Dobri izlazni kriteriji su:
Izlazni kriterij nije automatska odluka. Ako kriterij nije ispunjen, tim predlaže, a odgovorni odlučuju, uz otvoreno izrečen rizik: „Izdanje ide sa dva otvorena defekta srednje ozbiljnosti, D-7 i D-9; uticaj je…; plan popravke je…”. Kod TSB-a, prema kasnijim nalazima, odluka da se krene donesena je bez dovoljno provjerenih informacija o tome koliko je sistem spreman. Izlazni kriteriji i pošten izvještaj su upravo alati protiv toga.
Vremena nikad nema za sve (princip iz poglavlja 1: iscrpno testiranje je nemoguće). Šta testirati prvo i najviše? Odgovor daje rizik:
Obje veličine se procjenjuju na skali od 1 do 5. Vjerovatnoća pita: koliko je vjerovatno da tu ima greške? (Novo i složeno je vjerovatnije od starog i jednostavnog.) Uticaj pita: koliko je loše ako greška stigne do korisnika? (Novac i sigurnost su gori od izgleda.)
| Dio DeliveryApp | Vjerovatnoća | Uticaj | Rizik | Šta to znači |
|---|---|---|---|---|
| plaćanje | 3 | 5 | 15 | najviše testova, rano; sistemski i sigurnosni testovi |
| cijena dostave | 3 | 4 | 12 | granice, tabela, mutacije (poglavlja 6–8) |
| otkazivanje (PP-6) | 2 | 4 | 8 | prelazi stanja, model |
| napojnica (novo u 1.1) | 2 | 3 | 6 | TDD, granice, BDD scenarij |
| slika profila | 2 | 1 | 2 | jedan ručni test; može i poslije izdanja |

Iz tabele slijedi redoslijed i dubina: plaćanje se testira prvo i najtemeljnije, slika profila posljednja i najlakše. Ako ponestane vremena, nije testirano ono što najmanje boli.
Procjenu ne radi tester sam. Vjerovatnoću najbolje znaju programeri („ovaj dio smo prepravljali tri puta”), a uticaj vlasnik proizvoda i korisnici („ako narudžba ne stigne, gubimo kupca”). Najbolje je procijeniti zajedno, na kratkom sastanku.
DeliveryApp uvodi plaćanje gotovinom pri preuzimanju. Procijenite vjerovatnoću i uticaj. – Npr. vjerovatnoća 3 (novo, ali jednostavno), uticaj 4 (novac, ali kupac plaća pred restoranom, pa se greška brzo vidi): rizik 12. Odmah do cijene dostave po prioritetu.
Odgovori: tipka R ili klik na zamućeno polje.
„Koliko će trajati testiranje?” je pitanje koje vođa testiranja čuje prvo. Tačan odgovor ne postoji, ali postoje metode koje daju razuman odgovor:
Primjer: pisanje Playwright testova za ekran napojnice: O = 4 sata, M = 6 sati, P = 14 sati (ako se ekran bude mijenjao). E = (4 + 24 + 14) / 6 = 7 sati. Pesimistična vrijednost „vuče” procjenu naviše, i to je dobro: stvarni posao češće kasni nego što žuri.
„Testiranje je ono što ostane od vremena poslije programiranja.” Kad programiranje kasni, a datum izdanja ostane, testiranje se „stisne”. To je tačno ono što se desilo kod Healthcare.gov (poglavlje 10) i, prema kasnijim nalazima, rizik kod TSB-a. Procjena testiranja mora biti dio plana od početka, a skraćivanje testiranja je odluka o riziku, koja se mora izreći otvoreno.
Šta mjeriti tokom testiranja? Korisne metrike odgovaraju na pitanja onih koji odlučuju:
| Pitanje | Metrika | Primjer |
|---|---|---|
| Koliko smo odmakli? | izvršeni / planirani test slučajevi | 104 od 120 |
| Kakav je kvalitet? | prošli / izvršeni; otvoreni defekti po ozbiljnosti | 92 od 104; 0 kritičnih, 1 visok, 4 srednja |
| Šta nije testirano? | pokrivenost grana; pokrivenost rizika i zahtjeva | 98 %; svi rizici ≥ 12 pokriveni |
| Da li se defekti popravljaju? | otvoreni i zatvoreni defekti po danu | trend otvorenih pada |
| Koliko je testiranje bilo djelotvorno? | DRE | 90 % |
Slika 14.2 pokazuje tipičan grafikon napretka. Linija „izvršeno” zaostaje za planom u danima 5 i 6 (testno okruženje nije radilo), a linija „prošlo” pokazuje da se kvalitet popravlja kako se defekti zatvaraju.

DRE (Defect Removal Efficiency, učinkovitost otklanjanja defekata) mjeri koliko defekata je nađeno prije isporuke:
Primjer (izmišljeni projekat): prije isporuke nađeno 45 defekata, a korisnici su u prvom mjesecu prijavili još 5. DRE = 45 / (45 + 5) = 90 %. Jedan od deset defekata „pobjegao” je korisnicima. Ako je taj jedan bio u plaćanju, 90 % nije uteha: DRE se zato gleda i po ozbiljnosti.
Opasne metrike, koje se lako pretvore u „igru brojeva”:
Pravilo: metrika služi da se postavi pitanje, a ne da se dodijeli nagrada ili kazna.
Izvještaj o testiranju je za ljude koji odlučuju, a nemaju vremena čitati 120 test slučajeva. Dobar izvještaj ima jednu stranu i odgovara na pet pitanja:
Primjer završnog izvještaja (izmišljen):
DeliveryApp 1.1 – završni izvještaj o testiranju, dan 10. Pokriveno: svi rizici ≥ 6 (plaćanje, cijena dostave, otkazivanje, napojnica); 118 od 120 test slučajeva izvršeno, 110 prošlo; pokrivenost grana 98 %; NZ-1 ispunjen u predprodukciji (95. percentil 0,8 s pri 200 korisnika). Nije pokriveno: slika profila (rizik 2); dva test slučaja za stari preglednik, jer okruženje nije bilo dostupno. Otvoreni defekti: 0 kritičnih, 1 visok (napojnica se na ekranu telefona prikazuje ispod dugmeta Naruči), 4 srednja, 3 niska. Preostali rizik: kupci na telefonu možda neće vidjeti napojnicu prije narudžbe; novac nije ugrožen (iznos je tačan). Preporuka: izdati uz uslov da se visok defekt popravi i provjeri (procjena: 1 dan), ili izdati bez napojnice na telefonu (skrivena opcija) i dodati je u 1.1.1.
Primijetite: izvještaj ne kaže „sve je u redu” niti „ništa ne valja”. Kaže šta znamo i šta ne znamo, i daje opcije. Odluka je na vlasniku proizvoda, ali je informisana.
Regulatori su u slučaju TSB-a posebno istakli da uprava banke nije dobila niti tražila dovoljno informacija o spremnosti nove platforme i rizicima prije odluke da se krene. Pošten izvještaj testera, s jasno izrečenim preostalim rizicima, je dio sigurnosnog sistema firme, ne formalnost.
Odgovori: tipka R ili klik na zamućeno polje.
U knjizi imamo stotine automatskih testova. Ali test koji niko ne pokrene ne pomaže. Kontinuirana integracija (CI) znači: svaka izmjena koda se odmah spoji s ostatkom i automatski provjeri, na serveru, bez da se iko sjeti da pokrene testove.
Slika iz života: kontrola na traci u fabrici. Ne čeka se kraj smjene da se pregleda 1000 proizvoda; svaki proizvod prolazi kroz istu kontrolu odmah, i traka stane čim nešto ne valja.
Tok u DeliveryApp (slika 14.3):
push) ili otvori pull request (zahtjev da se izmjena spoji u glavnu granu);
Prednosti su ogromne: greška se otkrije minutama poslije nastanka, dok se programer još sjeća šta je mijenjao; niko ne može „zaboraviti” pokrenuti testove; i glavna grana je uvijek u ispravnom stanju.
Isporuka u produkciju se danas često radi postepeno, da se rizik smanji i poslije testiranja:
Ovo se ponekad zove „pomjeranje udesno” (shift right): testiranje se nastavlja i u produkciji, nadzorom i postepenim uvođenjem. Velika migracija „sve odjednom”, kao kod TSB-a, nema tu zaštitu.
GitHub Actions čita fajlove iz foldera .github/workflows/ u repozitoriju i pokreće korake iz njih. Fajl za DeliveryApp je u primjeri/ci/.github/workflows/testovi.yml (kopira se u korijen repozitorija). Pisan je u formatu YAML: uvlačenje razmacima određuje šta pripada čemu.
name: testovi
on:
push:
branches: [main]
pull_request:
jobs:
pravila-i-api:
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.12", "3.13"]
defaults:
run:
working-directory: primjeri/deliveryapp
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Instalacija
run: pip install pytest coverage ruff fastapi httpx2 pytest-bdd uvicorn
- name: Statička analiza (ruff)
run: ruff check --isolated --exclude deliveryapp_v0.py,narucivanje_v0.py .
- name: Testovi s pokrivenošću
run: |
coverage run --branch -m pytest -q tests tests_bdd tests_sistem
coverage report -m --include="deliveryapp.py,napojnica.py,narucivanje.py,vrste_narudzbi.py,radno_vrijeme.py,api.py" --fail-under=90
- name: Prva verzija mora pasti (provjera da testovi zaista nešto hvataju)
run: |
if DeliveryApp=v0 pytest -q tests/test_granice.py; then
echo "Testovi nisu uhvatili greške prve verzije!"; exit 1
fiČitamo dio po dio:
on: kada se pokreće: pri svakom push u granu main i pri svakom pull requestu.jobs: poslovi; ovdje pravila-i-api i web (u fajlu ispod ovog dijela). Posao web ima needs: pravila-i-api, pa se pokreće tek kad prvi uspije.runs-on: ubuntu-latest: GitHub za svaki posao da novi, čist računar s Linuxom. Svaki put isto okruženje: nema „kod mene radi”.matrix: isti posao se izvrši dva puta, s Pythonom 3.12 i 3.13. Tako se rano vidi da li nova verzija Pythona nešto mijenja.steps: koraci redom. uses koristi gotove korake (preuzimanje koda, instalacija Pythona), a run pokreće naredbe kao u terminalu.Svi koraci ovog posla provjereni su lokalno, istim naredbama: ruff javlja „All checks passed!”, pytest daje 339 prolaza, pokrivenost navedenih fajlova je 98 % (prag 90 %), a testovi granica nad prvom verzijom padaju, kako i treba.
Posao web instalira Playwright s Chromiumom (playwright install --with-deps chromium), pokreće pytest tests_web sa snimcima ekrana i tragovima, i ako test padne, sačuva folder test-results/ kao artefakt koji se može preuzeti sa stranice GitHub Actions i otvoriti s playwright show-trace (poglavlje 13).
Posljednji korak je u postavkama repozitorija na GitHubu: zaštita grane (branch protection) za main, uz pravilo da pull request smije biti spojen samo ako su prošli poslovi pravila-i-api i web. Tada ni najžurniji programer ne može zaobići testove.
.github/workflows/ pri svakom push i pull requestu.Regresiono testiranje provjerava da izmjena nije pokvarila nešto što je radilo. Slika iz života iz AGENTS.md: popravili ste česmu u kuhinji, pa provjerite da niste poplavili kupatilo.
Idealno je pokrenuti sve testove pri svakoj izmjeni. Za DeliveryApp to i radimo: 339 testova traje oko dvije sekunde, web testovi još nekoliko. Ali u velikim projektima puna regresija traje satima. Tada se testovi dijele u slojeve:
| Kada | Šta se pokreće | Primjer u DeliveryApp |
|---|---|---|
pri svakom push | brzi testovi: jedinični, API, statička analiza (minute) | tests/, ruff |
| pri svakom pull requestu | uz to integracioni, sistemski, glavni web testovi | tests_sistem/, tests_web/ |
| svaku noć | sve, uključujući spore: svi preglednici, mutacije | --browser firefox --browser webkit, mutanti.py |
| prije izdanja | sve, plus opterećenje i istraživačko testiranje | Locust u predprodukciji, ručna sesija od 2 sata |
Kod izbora testova pomaže analiza uticaja: koji testovi pokrivaju izmijenjeni kod? Alat za pokrivenost (poglavlje 6) to zna, a neki alati automatski biraju samo testove pogođene izmjenom. Ali oprez: izmjena u cijena_dostave utiče i na API, web stranicu i Locust provjeru cijene. Kod sumnje, pokreće se više, ne manje.
Regresiona svita se mora održavati: zastarjeli testovi se brišu ili mijenjaju, nestabilni se popravljaju (poglavlje 12), a za svaki defekt nađen u produkciji dodaje se test koji bi ga uhvatio, da se nikad ne vrati.
Odgovori: tipka R ili klik na zamućeno polje.
Cilj je napisati test plan i procjenu rizika za izdanje 1.1, postaviti GitHub Actions za svoj repozitorij DeliveryApp i napisati završni izvještaj. Radi se u timovima od tri do četiri studenta (vođa testiranja, testeri, „vlasnik proizvoda”).
.github/workflows/ i kopirajte primjeri/ci/.github/workflows/testovi.yml. Prilagodite putanje (working-directory) svom repozitoriju.git push) i na kartici Actions pratite izvršavanje. Zapišite trajanje svakog posla.>= u > u cijena_dostave, greška D-01) u novoj grani i otvorite pull request. Koji korak pada? Kako to izgleda na stranici pull requesta?main tako da se pull request ne može spojiti dok testovi ne prođu. Pokušajte spojiti pokvareni pull request.playwright-tragovi. Otvorite trag lokalno.Rezultat koji se predaje: fajl rezultati-14.md s tabelom rizika, test planom, procjenama u tri tačke, vezom na repozitorij s radnim GitHub Actions fajlom i snimcima ekrana (zeleni i crveni pull request, zaštita grane), i završnim izvještajem s odlukom.
Rješenja su sakrivena – tipka R ili klik na okvir.
Procijenite rizik i poredajte po prioritetu: a) prikaz jelovnika; b) obračun popusta STUDENT10; c) slanje SMS-a „Narudžba je na putu”; d) prijava restorana u sistem.
Jedno razumno rješenje: b) vjerovatnoća 3 (prošle greške D-03, D-05), uticaj 4 (novac): 12; d) vjerovatnoća 2, uticaj 5 (bez prijave restoran ne prima narudžbe, a loša prijava je sigurnosni problem): 10; a) vjerovatnoća 2, uticaj 3: 6; c) vjerovatnoća 3, uticaj 2 (neugodno, ali narudžba stiže): 6. Redoslijed: b, d, a i c. Važno je obrazloženje, a ne tačan broj.
Prepravite izlazne kriterije: „Testiranje je gotovo kad je sve testirano i nema grešaka.”
Npr.: „Svi test slučajevi za rizike ≥ 10 su izvršeni i prolaze; izvršeno je najmanje 95 % ostalih test slučajeva; nema otvorenih defekata ozbiljnosti kritična ili visoka; za otvorene defekte srednje ozbiljnosti postoji dogovoren plan; pokrivenost grana je najmanje 90 %; regresiona svita prolazi u CI-ju.” „Sve testirano” i „nema grešaka” nisu mjerljivi niti mogući (poglavlje 1).
Regresiono testiranje: O = 1 dan, M = 2 dana, P = 7 dana. Izračunajte procjenu i objasnite zašto je veća od najvjerovatnije vrijednosti.
E = (1 + 8 + 7) / 6 = 16 / 6 ≈ 2,7 dana. Veća je od M = 2 jer pesimistična vrijednost (7 dana, npr. ako regresija nađe ozbiljne greške pa se mora ponavljati) povlači prosjek naviše; to odražava iskustvo da posao češće kasni nego što žuri.
Šta treba dodati u CI fajl da se Playwright testovi svake noći u 2 sata izvršavaju u tri preglednika?
U on dodati raspored, a u poseban posao (ili isti) naredbu s tri preglednika:
on:
schedule:
- cron: "0 2 * * *" # svaki dan u 02:00 (UTC)
# … u koracima posla:
- run: |
playwright install --with-deps chromium firefox webkit
pytest -q tests_web --browser chromium --browser firefox --browser webkitVrijeme u cron je po UTC-u, pa je 02:00 UTC u BiH 03:00 zimi i 04:00 ljeti.
Šef predlaže da se testeri ocjenjuju po broju prijavljenih defekata mjesečno. Šta odgovarate?
Takva metrika nagrađuje broj, a ne vrijednost: prijavljivale bi se sitnice i duplikati, rasle bi svađe s programerima, a niko ne bi htio raditi na dijelovima gdje je kod dobar (pa defekata nema). Bolje je pratiti kvalitet proizvoda i procesa: DRE po ozbiljnosti, broj defekata koji su stigli do korisnika, pokrivenost rizika, i koliko brzo se defekti popravljaju. Metrika služi za pitanja, ne za nagrade.