Šiame „Test Automation Strategy“ pavyzdyje pridedamas nuolatinio pristatymo modelis su keliomis judriomis komandomis.
Ankstesniuose straipsniuose - visa tai Vikrus testavimo strategija taip pat kaip sukonfigūruoti projekto kokybės užtikrinimo funkciją nuo nulio ir kaip automatinis testavimas yra vienas iš pagrindinių elementų pradinėje sąrankoje.
Šiame „Test Automation Strategy“ pavyzdyje aš surašau pagrindinius dalykus, į kuriuos reikia atsižvelgti, kad kuo geriau išnaudotumėte bandymų automatikos pastangas.
Automatinis testavimas yra pagrindinė bet kokios judrios kūrimo metodikos veikla. Žengiant į nuolatinį diegimą, bandymų automatika tampa vis svarbesnė dėl greito atsiliepimo, kurį jis teikia kūrėjų komandai apie programos būklę.
Norint gauti šį greitą grįžtamąjį ryšį, automatiniai testai turi būti atliekami nuolat, turėtų būti greiti, o bandymų rezultatai turėtų būti nuoseklūs ir patikimi.
Norint tai pasiekti, dauguma patikrinimų turėtų būti atliekami kuriant naujas funkcijas. Kitaip tariant, kūrimas ir bandymai turėtų būti nuosekli veikla, o kokybė turėtų būti „kepama“ nuo pat pradžių užtikrinant, kad tai, kas kuriama, veikia ir kad ji nesugadino esamo funkcionalumo.
Tam reikia „apversti bandymo automatikos piramidę“, nustumiant GUI testus, kuriuos atlikti reikia daug laiko, iki žemesnių lygių, pvz. API sluoksnis, kuris gali būti paleistas iškart po vieneto bandymų kaip sudedamoji dalis, kad būtų užtikrintas pradinis pasitikėjimo lygis.
Susijęs:
Prevencija, o ne aptikimas - nors visų pirma reikėtų stengtis užkirsti kelią defektų atsiradimui programoje, technikos ir metodai nepatenka į šio pranešimo taikymo sritį. Čia apibrėžtos metodikos, leidžiančios greitai aptikti klaidas, kai jos įvedamos į sistemą, ir grįžtamasis ryšys.
Reikėtų teikti pirmenybę kokybei, o ne kiekiui. Daugeliu atvejų geriau išleisti naudojant vieną funkciją, kuri yra tvirta, o ne kelias ypatybes, kurios yra nepastovios. Kaip minimalus išleidimo kriterijus, jokia naujai sukurta funkcija neturėtų turėti jokių regresijos defektų.
Kaip jau minėta, greitas grįžtamasis ryšys apie programos būklę yra nepaprastai svarbus palaikant nepertraukiamą pristatymą, todėl yra suformuluotas procesas ir mechanizmas, pagal kurį galime greitai gauti grįžtamąjį ryšį.
Vienas iš būdų gauti greitą grįžtamąjį ryšį yra padidinti vienetų testų, integravimo testų ir API testų skaičių. Šie žemo lygio bandymai užtikrins apsaugą, užtikrinančią, kad kodas veikia pagal paskirtį, ir padės išvengti defektų atsiradimo kituose bandymų sluoksniuose.
Vieneto testai sudaro pagrindą bandymų automatizavimui aukštesniais lygmenimis.
Antrasis patobulinimo elementas yra regresijos testų vykdymas dažniau ir suderinimas su nuolatinės integracijos procesu, žr. Vėliau. Automatikos testavimas neturėtų būti vertinamas kaip izoliuota užduotis, bet veikiau kaip nuosekli veikla, įdėta į SDLC.
Automatiniai regresijos testai yra „Test Automation“ strategijos pagrindas.
Regresijos paketai yra sveiko proto patikrinimas, ar programą galima įkelti ir pasiekti. Taip pat reikėtų paleisti tik keletą pagrindinių scenarijų, kad įsitikintumėte, jog programa vis dar veikia.
Dūmų bandymo paketo tikslas yra išsiaiškinti akivaizdžiausias problemas, tokias kaip programa neįkeliama arba neįmanoma įvykdyti bendro vartotojo srauto; dėl šios priežasties dūmų bandymai turėtų trukti ne ilgiau kaip 5 minutės duoti greitą atsiliepimą, jei kas nors neveikia.
Dūmų bandymo paketas vykdomas kiekvieną kartą ir gali būti API ir (arba) GUI testų mišinys.
Funkciniai regresijos paketai , Kuris skirtas patikrinti programos funkcionalumą išsamiau nei dūmų bandymas.
Skirtingiems tikslams turi būti kelios regresijos pakuotės. Jei skirtingose programos skiltyse dirba kelios komandos, idealiu atveju turėtų būti skirtingi regresijos paketai, kuriuos galima sutelkti į tą sritį, kurioje komanda dirba.
Šiuos paketus turėtų būti galima paleisti bet kurioje aplinkoje, kai to reikia, su sąlyga, kad funkcijų elgesys visoje aplinkoje išlieka vienodas. Jie vykdomi kelis kartus per dieną ir turėtų trukti ne ilgiau kaip 15–30 minučių.
Kadangi šie funkciniai testai yra išsamesni, juos atlikti reikės daugiau laiko, todėl svarbu turėti daugumą funkcinių testų API sluoksnyje, kur testus būtų galima atlikti greičiau, kad galėtume būti 15–30 minučių terminas.
„End-to-End“ regresijos paketas, kuris išbando visą programą kaip visumą. Šių bandymų tikslas yra užtikrinti, kad įvairios programos dalys, kurios jungiasi prie įvairių duomenų bazių ir trečiųjų šalių programų, tinkamai veiktų.
„End-to-End“ testai nėra skirti išbandyti visas funkcijas, nes jos jau išbandytos funkcinės regresijos paketuose, tačiau šie testai yra „lengvi“, kurie tik patikrina perėjimus iš vienos būsenos į kitą ir saujelę. svarbiausių scenarijų ar vartotojo kelionių.
Šie bandymai daugiausia atliekami per GUI, nes jie tikrina, kaip vartotojai naudotųsi sistema. Laikas, kurį reikia atlikti, gali skirtis kiekvienai programai, tačiau jie paprastai vykdomi kartą per dieną ar naktį.
„Test Automation“ pradedama nuo vieneto lygio. Kūrėjai turėtų parašyti vieneto testus dėl visų sukurtų naujų funkcijų. Šie „Unit Tests“ yra pagrindas didesnei automatikos praktikai, kuri tęsiasi iki sistemos GUI testų.
Kūrėjai yra atsakingi už tai, kad už kiekvieną naują sukurtą funkciją būtų parašytas nuoseklių ir patikimų „Unit Testų“ rinkinys, įrodantis, kad kodas veikia taip, kaip numatyta, ir atitinka reikalavimus.
„Unit Tests“ suteikia komandai didžiausią IG, nes jie yra labai greitai vykdomi, lengvai prižiūrimi ir modifikuojami (nes nėra priklausomybių), o kai yra klaidų kode, jis greitai grąžinamas kūrėjui.
Vieneto testai atliekami kūrėjo mašinoje, taip pat KI aplinkoje.
Nors „Unit Tests“ yra paremtas klasės funkcijų testavimu, „Integration Tests“ sudaro aukštesnį lygį nuo „Unit Tests“, siekiant išbandyti klases, kurios kartu sudaro komponentą, kad suteiktų tam tikrą funkcionalumą. Šie bandymai atliekami tik tada, kai padalinio bandymai yra atlikti ir išlaikomi.
Aptarnavimo testai natūraliai vykdomi API sluoksnyje be GUI žiniatinklio sąsajos įsikišimo; taigi testai galėtų patikrinti funkcionalumą gryna forma, o kadangi testai tiesiogiai susiję su komponentais, juos greitai galima atlikti ir jie bus sudėtinės versijos dalis.
Kur reikia, tyčiojasi, pavyzdžiui wiremock bus naudojami kitų 3 priklausomybei įvertintirdšalių sistemoms ir kai tolesnėms sistemoms nėra galimybės pateikti bandymams reikalingų duomenų.
Integracijos testai ir (arba) paslaugų testai taip pat gali būti atliekami kūrėjo mašinoje ir gali būti kūrimo dalis, tačiau jei jie pradeda ilgai užtrukti, geriausia paleisti CI aplinkoje.
Tokie įrankiai kaip „SoapUI“ gali būti naudojami atliekant paslaugų testus.
Tipišką el. Prekybos programą galima suskirstyti į skirtingas programas arba „programas“, kurios teikia skirtingas funkcijas. „Programos testavimo“ sąvoka yra ta, kai bandymų, kurie išbando programos funkcionalumą, grupė yra organizuojama kartu ir vykdoma su norima programa. Šis paketas bus naudingas tais atvejais, kai komanda nori išleisti atskirą programą ir norėtų sužinoti, ar ji tinkamai veikia.
Programos bandymams paprastai reikalinga sąsaja, kad būtų galima sąveikauti su skirtingais komponentais, todėl tikimasi, kad šie bandymai bus vykdomi per GUI naršyklę.
Programos testavimo tikslas yra užtikrinti, kad programos funkcijos būtų funkciškai teisingos. Kadangi testai organizuojami taip, kad užtikrintų pasitikėjimą konkrečios programos sveikata, šie testai paprastai vadinami vertikaliaisiais bandymais, nes jie atlieka „žemyn“ tam tikrą programą. Testai yra labai išsamūs, o aprėptis yra didelė.
„Selen WebDriver“ galima naudoti norint atlikti šiuos automatinius bandymus su naršykle. Šis įrankis yra populiariausias atliekant naršyklės automatikos bandymus ir suteikia išsamią API, leidžiančią atlikti sudėtingus patikrinimus.
Automatiniai GUI testai, vykdomi prieš sistemą, tarnauja kaip įprasti vartotojų srautai, kelionės ar „nuo galo iki pabaigos“ scenarijai. Dėl šio tipo testų problemų (aptariamų toliau), jų bus kuo mažiau. Pabaigos-pabaigos scenarijai yra įtraukti į naktinio regresijos paketą.
Kaip testavimo automatikos strategijos dalį turime užtikrinti, kad sumažintume automatizuotų bandymų, vykdomų GUI sluoksnyje, skaičių.
Nors atliekant automatinius bandymus per GUI, yra geri ir prasmingi bandymai, imituojantys vartotojo sąveiką su programa, tačiau yra linkę į daugelį toliau išvardytų problemų:
Kadangi bandymai remiasi HTML lokatoriais, kad nustatytų žiniatinklio elementus, su kuriais bus sąveikaujama, kai tik ID pakeičiamas, bandymai nepavyksta, todėl jiems tenka daug priežiūros išlaidų.
GUI gali apriboti bandytojo galimybę visiškai patikrinti funkciją, nes GUI gali būti ne visa išsami informacija iš žiniatinklio atsakymo, kad būtų galima patikrinti.
Kadangi bandymai atliekami per GUI, puslapio įkėlimo laikas gali žymiai pailginti bendrą testavimo laiką, todėl atsiliepimai kūrėjams yra gana lėti.
Dėl minėtų problemų GUI automatizuoti testai suteikia mažiausią IG.
Naršyklės automatikos testai bus kuo mažesni ir bus naudojami imituojant vartotojo elgseną, įtraukiant bendruosius vartotojų srautus ir „nuo galo iki pabaigos“ scenarijus, kai vykdoma visa sistema.