Ieguvumi:
- Spēja lasīt metriku, piemēram, līniju, atzaru un stāvokļa pārklājumu kā karti, nevis uzticību, un saprast, ka augsts pārklājums var radīt pseidouzticību
- Spēja izvirzīt prasību tvērumu blakus koda tvērumam un ar mākslīgo intelektu padarīt redzamas izsekojamības nepilnības
- Spēja novērtēt pazīmes ar formulu risks = varbūtība × ietekme, ierobežotas testēšanas pūles novirzīt uz augstāko risku un dokumentēt apzinātu ārpus darbības jomas
Jūs nevarat pārbaudīt katru programmatūru mūžīgi; Laiks un resursi ir ierobežoti. Tātad patiesais jautājums ir: kur likt ierobežotās testēšanas pūles? Uz šo jautājumu atbild divi jēdzieni. Testa aptvērums — metrika, kas mēra, cik daudz koda vai prasību skar testi, — atspoguļo to, kas tiek pārbaudīts. Uz risku balstīta testēšana – pieeja testa prioritātes noteikšanai atbilstoši apgabala stāvokļa pasliktināšanās iespējamībai un kaitējumam, ko tā radīs, kad tā pasliktināsies – novirza pūles uz vislielāko risku. Mākslīgais intelekts (AI) ir spēcīgs analīzes partneris abās jomās: tas padara redzamus pārklājuma trūkumus, norāda uz riska zonām. Bet galvenais brīdinājums paliek: AI redzamais tvērumu skaits var būt maldinošs; Pat 100% rindu pārklājumu var sasniegt ar testiem, kas neko nepārbauda. Jūsu uzdevums ir lasīt darbības jomu kā karti, nevis uzticību.
Pareiza pārklājuma rādītāju lasīšana
Ir vairāki darbības jomas veidi, un ne visi ir vienlīdz nozīmīgi:
- Līnijas pārklājums: cik koda rindiņas tika izpildītas vismaz vienu reizi. Visizplatītākais, bet vājākais kritērijs; Tas, ka līnija darbojas, nav pierādījums tam, ka tā darbojas pareizi.
- Filiāles pārklājums: vai katrs “ja” zars (gan patiess, gan nepatiess) ir pārbaudīts. Nozīmīgāks par līniju.
- Nosacījuma pārklājums: katra apakšnosacījuma pārbaude sarežģītos apstākļos atsevišķi.
- Ceļa pārklājums: loģisko ceļu kombinācijas kodā. Tas ir visplašākais, taču praksē grūti sasniedzams.
Uzmanību: pārklājuma procents nav "kvalitātes rādītājs". 100% rindu pārklājums norāda, ka rindas darbojas; nevis tas, ka tas rada pareizo rezultātu (pseido-piespēle 1. vienībā). Izmantojiet tvērumu kā atbildi uz jautājumu "kur es nekad neesmu skatījies", nevis kā pārliecību, ka "viss ir pārbaudīts".
Aptveriet aklās zonas
Pārklājuma metrika mēra tikai to, cik daudz koda ir izpildīts; nevar redzēt: (1) nepārbaudītas prasības (kods pastāv, bet biznesa noteikums ir nepareizs), (2) trūkst koda (nav vietas vadīklai, kas nekad nav rakstīta), (3) datu/stāvokļa kombinācijas, (4) lietojamība, veiktspēja, drošība. Tāpēc prasību pārklājums (katram pieņemšanas kritērijam ir jāatbilst vismaz vienam testam) jānovieto blakus koda pārklājumam. AI ir ļoti noderīgs prasību pārbaudes kartēšanas (izsekojamības matricas) izveidē.
Uz risku balstīta pārbaude: kur mēs pieliekam pūles?
Risks = varbūtība (salūšanas iespēja) × trieciens (kaitējums lūzuma gadījumā). Izmantojot mākslīgo intelektu, varat izveidot funkciju sarakstu uz šīm divām asīm un izveidot siltuma karti. Augsta varbūtība × augsti domēni (maksājumi, autentifikācija, datu integritāte) ir pelnījuši visintensīvāko pārbaudi; zemas × zemas zonas (reti izmantots priekšroka ekrāns) gaismas pārbaude ir pietiekama.
apgabalā
varbūtība
Ietekme
Risks
Testa blīvums
Maksājumu plūsma
vidējs
ļoti augsts
augsts
Dziļa + automatizācija
autentifikācija
vidējs
ļoti augsts
augsts
Dziļi + drošība
Preču meklēšana
augsts
vidējs
Vidēji augsts
Automatizācija + atklāšana
Profila foto
zems
zems
zems
gaismas kontrole
Palīdzības lapa
zems
pārāk zems
pārāk zems
pārskats
Dzenošā tvēruma lamatas
Aptvēruma procentuālās daļas noteikšanai par mērķi (piemēram, noteikumam “komandai ir jāizpilda 90% pārklājums”) ir bīstama blakusparādība: izstrādātāji un testētāji koncentrējas uz procentuālās daļas palielināšanu, nevis uz faktiskā riska novēršanu. Rezultāts bieži ir uzpūsts tvērums bez apgalvojumiem vai triviāliem testiem — skaitlis izskatās jauki, bet nav aizsardzības. Tā ir parādība, ka kritērijs tiek sabojāts, kad tas pats kļūst par mērķi: "kad pasākums kļūst par mērķi, tas pārstāj būt labs pasākums." Izmantojiet tvērumu kā diagnostikas rīku, nevis darbības pārskata karti.
Veselīgāka pieeja ir tvēruma lasīšana virzienā: "Kāpēc filiāļu segums ir iestrēdzis 40% kritiskā maksājumu modulī?" Jautājums ir "vai kopējais pārklājums ir 90%?" Tas ir daudz vērtīgāks par jautājumu. Palūdziet AI sadalīt darbības jomas pārskatu pēc moduļa un riska līmeņa; Izceliet augsta riska zonas ar zemu pārklājumu. Tādējādi darbības joma kļūst par kompasu, kas virza darbu, nevis par aklu procentu.
Uzmanību: sauklis "100% pārklājums" ir slazds. Dažu kodu testēšana (vienkārši piederumi, automātiski ģenerētas daļas) ir mazvērtīga; tur iztērētās pūles ir nozagtas no augsta riska uzņēmējdarbības noteikumiem. Mērķis ir pārbaudīt katru svarīgo uzvedību un risku, nevis katru līniju.
Vāja uzvedne / spēcīga uzvedne
Vāji: “Palieliniet manu testēšanas pārklājumu.”
Spēcīgs: "Ņemot vērā šo pieņemšanas kritēriju sarakstu un šos esošos pārbaudes gadījumus. (1) Tabula, kuri akceptēšanas kritēriji nav izpildīti nevienā pārbaudē (prasības pārklājuma atšķirība). (2) Novērtējiet katru elementu no 1 līdz 5 uz varbūtības un ietekmes asīm; rangs pēc riska = varbūtība × ietekme. (3) Manā ierobežotajā laikā iesakiet, kuras 5 sākuma rindas ir jāaizver pirmais, tā kā man nevajadzētu uzņemties augstāko risku. kritērijs uzņēmējdarbības riska noteikšanai Kritēriji: [...] Pārbaudes: [...]"
Spēcīga uzvedne; apvieno darbības jomu ar uzņēmējdarbības risku un piešķir prioritāti ierobežotam darbaspēkam.
Četras kopējamas veidnes
1) Prasību darbības jomas atšķirība:
Ņemot vērā šādus pieņemšanas kritērijus un šos pārbaudes gadījumus. Izveidojiet izsekojamības tabulu: katrs kritērijs -> tests(-i), kas tam atbilst. Kritēriji, kuriem nav nekādu testu, tiek saukti par "COVERAGE GAP" un testi, kas nav saistīti ar nevienu kritēriju, tiek saukti par "NEPIECIEŠAMI?" Atzīme: Kritēriji: [...] / Pārbaudes: [...]
2) Riska vērtēšana:
Novērtējiet šo funkciju/moduļu sarakstu ar 1.–5. punktu, ņemot vērā varbūtību (salūšanas iespējamību) un triecienu (bojājums, ja tas ir bojāts). Risks = varbūtība × ietekme. Kārtojiet tabulā un norādiet ieteicamo testēšanas veidu (vienība/API/UI/izlūkošana/drošība) katrai augsta riska zonai. Saraksts: [...]
3) Darbības jomas interpretācija:
Tika sniegts šāds pārklājuma ziņojums (rinda %, filiāle %). Pastāstiet man:- Ko šie skaitļi NEpierāda?- Kuras ir jomas, kuras varētu būt apdraudētas, neraugoties uz lielo rindu pārklājumu?- Kādu papildu pārbaudi jūs ieteiktu veikt nepilnībām, kuras pārklājums neredz (prasība, datu kombinācija, drošība)?Pārskats: [ielīmēt]
4) Ierobežots laika plāns:
[X stundas] atlikušas līdz pārraidei. Ir dota šāda riska klasifikācija un seguma nepilnības. Šajā periodā prioritārā secībā tiek sagatavots testēšanas plāns, kas samazinās maksimālo risku. Skaidri norādiet, ko NEDRĪKST apzināti pārbaudīt un pieņemto risku to darīt.Dati: [...]
trīs mini futrāļi
1. gadījums — 100% pārklājums, nulle uzticēšanās. Viena komanda lepojās ar 94% līniju pārklājumu. "Tvēruma interpretācijas" analīze parādīja, ka lielākā daļa testu bija bez apgalvojumiem, kas nozīmē, ka tie veica līnijas, bet neko nepārbaudīja. Faktiskais aizsardzības segums bija daudz zemāks. Komanda koncentrējās nevis uz skaitļiem, bet gan uz mutāciju testēšanu (10. nodaļa); faktiskais kļūdu uztveršanas līmenis dubultojās.
2. gadījums — riska kartē koriģētā prioritāte. Viena komanda tērēja 40% no testēšanas piepūles reti izmantotā ziņošanas ekrānā, izlaižot maksājumu plūsmu, jo tas "vienkārši darbojas". AI riska vērtēšana parādīja šo nelīdzsvarotību. Darbaspēks tika pārdalīts; Pēc divām nedēļām maksājumu plūsmā tika konstatēta liela ietekme, un tā tika slēgta pirms tiešraides.
3. gadījums — Apzināts ārpus darbības jomas. 4 stundas pēc izlaišanas komanda nolēma, ko pārbaudīt un ko apzināti izlaist, izmantojot veidni “ierobežots grafiks”. Divas augsta riska plūsmas tika pārbaudītas dziļi; zema riska izvēles ekrāns tika dokumentēts kā “pieņemts risks” un tika izlaists. Lēmums bija pārskatāms un pamatots; Versija iznāca droši.
Biežas kļūdas
- Kļūdains pārklājuma procents pret kvalitāti. Augsta rindu pārklājuma lasīšana kā "pārbaudīta" garantija.
- Paskatoties tikai uz koda pārklājumu. Izlaižot prasību segumu (katra pieņemšanas kritērija pārbaude).
- Testēšana vienādi, neņemot vērā risku. Darbaspēka sadale zema riska zonām un kritisko plūsmu neievērošana.
- Slēpšanās ārpus darbības jomas. Nedokumentēt to, kas netika pārbaudīts, kad nebija pietiekami daudz laika; Pārsteigumi pēc izdošanas.
- AI riska rezultāta pieņemšana bez šaubām. AI pilnībā nezina produkta kontekstu; Pielāgojiet punktu skaitu ar eksperta aci.
Rezumējot
Pārbaudes pārklājums un uz risku balstīta testēšana ir divi instrumenti, lai ierobežotu piepūli novirzītu pareizajā vietā. Pārklājuma metrika (līnija, atzars, stāvoklis, ceļš) parāda, kas tika aizskarts, bet nepierāda, ka tas rīkojās pareizi; Darbības joma ir karte, uzticība nav. Norādiet prasību pārklājumu blakus koda pārklājumam. Novērtējiet pazīmes ar formulu risks = varbūtība × ietekme un novirziet pūles uz lielāko risku. AI padara redzamas nepilnības, novērtē risku, plāno ierobežotu laiku; bet galīgo prioritāti un “apzinātas atteikšanās” lēmumu pieņem eksperts, kurš pārzina uzņēmējdarbības kontekstu.
Lietojumprogrammas uzdevums
Izvēlieties moduli no sava projekta. Palaidiet veidni “prasību jomas atšķirības” ar AI un uzziniet, kuri pieņemšanas kritēriji nav pārbaudīti. Pēc tam sarindojiet moduļa apakšfunkcijas uz varbūtības × trieciena asīm ar “riska vērtēšanu”. Sadaliet (hipotētiskās) 3 stundas pārbaudes laika, kas jums ir ar "ierobežotu grafiku"; Pierakstiet to, ko apzināti nepārbaudīsit, un pieņemto risku. Pievienojiet konkrētu testu, kas novērsīs atrasto vislielākā riska pārklājuma plaisu.
kontrolsaraksts
- [ ] Es lasu pārklājuma procentus kā karti, nevis kvalitāti.
- [ ] Papildus koda pārklājumam es noņēmu arī prasību pārklājumu.
- [ ] Es novērtēju pazīmes pēc varbūtības × ietekmes un sarindoju tās pēc riska.
- [ ] Es novirzīju testēšanas centienus uz visaugstāko risku.
- [ ] Esmu dokumentējis jomas, kas nav apzināti pārbaudītas un atzinis risku.
- [ ] Es pārskatīju AI riska rādītājus, pamatojoties uz manu produktu kontekstu.