Mga nadagdag:
- Kakayahang magbasa ng mga sukatan gaya ng saklaw ng linya, sangay, at kundisyon bilang isang mapa, hindi isang tiwala, at maunawaan na ang mataas na saklaw ay maaaring magbigay ng pseudo-trust
- Kakayahang ilagay ang saklaw ng kinakailangan sa tabi ng saklaw ng code at gawing nakikita ang mga gap ng traceability gamit ang artificial intelligence
- Kakayahang mag-iskor ng mga feature na may formula na panganib = probabilidad × epekto, direktang limitadong pagsusumikap sa pagsubok sa pinakamataas na panganib, at idokumento na sadyang wala sa saklaw
Hindi mo maaaring subukan ang bawat software magpakailanman; Limitado ang oras at mapagkukunan. Kaya ang totoong tanong ay: saan ilalagay ang limitadong pagsisikap sa pagsubok? Dalawang konsepto ang sumasagot sa tanong na ito. Saklaw ng pagsubok—isang sukatan na sumusukat kung gaano karami sa code o mga kinakailangan ang naaapektuhan ng mga pagsubok—ay kumakatawan sa kung ano ang sinusuri. Pagsusuri na nakabatay sa panganib - ang diskarte sa pagtukoy sa priyoridad ng pagsubok ayon sa posibilidad ng pagkasira ng isang lugar at ang pinsalang idudulot nito kapag lumala ito - ay nagdidirekta sa pagsisikap sa pinakamaraming panganib. Ang artificial intelligence (AI) ay isang mahusay na kasosyo sa pagsusuri sa pareho: ginagawa nitong nakikita ang mga puwang sa saklaw, nagmumungkahi ng mga lugar na may panganib. Ngunit nananatili ang gitnang caveat: ang bilang ng mga saklaw na nakikita ng AI ay maaaring mapanlinlang; Kahit na ang 100% na saklaw ng row ay maaaring makamit gamit ang mga pagsubok na walang nabe-verify. Ang iyong trabaho ay basahin ang saklaw bilang isang mapa, hindi isang tiwala.
Pagbabasa ng mga sukatan ng saklaw nang tama
Mayroong ilang mga uri ng saklaw, at hindi lahat ay pantay na makabuluhan:
- Saklaw ng linya: Gaano karaming mga linya ng code ang naisakatuparan nang hindi bababa sa isang beses. Ang pinakakaraniwan ngunit pinakamahina na pamantayan; Dahil lamang sa gumagana ang isang linya ay hindi patunay na ito ay kumikilos nang tama.
- Saklaw ng sangay: Kung ang bawat if branch (parehong totoo at mali) ay nasubok. Mas makabuluhan kaysa sa isang linya.
- Saklaw ng kundisyon: Pagsubok sa bawat sub-kondisyon sa kumplikadong mga kondisyon nang hiwalay.
- Saklaw ng landas: Mga kumbinasyon ng mga lohikal na landas sa loob ng code. Ito ang pinakakomprehensibo ngunit mahirap maabot nang buo sa pagsasanay.
Babala: Ang porsyento ng saklaw ay hindi isang "marka ng kalidad". Sinasabi sa iyo ng 100% na saklaw ng row na gumagana ang mga row; hindi na ito ay gumagawa ng tamang resulta (ang pseudo-pass sa unit 1). Gamitin ang saklaw bilang isang sagot sa tanong na "saan ako hindi tumingin", hindi bilang isang katiyakan na "lahat ay nasubok na".
Saklaw ng mga blind spot
Sinusukat lamang ng mga sukatan ng saklaw kung gaano karami sa code ang naisakatuparan; hindi makita ang: (1) hindi pa nasusubok na mga kinakailangan (umiiral ang code ngunit mali ang panuntunan ng negosyo), (2) nawawalang code (walang saklaw para sa isang kontrol na hindi kailanman naisulat), (3) mga kumbinasyon ng data/estado, (4) kakayahang magamit, pagganap, seguridad. Samakatuwid, ang saklaw ng kinakailangan (bawat pamantayan sa pagtanggap ay dapat matugunan ng hindi bababa sa isang pagsubok) ay dapat ilagay sa tabi ng saklaw ng code. Malaking tulong ang AI sa paggawa ng requirement-test mapping (traceability matrix).
Pagsusuri na nakabatay sa peligro: saan tayo magsisikap?
Panganib = probabilidad (pagkakataon ng pagbasag) × epekto (pinsala kung masira). Sa AI, maaari kang makakuha ng isang listahan ng tampok sa dalawang ax na ito at lumikha ng isang mapa ng init. Ang mataas na posibilidad × mataas na mga domain (pagbabayad, pagpapatunay, integridad ng data) ay nararapat sa pinakamatinding pagsubok; mababa × mabababang lugar (isang bihirang ginagamit na preference screen) light testing ay sapat na.
lugar
probabilidad
Epekto
Panganib
Densidad ng pagsubok
Daloy ng pagbabayad
daluyan
napakataas
mataas
Malalim + automation
pagpapatunay
daluyan
napakataas
mataas
Malalim + seguridad
Paghahanap ng produkto
mataas
daluyan
Katamtaman-Mataas
Automation + pagtuklas
Larawan sa profile
mababa
mababa
mababa
kontrol ng liwanag
Pahina ng tulong
mababa
masyadong mababa
masyadong mababa
pagsusuri
Ang bitag ng paghabol sa saklaw
Gawing layunin ang porsyento ng saklaw (hal. ang panuntunang “dapat pumasa sa 90% na saklaw” ng koponan) ay may mapanganib na epekto: nakatuon ang mga developer at tester sa pagtaas ng porsyento sa halip na pagtugon sa aktwal na panganib. Ang resulta ay madalas na isang bloated na saklaw na walang mga paninindigan o trivial na pagsubok — ang numero ay mukhang maganda ngunit walang proteksyon. Ito ang kababalaghan ng criterion na nasira kapag ito mismo ang naging layunin: "kapag ang isang panukala ay naging isang layunin, ito ay tumigil na maging isang mahusay na sukatan." Gamitin ang saklaw bilang diagnostic tool, hindi isang performance report card.
Ang isang mas malusog na diskarte ay ang pagbabasa ng saklaw nang direkta: "Bakit nananatili sa 40% ang saklaw ng sangay sa kritikal na module ng pagbabayad?" Ang tanong ay "90% ba ang kabuuang saklaw?" Ito ay mas mahalaga kaysa sa tanong. Ipahiwa-hiwalay sa AI ang ulat ng saklaw ayon sa module at antas ng panganib; I-highlight ang mga lugar na may mataas na peligro na may mababang saklaw. Kaya, ang saklaw ay nagiging isang compass na namamahala sa paggawa sa halip na isang bulag na porsyento.
Babala: Ang slogan na "100% coverage" ay isang bitag. Ang pagsubok sa ilang code (mga simpleng accessor, mga awtomatikong nabuong bahagi) ay mababa ang halaga; ang pagsisikap na ginugol doon ay ninakaw mula sa mga panuntunan sa negosyo na may mataas na panganib. Ang layunin ay subukan ang bawat mahalagang pag-uugali at panganib, hindi bawat linya.
Mahinang prompt / Malakas na prompt
Mahina: "Palakihin ang saklaw ng aking pagsubok."
Strong: "Dahil sa listahang ito ng mga pamantayan sa pagtanggap at ang mga kasalukuyang kaso ng pagsubok na ito. (1) Tabular kung aling mga pamantayan sa pagtanggap ang hindi pa natutugunan ng anumang mga pagsubok (kailangan na puwang sa saklaw). (2) Markahan ang bawat tampok na 1-5 sa probabilidad at epekto ng mga axes; ranggo ayon sa panganib = probabilidad × epekto. (3) Para sa aking limitadong oras, imungkahi kung aling . unahin ang panganib sa negosyo: [...] Mga pagsubok: [...]"
Napakahusay na prompt; pinagsasama ang saklaw sa panganib sa negosyo at inuuna ang limitadong paggawa.
Apat na maaaring kopyahin na mga template
1) Gap sa saklaw ng kinakailangan:
Ibinigay ang mga sumusunod na pamantayan sa pagtanggap at mga kaso ng pagsubok na ito. Gumawa ng talahanayan ng traceability: bawat criterion -> (mga) pagsubok na nakakatugon dito. Ang mga pamantayang walang anumang pagsubok ay tinatawag na "COVERAGE GAP" at ang mga pagsubok na hindi kumonekta sa anumang pamantayan ay tinatawag na "KINAKAILANGANG?" Markahan: Pamantayan: [...] / Mga Pagsusulit: [...]
2) Pagmamarka ng panganib:
Markahan ang listahang ito ng mga feature/modules 1-5 sa probabilidad (posibleng masira) at epekto (pinsala kung masira) axes. Panganib = probabilidad × epekto. Pagbukud-bukurin sa isang talahanayan at tukuyin ang inirerekomendang uri ng pagsubok (unit/API/UI/reconnaissance/security) para sa bawat lugar na may mataas na peligro. Listahan: [...]
3) Pagpapakahulugan sa saklaw:
Ang sumusunod na ulat sa saklaw ay ibinigay (line %, branch %). Sabihin sa akin ito:- Ano ang HINDI pinatutunayan ng mga numerong ito?- Ano ang mga lugar na maaaring nasa panganib sa kabila ng mataas na saklaw ng row?- Anong karagdagang pagsubok ang irerekomenda mo para sa mga puwang na hindi nakikita ng saklaw (kinakailangan, kumbinasyon ng data, seguridad)? Ulat: [i-paste]
4) Limitadong plano sa oras:
[X na oras] ang natitira hanggang sa pag-broadcast. Ang mga sumusunod na ranggo ng panganib at mga puwang sa saklaw ay ibinigay. Sa panahong ito, ang plano sa pagsubok na magbabawas sa pinakamataas na panganib ay inihanda ayon sa priyoridad. Malinaw na sabihin kung ano ang HINDI dapat sinasadyang subukan at ang tinatanggap na panganib na gawin ito. Data: [...]
tatlong mini case
Case 1 — 100% coverage, zero trust. Ipinagmamalaki ng isang koponan ang 94% line coverage. Ipinakita ng pagsusuri sa "Scope interpretation" na karamihan sa mga pagsubok ay hindi gaanong pinaninindigan, ibig sabihin, nagpatakbo sila ng mga linya ngunit hindi nag-verify ng anuman. Ang aktwal na proteksiyon na saklaw ay mas mababa. Ang koponan ay hindi nakatuon sa mga numero ngunit sa pagsusuri ng mutation (unit 10); ang aktwal na error catch rate ay nadoble.
Kaso 2 — Ang mapa ng peligro ay naitama ang priyoridad. Gumastos ang isang team ng 40% ng kanilang pagsusumikap sa pagsubok sa isang bihirang ginagamit na screen ng pag-uulat, na nilaktawan ang daloy ng pagbabayad dahil "gumagana lang" ito. Ang AI risk scoring ay nagpakita ng kawalan ng timbang na ito. Ang paggawa ay muling ipinamahagi; Pagkalipas ng dalawang linggo, may nakitang bug na may mataas na epekto sa daloy ng pagbabayad at isinara nang pre-live.
Kaso 3 — May kamalayan na wala sa saklaw. 4 na oras sa isang release, nagpasya ang team kung ano ang susuriin at kung ano ang sinasadyang laktawan gamit ang "limitadong iskedyul" na template. Dalawang high-risk stream ang nasubok nang malalim; ang isang mababang-panganib na screen ng kagustuhan ay naidokumento bilang "tinanggap na panganib" at nilaktawan. Ang desisyon ay malinaw at may katwiran; Ang bersyon ay lumabas nang ligtas.
Mga karaniwang pagkakamali
- Nagkakamali sa porsyento ng saklaw para sa kalidad. Binabasa ang mataas na saklaw ng hilera bilang "nasubok" na kasiguruhan.
- Nakatingin lang sa code coverage. Nilaktawan ang saklaw ng mga kinakailangan (pagsusuri sa bawat pamantayan sa pagtanggap).
- Pagsubok nang pantay-pantay nang hindi isinasaalang-alang ang panganib. Paglalaan ng paggawa sa mga lugar na mababa ang panganib at pagpapabaya sa mga kritikal na daloy.
- Nagtatago sa labas ng saklaw. Hindi pagdodokumento kung ano ang hindi nasubok kapag walang sapat na oras; Mga surpresa pagkatapos ng pagpapalabas.
- Pagtanggap sa marka ng panganib ng AI nang walang tanong. Hindi lubos na alam ng AI ang konteksto ng produkto; Ayusin ang mga marka gamit ang isang ekspertong mata.
Sa buod
Ang saklaw ng pagsubok at pagsubok na nakabatay sa panganib ay dalawang tool upang idirekta ang limitadong pagsisikap sa tamang lugar. Ang mga sukatan ng saklaw (linya, sangay, kundisyon, landas) ay nagpapakita kung ano ang hinawakan ngunit hindi nagpapatunay na ito ay kumilos nang tama; Ang saklaw ay isang mapa, ang tiwala ay hindi. Ilagay ang saklaw ng mga kinakailangan sa tabi ng saklaw ng code. Markahan ang mga tampok na may formula na panganib = probabilidad × epekto at direktang pagsisikap sa pinakamaraming panganib. Ginagawa ng AI na nakikita ang mga puwang, nakakakuha ng panganib, nagpaplano ng limitadong oras; ngunit ang panghuling priyoridad at "malay na mag-opt-out" na desisyon ay nakasalalay sa ekspertong nakakaalam ng konteksto ng negosyo.
Gawain ng aplikasyon
Pumili ng isang module mula sa iyong sariling proyekto. Patakbuhin ang template ng "skop ng mga kinakailangan" na may AI at alamin kung aling mga pamantayan sa pagtanggap ang hindi nasubok. Pagkatapos ay i-rank ang mga sub-feature ng module sa probability × impact axes na may "risk scoring". Ipamahagi ang (hypothetical) na 3 oras ng pagsubok na mayroon ka sa "limitadong iskedyul"; Isulat kung ano ang sinasadya mong hindi susubukan at ang tinatanggap na panganib. Magdagdag ng konkretong pagsubok na magsasara sa pinakamataas na panganib na puwang sa saklaw na makikita mo.
checklist
- [ ] Binabasa ko ang porsyento ng saklaw bilang mapa, hindi kalidad.
- [ ] Bukod sa code coverage, inalis ko rin ang requirement coverage.
- [ ] Naiiskor ko ang mga tampok ayon sa posibilidad × epekto at niraranggo ko ang mga ito ayon sa panganib.
- [ ] Ni-redirect ko ang pagsusumikap sa pagsubok sa pinakamataas na panganib.
- [ ] Naidokumento ko ang mga lugar na hindi sinasadyang sinubukan at kinikilala ang panganib.
- [ ] Sinuri ko ang mga marka ng panganib ng AI batay sa konteksto ng aking produkto.