Osnovni problem testiranja

Uvod

Dobar dan, članovi Habr. Nedavno sam rješavao testni zadatak za poziciju QA Lead u jednoj fintech kompaniji. Prvi zadatak, sastaviti testni plan s kompletnim kontrolnim popisom i primjerima testnih slučajeva za provjeru električnog čajnika, riješio sam trivijalno:

Međutim, druga polovica postavila je pitanje: “Postoje li neki problemi koji su zajednički svim testerima i ometaju ih u radnoj učinkovitosti?”

Prvo što mi je palo na pamet: nabrojati sve primjetne probleme s kojima sam se susretao tijekom testiranja, isključiti sitnice i ostalo generalizirati. No brzo sam shvatio da će induktivna metoda odgovoriti na pitanje koje se odnosi ne na “sve”, nego, u najboljem slučaju, samo na “većinu” testera. Stoga sam odlučio pristupiti s druge strane, deduktivno, i evo što sam dobio.

Definicije

Prvo što obično radim kada rješavam novi zadatak je pokušati shvatiti o čemu se zapravo radi, a za to moram shvatiti značenje riječi koje ga opisuju. Ključne riječi koje treba razjasniti su sljedeće:

  • problem
  • tester
  • rad tester
  • učinkovitost rada testera

Obratimo se Wikipediji i zdravom razumu:
Problem (grč. πρόβλημα) u širem smislu — složeno teorijsko ili praktično pitanje, zahtijeva proučavanje i rješavanje; u znanosti — proturječnija situacija koja se pojavljuje u obliku suprotstavljenih pozicija u objašnjenju nekih fenomena, objekata, procesa i zahtijeva adekvatnu teoriju za njezino rješavanje; u životu se problem formulira u razumljivom za ljude obliku «znam što, ne znam kako», što znači da je poznato što treba dobiti, ali nije poznato kako to učiniti. Potiče od kasne lat. problēma, iz grč. πρόβλημα «bačeno unaprijed, postavljeno unaprijed»; od προβάλλω «baciti naprijed, izložiti pred sobom; optužiti».

Nema mnogo smisla, zapravo, “problem” = “bilo što s čim treba razriješiti”.
Tester — stručnjak (nećemo dijeliti po vrstama, jer nas zanimaju svi testeri), koji sudjeluje u testiranju komponente ili sustava, čiji je rezultat njegovog rada:
Rad testera — skup mjera povezanih s testiranjem.
Učinkovitost (lat. effectivus) — omjer između postignutog rezultata i korištenih resursa (ISO 9000:2015).
Rezultat — posljedica niza (niza) radnji (izvještaj) ili događaja, izraženih kvalitetno ili kvantitativno. Mogući rezultati uključuju prednost, neugodnost, korist, gubitak, vrijednost i pobjedu.
Kao i s "problemom", malo značenja: nešto što se dogodilo kao rezultat rada.
Resurs — kvantitativno mjerljiva mogućnost obavljanja određene aktivnosti od strane osobe ili ljudi; uvjeti koji omogućuju putem određenih transformacija postizanje željenog rezultata. Tester je osoba, a prema teoriji vitalnih resursa, svaka osoba je vlasnik četiri ekonomska sredstva:
novčanih sredstava (dohodak) — obnovljiv resurs;
energije (životna snaga) — djelomično obnovljiv resurs;
vremena — fiksni i načelno neobnovljiv resurs;
znanja (informacija) — obnovljiv resurs, to je dio ljudskog kapitala koji može rasti i propadati[1].

Želim napomenuti da definicija učinkovitosti u našem slučaju nije sasvim točna, jer što više znanja koristimo, to je niža učinkovitost. Stoga bih redefinirao učinkovitost kao "omjer između postignutog rezultata i utrošenih resursa". Tada je sve točno: znanje se pri radu ne troši, ali smanjuje utroške jedinstvenog načelno neobnovljivog resursa testera — njegovog vremena.

Rešenje

Dakle, tražimo globalne probleme testera koji pogoršavaju učinkovitost njihovog rada.
Najvažniji resurs koji se troši na rad testera je njegovo vrijeme (ostali se na neki način mogu prilagoditi njemu), a da bismo mogli govoriti o ispravnom izračunu učinkovitosti, potrebno je i rezultat prilagoditi vremenu.
Za to ćemo uzeti u obzir sustav čija održivost ovisi o radu testera. Takav sustav je projekt, u kojem ekipi pripada tester. Životni ciklus projekta možemo grubo predstaviti sljedećem algoritmu:

  1. Rad s zahtjevima
  2. Formiranje tehničke dokumentacije
  3. Razvoj
  4. Testiranje
  5. Pustanje u proizvodnju
  6. Podrška (ponovno na točku 1)

Pri tome se cijeli projekt može rekurzivno podijeliti na pod projekte (funkcionalnosti), s istim životnim ciklusom.
S gledišta projekta, učinkovitost njegove realizacije je veća što je manje vremena utrošeno na njega.
Tako dolazimo do definicije maksimalne moguće učinkovitosti testera s gledišta projekta – to je stanje projekta kada je vrijeme testiranja jednako nuli. A opći problem za sve testere je nemogućnost postizanja tog vremena.

Što učiniti s tim?

Zaključci su prilično očiti i mnogi ih već dugo koriste:

  1. Razvoj i testiranje trebaju započeti i završiti praktički istovremeno (time obično upravlja odjel QA). Idealan scenarij je kada su sve razvijene funkcionalnosti do trenutka spremnosti već pokrivene automatskim testovima, organiziranim u regresivno (a po mogućnosti i pre-commit) testiranje uz pomoć nekog CI.
  2. Što je više funkcionalnosti u projektu (što je složeniji), to više vremena treba potrošiti na provjeru da nova funkcionalnost nije pokvarila staru. Stoga što je složeniji projekt – to više automatizacije je potrebno regresivnog testiranja.
  3. Svaki put kada propustimo grešku u produkciji, a korisnik je pronađe, – moramo trošiti dodatno vrijeme na prolazak kroz životni ciklus projekta počevši od točke 1 (Rad s zahtjevima, u ovom slučaju, korisnicima). Budući da su uzroci propuštanja greške u općenitom slučaju nepoznati, jedini put optimizacije nam ostaje – svaka greška koju su pronašli korisnici mora biti uključena u regresivno testiranje, kako bismo bili sigurni da se više neće pojaviti.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster