Naudokite testus kaip įrodymus
BaigtaRinkitės patikrinimus, kurie gali atmesti klaidingą veikimą. Sugeneruotus testus peržiūrėkite taip pat atidžiai kaip sugeneruotą įgyvendinimą.
Leidžia TaigaKaip rašome
Patikrinkite, ar supratoteSugeneruotas testas imituoja autorizavimo funkciją taip, kad ji visada leistų prieigą. Ką įrodo sėkmingas rezultatas?Atlikite užduotį
Ko išmoksite
- Kiekvieną svarbų reikalavimą susiekite su prasmingu patikrinimu.
- Atskirkite vienetinių, integracinių ir visos eigos testų įrodymus.
- Atpažinkite testą, kuris kartoja tą pačią klaidingą prielaidą kaip įgyvendinimas.
Pradėkite nuo reikalavimo
Testai yra konkrečių teiginių įrodymai. Sėkmingas testų vykdymas neįrodo visų programinės įrangos savybių. Prieš prašydami testų, nustatykite svarbų veikimą ir klaidą, kurią kiekvienas patikrinimas turi aptikti.
Išgalvotam organizacijos duomenų eksportui pagrindinis reikalavimas yra duomenų izoliavimas. Organizacijos A naudotojas neturi gauti organizacijos B įrašų. Testas, kuris tik patikrina sėkmingą atsisiuntimą, šio reikalavimo neįrodo.
Paprašykite agento paaiškinti reikalavimo ir tikrinimo sąlygos ryšį. Taip lengviau aptikti trūkstamus atvejus, kol testų rinkinys dar neišaugo.
Pasirinkite tinkamą testo apimtį
Vienetinis testas gali greitai patikrinti nedidelę transformaciją. Integracinis testas gali patikrinti, kaip kartu veikia komponentai. Visos eigos testas gali patikrinti svarbią naudotojo veiksmų seką įdiegtoje ar ją atitinkančioje programoje.
Naudokite siauriausią apimtį, kuri suteikia reikiamus įrodymus. Formatavimo priemonei nereikia viso naršyklės testo kiekvienai įvesčiai. Autorizavimo ribai gali reikėti tikro maršruto ir duomenų prieigos kelio. Svarbiai sąveikai naršyklėje reikia atvaizduotos sąsajos įrodymų.
| Teiginys | Įrodymo pavyzdys |
|---|---|
| CSV išvestis teisingai užkoduoja kabutę | Vienetinis testas su kabute lauke |
| Kita organizacija negali perskaityti eksporto | Integracinis testas per tikrą autorizavimą |
| Klaviatūros naudotojas gali pradėti eksportą | Naršyklės testas ir rankinė peržiūra klaviatūra |
| Nepavykęs eksportas pateikia naudingą klaidą | Gedimo kelio patikrinimas atitinkamoje sąsajoje |
Nėra vieno fiksuoto testų rūšių santykio, tinkančio kiekvienai sistemai. Rinkitės pagal klaidą, kurią reikia aptikti, ir patikrinimo priežiūros sąnaudas.
Venkite bendros klaidingos prielaidos
Agentas gali parašyti įgyvendinimą ir testus remdamasis tuo pačiu nesusipratimu. Abu gali sutapti, nors reikalavimas lieka neįgyvendintas.
Tarkime, įgyvendinimas filtruoja įrašus pagal užklausoje pateiktą organizacijos ID. Teste prisijungusiam naudotojui ir užklausai naudojamas tas pats ID. Testas praeina. Trūksta atvejo, kai naudotojas prašo kitos organizacijos ID.
Pridėkite tokį atvejį per tikrą patikimą tapatybę ir autorizavimo kelią. Imitacija, kuri visada grąžina „leidžiama“, negali įrodyti klientų izoliavimo. Ji įrodo tik veikimą po sėkmingo autorizavimo.
Patikrinkite, ar testas gali nepraeiti
Žinomai klaidai naują regresinį testą paleiskite su klaidinga versija izoliuotoje šakoje. Patvirtinkite, kad jis nepraeina dėl numatytos priežasties. Tada pritaikykite pataisą ir pakartokite testą.
Testas, kuris nepraeina, nes nepavyksta įkelti testinių duomenų, dar neįrodo verslo veikimo. Išnagrinėkite nesėkmę, ne tik baigimo kodą.
Platesniems pakeitimams mutacinis testavimas gali padėti įvertinti, ar pasirinkti kodo pakeitimai sukelia testų nesėkmes. Jis kainuoja ir nepakeičia reikalavimų peržiūros. Naudokite jį ten, kur papildomi įrodymai pagrindžia svarbų sprendimą.
Išlaikykite įrodymų ryšį su pakeitimu
Atlikite susijusius patikrinimus su galutine versija. Užrašykite praleistus patikrinimus ir jų priežastis. Ankstesnio commit rezultatas po peržiūros pataisos gali nebegalioti.
Testai turi būti suprantami. Rinkitės aiškų parengimą ir tikrinimo sąlygą, o ne didelę pagalbinę funkciją, kuri paslepia svarbią aplinkybę. Pašalinkite perteklinius patikrinimus, kai jie didina priežiūros sąnaudas, bet neaptinka kitos klaidos.
Peržiūrėtojas turi gebėti pasakyti, ką testai įrodo ir kas lieka neaišku. Šis paaiškinimas naudingesnis už didelį testų skaičių.
Atlikite užduotį
Pasirinkite vieną sugeneruotą testą. Nurodykite, kokį reikalavimą jis tikrina. Izoliuotoje šakoje laikinai įveskite atitinkamą klaidą. Patvirtinkite, kad testas nepraeina dėl numatytos priežasties, tada atkurkite kodą. Užrašykite, ko testas vis dar neapima.
Atsisiųsti užduoties lapą (Markdown)Atšaukus šį pasirinkimą ištrinama visa šioje naršyklėje išsaugota pažanga.
Pažanga lieka šioje naršyklėje. Be paskyros ir stebėjimo.
Šaltiniai ir papildoma literatūra
- Google Engineering Practices: Review tests for useful assertions ↗
- Google Testing Blog: Test scope and feedback ↗