Sissejuhatus
Tere, Habro inimesed. Hiljuti lahendasin QA Lead positsiooni testĂŒlesande ĂŒhes finantstehnoloogia ettevĂ”ttes. Esimene ĂŒlesanne, koostada testiplaan koos tĂ€ieliku kontrollnimekirja ja nĂ€idistestjuhtumitega elektrilise veekeetja kontrollimiseks, lahendati triviaalsetel alustel:
Parimat testiplaani koos tÀieliku kontrollnimekirjaga on raske vÀlja mÔelda.
Kuid teine osa osutus kĂŒsimuseks: "Kas on olemas mingeid probleeme, mis on ĂŒhised kĂ”igile testijatele ja takistavad töötamast suurema efektiivsusega?"
Esimene mĂ”te, mis mulle pĂ€he tuli: loetlege kĂ”ik rohkem-vĂ”i-vĂ€hem mĂ€rgatavad probleemid, millega olen testimise kĂ€igus kokku puutunud, kĂ”rvaldage vĂ€iksemad mured, ĂŒlejÀÀnud ĂŒldistada. Kuid kiiresti sain aru, et induktiivne meetod vastab kĂŒsimusele, mis ei kehti mitte "kĂ”igile", vaid parimal juhul vaid "enamiku" testijate kohta. SeetĂ”ttu otsustasin lĂ€heneda teiselt poolt, deduktiivselt, ja see, mis vĂ€lja tuli.
MÔisted
Esimene asi, mida ma tavaliselt teen, lahendades uut ĂŒlesannet, on see, et pĂŒĂŒan aru saada, millest see ĂŒldse rÀÀgib, ja selleks on vaja mĂ”ista sĂ”nade tĂ€hendust, millega see esitatakse. Peamised sĂ”nad, millega on vaja tutvuda, on jĂ€rgmised:
- probleem
- testija
- testija töö
- testija töö efektiivsus
Vaatame Wikipedia ja terve mÔistuse poole:
(vanakreeka ÏÏÏÎČληΌα) laias tĂ€henduses - keeruline teoreetiline vĂ”i praktiline kĂŒsimus, mis vajab uurimist, lahendamist; teaduses - vastuoluolukord, mis esitab end vastandlike seisukohtadena mingi nĂ€htuse, objekti, protsessi seletamisel ja vajab selle lahendamiseks adekvaatset teooriat; elus on probleem sĂ”nastatud inimestele arusaadaval kujul "tean, et ei tea kuidas", st on teada, mida on vaja saavutada, kuid teadmata, kuidas seda teha. Tuli hilisest ladina keelest problÄma, kreekakeelsest ÏÏÏÎČληΌα "ette visatud, ette seatud"; ÏÏÎżÎČÎŹÎ»Î»Ï "ette viskama, endale esitama; sĂŒĂŒdistama."
TÀhenduse poolest mitte palju, pÔhimÔtteliselt "probleem" = "mis tahes asi, millega tuleb tegeleda."
â spetsialist (me ei hakka liikideks jagama, kuna meid huvitavad kĂ”ik testijad), kes osaleb komponendi vĂ”i sĂŒsteemi testimises, mille tegevuse tulemus on:
â testimisele seotud tegevuste kompleks.
(ladina keeles effectivus) â suhe saavutatud tulemuse ja kasutatud ressursside vahel (:2015).
â tegevuste (tulemuste) jĂ€rjepidevuse tagajĂ€rg (lĂ”pptulemus) vĂ”i sĂŒndmuste kvaliteetne vĂ”i kvantitatiivne vĂ€ljendus. VĂ”imalikud tulemused hĂ”lmavad eeliseid, ebamugavusi, kasu, kaotust, vÀÀrtust ja vĂ”itu.
Nagu "probleemi" puhul, ei ole tÀhendus vÀga palju muud: midagi, mis tuli vÀlja töö tulemusena.
â kvantitatiivselt mÔÔdetav inimese vĂ”i inimeste tegevuse tĂ€itmise vĂ”imalus; tingimused, mis vĂ”imaldavad teatud ĂŒmberkujundamiste abil soovitud tulemust saavutada. Testija on inimene, ja vastavalt eluliste ressursside teooriale, on igal inimesel neli majanduslikku aktiviti:
raha (tulu) â ressurss, mis on taastuv;
energia (elujĂ”ud) â ressurss, mis on osaliselt taastuv;
aeg â ressurss, mis on fikseeritud ja pĂ”himĂ”tteliselt mitte-taastuv;
teadmised (informatsioon) â ressurss, mis on taastuv, see on osa inimkapitalist, mis vĂ”ib kasvada ja ka kaduda..
Tahaksin mĂ€rkida, et tĂ”hususe mÀÀratlemine meie puhul ei ole tĂ€iesti korrektne, kuna mida rohkem teadmisi me kasutame, seda madalam on tĂ”husus. SeetĂ”ttu ma mÀÀratleks seal tĂ”hususe ĂŒmber kui âsuhe saavutatud tulemuse ja kulutatud ressursside vahelâ. Siis on kĂ”ik korrektne: teadmisi töö kĂ€igus ei kulutata, kuid need vĂ€hendavad ainukese pĂ”himĂ”tteliselt mitte-taastuva ressursi testija - tema aega - kulutusi.
Lahendus
Nii et otsime testeijaid puudutavaid globaalseid probleeme, mis halvendavad nende töö tÔhusust.
Olulisem ressurss, mis testija tööle kulub, on tema aeg (teised ressursid on mingil moel temaga seostatavad), ja et me saaksime rÀÀkida korrektsetest tÔhususe arvutustest, tuleb ka tulemus tuua ajaga seotuks.
Selleks vĂ”tame arvesse sĂŒsteemi, mille elujĂ”ulisust tagab testija oma tööga. Selline sĂŒsteem on projekt, mille meeskonnas on testija. Projekti elutsĂŒkli vĂ”ib umbkaudu kujutada jĂ€rgmisena:
- NÔuetega töötamine
- Tehnilise ĂŒlesande vormistamine
- Arendus
- Testimine
- Tootmisseviimine
- Tugi (mine p.1 juurde)
Samas saab kogu projekti rekursiivselt jagada alaprojektideks (nĂ€iteks funktsioonideks), millel on sama elutsĂŒkkel.
Projekti seisukohalt on selle rakendamise efektiivsus seda suurem, mida vÀhem aega sellele kulutatakse.
Nii jĂ”uame projekti seisukohalt maksimaalse testija efektiivsuse mÀÀratlemiseni â see on projektis selline seisund, kus testimisele kuluv aeg on null. Kuid kĂ”igi testijate ĂŒhine probleem on see, et sellele ajale ei ole vĂ”imalik jĂ”uda.
Kuidas sellega toime tulla?
KokkuvÔtted on tÀiesti ilmseid ja neid on juba ammu kasutatud:
- Arendamine ja testimine peaksid algama ja lÔppema peaaegu samaaegselt (sellega tegeleb tavaliselt osakond ). Ideaalne variant on see, kui kogu arendatav funktsionaalsus on valmisoleku hetkeks juba kaetud automaatsete testidega, mida on korraldatud regressioonitestimiseks (ja kui vÔimalik, ka eelcommit-testimiseks) mingi .
- Mida rohkem on projektis funktsioone (mida keerukam ta on), seda rohkem aega tuleb kulutada kontrollimiseks, et uus funktsionaalsus ei rikuks vana. Sellega seoses, mida keerukam projekt on, seda enam on vaja automatiseerimist .
- Iga kord, kui lastame vea tootmisse ja kasutaja selle leiab, peame kulutama lisatĂ€htaega projekti elutsĂŒkli lĂ€bimiseks alates p.1 (NĂ”uetega töötamine, antud juhul kasutajate jaoks). Kuna vea pĂ”hjused on ĂŒldjuhul teadmata, on meile jÀÀnud aga ĂŒks lahendus â iga kasutajate poolt leitud viga peab olema lisatud regressioonitestimisse, et olla kindel, et see ei ilmne enam.
Allikas: habr.com
