Pelnas:
- Gebėjimas skaityti metriką, pvz., linijos, šakos ir būklės aprėptį kaip žemėlapį, o ne pasitikėjimą, ir suprasti, kad didelė aprėptis gali suteikti pseudo pasitikėjimo
- Galimybė pateikti reikalavimo sritį šalia kodo apimties ir padaryti atsekamumo spragas matomas naudojant dirbtinį intelektą
- Galimybė įvertinti ypatybes pagal formulę rizika = tikimybė × poveikis, nukreipti ribotas bandymo pastangas į didžiausią riziką ir dokumentuoti sąmoningą už taikymo sritį
Negalite išbandyti kiekvienos programinės įrangos amžinai; Laikas ir ištekliai riboti. Taigi tikrasis klausimas yra toks: kur dėti ribotas bandymų pastangas? Į šį klausimą atsako dvi sąvokos. Testo aprėptis – metrika, rodanti, kiek kodo ar reikalavimų paliečia bandymai – parodo, kas yra testuojama. Rizika pagrįstas testavimas – bandymo prioriteto nustatymo metodas, atsižvelgiant į vietovės pablogėjimo tikimybę ir žalą, kurią jis sukels pablogėjęs – pastangas nukreipia į didžiausią riziką. Dirbtinis intelektas (AI) yra galingas analizės partneris abiejose srityse: jis leidžia matyti aprėpties spragas, siūlo rizikos sritis. Tačiau pagrindinis įspėjimas išlieka: AI matomų apimčių skaičius gali būti klaidinantis; Net 100% eilučių aprėptį galima pasiekti naudojant testus, kurie nieko nepatvirtina. Jūsų darbas yra skaityti apimtį kaip žemėlapį, o ne pasitikėjimą.
Teisingai perskaitykite aprėpties metriką
Yra keletas taikymo srities tipų, ir ne visi yra vienodai reikšmingi:
- Eilučių aprėptis: kiek kodo eilučių buvo įvykdyta bent kartą. Dažniausias, bet silpniausias kriterijus; Vien todėl, kad linija veikia, dar nėra įrodymas, kad ji elgiasi teisingai.
- Filialų aprėptis: ar buvo išbandyta kiekviena „if“ šaka (ir teisinga, ir klaidinga). Prasmingesnis už eilutę.
- Sąlygos aprėptis: kiekvienos papildomos sąlygos testavimas sudėtingomis sąlygomis atskirai.
- Kelio aprėptis: loginių kelių deriniai kode. Tai yra pati išsamiausia, bet sunkiai pasiekiama praktiškai.
Atsargiai: padengimo procentas nėra „kokybės balas“. 100 % eilučių aprėptis rodo, kad eilutės veikia; ne tai, kad jis duoda teisingą rezultatą (pseudo-pradavimas 1 bloke). Naudokite apimtį kaip atsakymą į klausimą „kur aš niekada nežiūrėjau“, o ne kaip patikinimą, kad „viskas išbandyta“.
Apsaugokite akląsias zonas
Aprėpties metrika tik matuoja, kiek kodo buvo įvykdyta; nematote: (1) nepatikrintų reikalavimų (kodas egzistuoja, bet verslo taisyklė neteisinga), (2) trūksta kodo (nėra vietos valdikliui, kuris niekada nebuvo parašytas), (3) duomenų / būsenų derinių, (4) tinkamumą naudoti, našumą, saugumą. Todėl reikalavimų aprėptis (kiekvieną priėmimo kriterijų turi atitikti bent vienas bandymas) turėtų būti pateikta šalia kodo aprėpties. Dirbtinis intelektas yra labai naudingas kuriant reikalavimų testo sudarymą (sekimo matricą).
Rizika pagrįstas testavimas: kur dėti pastangas?
Rizika = tikimybė (lūžimo tikimybė) × smūgis (žala lūžus). Naudodami dirbtinį intelektą galite įvertinti šių dviejų ašių funkcijų sąrašą ir sukurti šilumos žemėlapį. Didelė tikimybė × aukšti domenai (mokėjimas, autentifikavimas, duomenų vientisumas) nusipelno intensyviausio testavimo; žemos × žemos zonos (retai naudojamas pirmenybės ekranas) šviesos testavimo pakanka.
plotas
tikimybė
Poveikis
Rizika
Bandomasis tankis
Mokėjimo srautas
vidutinis
labai aukštas
aukštas
Gilus + automatika
autentifikavimas
vidutinis
labai aukštas
aukštas
Gilus + saugumas
Prekių paieška
aukštas
vidutinis
Vidutinis-aukštas
Automatika + atradimas
Profilio nuotrauka
žemas
žemas
žemas
šviesos valdymas
Pagalbos puslapis
žemas
per žemas
per žemas
apžvalga
Persekiojimo spąstai
Aprėpties procento pavertimas tikslu (pvz., taisyklė „komanda turi išlaikyti 90 proc. aprėptį“) turi pavojingą šalutinį poveikį: kūrėjai ir bandytojai daugiausia dėmesio skiria procento didinimui, o ne faktinės rizikos mažinimui. Rezultatas dažnai yra išpūsta sritis be jokių tvirtinimų ar nereikšmingų testų – skaičius atrodo gražiai, bet nėra jokios apsaugos. Tai yra kriterijaus sugadinimo fenomenas, kai jis pats tampa tikslu: „kai priemonė tampa tikslu, ji nustoja būti gera priemone“. Naudokite apimtį kaip diagnostikos įrankį, o ne našumo ataskaitos kortelę.
Sveikesnis požiūris yra perskaityti apimtį kryptingai: „Kodėl filialo aprėptis įstrigo ties 40 % kritinio mokėjimo modulio? Klausimas yra "ar bendra aprėptis yra 90%?" Jis daug vertingesnis už klausimą. Tegul dirbtinis intelektas suskirsto apimties ataskaitą pagal modulį ir rizikos lygį; Pažymėkite didelės rizikos sritis su maža aprėptis. Taigi, taikymo sritis tampa kompasu, kuris nukreipia darbą, o ne aklą procentą.
Atsargiai: šūkis „100 % aprėptis“ yra spąstai. Kai kurių kodų (paprastų priedų, automatiškai sugeneruotų dalių) testavimas yra menkavertis; ten išleistos pastangos pavogtos iš didelės rizikos verslo taisyklių. Tikslas yra patikrinti kiekvieną svarbų elgesį ir riziką, o ne kiekvieną eilutę.
Silpnas raginimas / Stiprus raginimas
Silpnas: „Padidinkite mano testavimo aprėptį“.
Stiprus: „Atsižvelgiant į šį priimtinumo kriterijų sąrašą ir šiuos esamus bandymo atvejus. (1) Lentelėje, kurių priimtinumo kriterijų neatitiko jokie bandymai (reikalavimų aprėpties skirtumas). (2) Įvertinkite kiekvieną ypatybę nuo 1 iki 5 pagal tikimybės ir poveikio ašis; reitingas pagal riziką = tikimybė × poveikis. (3) Mano ribotam laikui pasiūlykite, kurios 5 eilutės pradžioje uždarykite didžiausią riziką, taigi neturėčiau imtis didžiausios kodo aprėpties eilutės. Kriterijus teikti pirmenybę verslo rizikai Kriterijai: [...] Testai: [...]“
Galingas raginimas; derina apimtį su verslo rizika ir teikia pirmenybę ribotam darbui.
Keturi kopijuojami šablonai
1) Reikalavimo apimties spraga:
Atsižvelgiant į šiuos priėmimo kriterijus ir šiuos bandymo atvejus. Sukurkite atsekamumo lentelę: kiekvienas kriterijus -> jį atitinkantis (-i) testas (-ai). Kriterijai, neturintys jokių testų, vadinami „APTĖRIMO TRŪGA“, o testai, kurie nesijungia su jokiais kriterijais, vadinami „RECESSARY? Pažymėjimas: Kriterijai: [...] / Testai: [...]
2) Rizikos įvertinimas:
Įvertinkite šį funkcijų / modulių sąrašą nuo 1 iki 5 pagal tikimybę (lūžio tikimybę) ir smūgio (pažeidimo atveju) ašis. Rizika = tikimybė × poveikis. Rūšiuokite lentelėje ir nurodykite rekomenduojamą testavimo tipą (vienetas/API/UI/žvalgyba/saugumas) kiekvienai didelės rizikos sričiai. Sąrašas: [...]
3) Apimties aiškinimas:
Pateikta tokia aprėpties ataskaita (eilutė %, filialas %). Pasakykite man štai ką:- KO šie skaičiai NEĮrodo?- Kokios yra sritys, kurioms gali kilti pavojus, nepaisant didelės eilučių aprėpties?- Kokius papildomus bandymus rekomenduotumėte, kad būtų išvengta spragų, kurių aprėptis nemato (reikalavimas, duomenų derinys, sauga)?Ataskaita: [įklijuoti]
4) Riboto laiko planas:
[X valandos] liko iki transliacijos. Pateikiamas toks rizikos reitingas ir aprėpties spragos. Šiuo laikotarpiu prioritetine tvarka parengiamas bandymų planas, kuris sumažins maksimalią riziką. Aiškiai nurodykite, ko NEGALIMA sąmoningai išbandyti ir priimtiną riziką tai daryti.Duomenys: [...]
trys mini dėklai
1 atvejis – 100 % aprėptis, nulinis pasitikėjimas. Viena komanda gyrėsi 94% linijos aprėpties. „Apimties aiškinimo“ analizė parodė, kad dauguma testų buvo be tvirtinimo, ty jie vykdė eilutes, bet nieko nepatvirtino. Faktinė apsauginė danga buvo daug mažesnė. Komanda sutelkė dėmesį ne į skaičius, o į mutacijų testavimą (10 skyrius); tikrasis klaidų dažnis padvigubėjo.
2 atvejis – rizikos žemėlapio pataisytas prioritetas. Viena komanda išleido 40 % savo bandymų pastangų retai naudojamame ataskaitų teikimo ekrane, praleisdama mokėjimo srautą, nes jis „tiesiog veikia“. DI rizikos balai parodė šį disbalansą. Darbo jėga buvo perskirstyta; Po dviejų savaičių mokėjimų sraute buvo rasta didelio poveikio klaida ir ji buvo uždaryta prieš pradedant naudoti.
3 atvejis – sąmoningas, nepatenka į taikymo sritį. Praėjus 4 valandoms iki išleidimo, komanda nusprendė, ką išbandyti ir ką sąmoningai praleisti, naudodama „riboto tvarkaraščio“ šabloną. Du didelės rizikos upeliai buvo išbandyti giliai; mažos rizikos pirmenybės ekranas buvo dokumentuotas kaip „priimtas pavojus“ ir praleistas. Sprendimas buvo skaidrus ir motyvuotas; Versija išėjo saugiai.
Dažnos klaidos
- Klaidingas padengimo procentas dėl kokybės. Didelės eilučių aprėpties skaitymas kaip „išbandytas“ užtikrinimas.
- Tiesiog žiūriu į kodo aprėptį. Reikalavimų aprėpties praleidimas (kiekvieno priėmimo kriterijaus testavimas).
- Testavimas vienodai neatsižvelgiant į riziką. Darbo jėgos paskirstymas mažos rizikos zonoms ir kritinių srautų nepaisymas.
- Slepiasi už taikymo srities ribų. Nedokumentuoti to, kas nebuvo išbandyta, kai nebuvo pakankamai laiko; Staigmenos po išleidimo.
- AI rizikos balo priėmimas be jokių klausimų. AI nevisiškai žino produkto konteksto; Pakoreguokite balus profesionaliu žvilgsniu.
Apibendrinant
Testų aprėptis ir rizika pagrįstas testavimas yra dvi priemonės, leidžiančios ribotas pastangas nukreipti į reikiamą vietą. Aprėpties metrika (linija, šaka, būklė, kelias) parodo, kas buvo paliesta, bet neįrodo, kad elgėsi teisingai; Apimtis yra žemėlapis, pasitikėjimas – ne. Šalia kodo aprėpties nurodykite reikalavimų aprėptį. Įvertinkite požymius pagal formulę rizika = tikimybė × poveikis ir nukreipkite pastangas į didžiausią riziką. AI daro matomus trūkumus, padidina riziką, planuoja ribotą laiką; tačiau galutinį prioritetą ir „sąmoningą atsisakymo“ sprendimą priima ekspertas, išmanantis verslo kontekstą.
Taikymo užduotis
Pasirinkite modulį iš savo projekto. Paleiskite šabloną „reikalavimų taikymo srities spraga“ naudodami AI ir sužinokite, kurie priėmimo kriterijai nėra išbandyti. Tada surūšiuokite modulio subypatybes pagal tikimybės × smūgio ašis su „rizikos balais“. Paskirstykite (hipotetines) 3 valandas bandymo laiko, kurį turite „ribotu grafiku“; Užsirašykite tai, ko sąmoningai netikrinsite, ir priimtą riziką. Pridėkite konkretų testą, kuris pašalins didžiausios rizikos aprėpties spragą.
kontrolinis sąrašas
- [ ] Aprėpties procentą skaitau kaip žemėlapį, o ne kokybę.
- [ ] Be kodo aprėpties, taip pat pašalinau reikalavimo aprėptį.
- [ ] Požymius įvertinau pagal tikimybę × poveikį ir suskirstiau pagal riziką.
- [ ] Bandymo pastangas nukreipiau į didžiausią riziką.
- [ ] Aš dokumentavau sritis, kurios nebuvo sąmoningai išbandytos ir pripažino riziką.
- [ ] Peržiūrėjau AI rizikos balus pagal savo produkto kontekstą.