Temeljni problem testiranja

Predstavitev

Dober dan, prebivalci Khabrovsk. Ravno sem reševal testno nalogo za prosto delovno mesto QA Lead za fintech podjetje. Prvo nalogo, ustvariti testni načrt s popolnim kontrolnim seznamom in primeri testnih primerov za testiranje električnega kotlička, je mogoče rešiti trivialno:

Toda drugi del se je izkazal kot vprašanje: "Ali obstajajo kakršne koli težave, skupne vsem preizkuševalcem, ki jim preprečujejo učinkovitejše delo?"

Prva stvar, ki mi je prišla na misel, je bila našteti vse bolj ali manj opazne težave, na katere sem naletel med testiranjem, izločiti malenkosti in povzeti ostale. Toda hitro sem ugotovil, da bo induktivna metoda odgovorila na vprašanje, ki ne velja za »vse«, ampak v najboljšem primeru le za »večino« preizkuševalcev. Zato sem se odločil pristopiti z druge strani, deduktivno, in tako se je zgodilo.

Opredelitve

Prva stvar, ki jo običajno naredim, ko rešujem nov problem, je, da poskušam razumeti, za kaj gre, in za to moram razumeti pomen besed, ki ga postavljajo. Ključne besede za razumevanje so naslednje:

  • problem
  • tester
  • delo testerja
  • učinkovitost testerja

Obrnimo se k Wikipediji in zdravi pameti:
Problem (starogrško πρόβλημα) v širšem smislu - kompleksno teoretično ali praktično vprašanje, ki zahteva študij in rešitev; v znanosti - protislovna situacija, ki se pojavi v obliki nasprotujočih si stališč pri razlagi kakršnih koli pojavov, predmetov, procesov in zahteva ustrezno teorijo za njeno rešitev; v življenju je problem oblikovan v obliki, ki je ljudem razumljiva: "Vem, kaj, ne vem, kako", to pomeni, da je znano, kaj je treba pridobiti, vendar ni znano, kako to storiti . Prihaja iz poznega. lat. problem, iz grščine. πρόβλημα »vržen naprej, postavljen spredaj«; iz προβάλλω »vreči naprej, postaviti predse; krivda".

Pravzaprav nima velikega smisla, "problem" = "vse, kar je treba rešiti."
Tester - specialist (ne bomo delili na vrste, saj nas zanimajo vsi preizkuševalci), ki sodeluje pri testiranju komponente ali sistema, katerega rezultat je:
Delo testerja — niz dejavnosti, povezanih s testiranjem.
Učinkovitost (lat. effectivus) - razmerje med doseženim rezultatom in porabljenimi sredstvi (ISO 9000: 2015).
Rezultat - posledica verige (niza) dejanj (rezultat) ali dogodkov, izražena kvalitativno ali kvantitativno. Možni rezultati vključujejo prednost, slabost, dobiček, izgubo, vrednost in zmago.
Tako kot pri "problemu" je malo pomena: nekaj, kar se je pokazalo kot rezultat dela.
vir - kvantitativno merljivo možnost opravljanja katere koli dejavnosti osebe ali ljudi; pogoji, ki omogočajo pridobitev želenega rezultata z uporabo določenih transformacij. Preizkuševalec je oseba in v skladu s teorijo vitalnih virov je vsaka oseba lastnik štirih ekonomskih sredstev:
denar (dohodek) je obnovljiv vir;
energija (življenjska sila) je delno obnovljiv vir;
čas je stalni in v bistvu neobnovljiv vir;
znanje (informacije) je obnovljiv vir, je del človeškega kapitala, ki lahko raste in se uniči[1].

Opozarjam, da definicija učinkovitosti v našem primeru ni povsem pravilna, saj več znanja kot uporabljamo, nižja je učinkovitost. Zato bi učinkovitost na novo opredelil kot »razmerje med doseženimi rezultati in porabljenimi sredstvi«. Potem je vse pravilno: znanje med delom ni izgubljeno, ampak zmanjša stroške preizkuševalčevega edinega bistveno neobnovljivega vira - njegovega časa.

odločitev

Iščemo torej globalne težave testerjev, ki zmanjšujejo učinkovitost njihovega dela.
Najpomembnejši vir, ki ga preizkuševalec porabi za delo, je njegov čas (nanj se lahko tako ali drugače skrči preostali del), in da bi lahko govorili o pravilnem izračunu učinkovitosti, je treba tudi rezultat skrčiti na čas. .
Za to razmislite o sistemu, katerega sposobnost preživetja zagotavlja preizkuševalec s svojim delom. Takšen sistem je projekt, katerega ekipa vključuje preizkuševalca. Življenjski cikel projekta lahko v grobem predstavimo z naslednjim algoritmom:

  1. Delo z zahtevami
  2. Oblikovanje tehničnih specifikacij
  3. Razvoj
  4. Testiranje
  5. Sprostitev v proizvodnjo
  6. Podpora (pojdi na element 1)

V tem primeru lahko celoten projekt rekurzivno razdelimo na podprojekte (features), z enakim življenjskim ciklom.
Z vidika projekta velja, da čim manj časa porabimo zanj, bolj učinkovito je njegovo izvajanje.
Tako pridemo do definicije največje možne učinkovitosti testerja z vidika projekta - to je stanje projekta, ko je čas za testiranje nič. Pogosta težava vseh preizkuševalcev je nezmožnost doseganja tega časa.

Kako ravnati s tem?

Zaključki so povsem očitni in jih mnogi uporabljajo že dolgo časa:

  1. Razvoj in testiranje se morata začeti in končati skoraj istočasno (to običajno izvaja oddelek QA). Idealna možnost je, ko je vsa funkcionalnost, ki se razvija, že pokrita s samodejnimi testi do trenutka, ko je pripravljena, organizirana v regresijsko (in, če je možno, predhodno sprejeto) testiranje z uporabo neke vrste CI.
  2. Več funkcij kot ima projekt (bolj kompleksen je), več časa bo treba porabiti za preverjanje, ali nova funkcionalnost ne pokvari stare. Bolj kot je projekt zapleten, več avtomatizacije je torej potrebno regresijsko testiranje.
  3. Vsakič, ko zgrešimo napako v produkciji in jo uporabnik najde, moramo porabiti dodaten čas skozi življenjski cikel projekta, začenši s točko 1 (Delo z zahtevami, v tem primeru uporabniki). Ker so razlogi za manjkajočo napako na splošno neznani, nam preostane samo ena optimizacijska pot – vsaka napaka, ki jo odkrijejo uporabniki, mora biti vključena v regresijsko testiranje, da se zagotovi, da se ne bo več pojavila.

Vir: www.habr.com

Dodaj komentar