Kitengo 10 / 11

Hatari ya Kuaminika kwa Uongo, Ubora wa Jaribio, na Jaribio la Mabadiliko: Majaribio ya Majaribio

Faida:

  • Uwezo wa kutambua nyuso tatu za uaminifu-ghushi (kutokuwa na uthubutu, kujidai, madai yasiyo na maana) na kutumia makata.
  • Uwezo wa kutumia upimaji wa mabadiliko na alama ya ugeuzaji kama kipimo sahihi zaidi cha ubora kuliko asilimia ya ufunikaji kwa zana au mkono
  • Uwezo wa kuweka AI kama timu nyekundu dhidi ya majaribio na kuwinda mianya ya majaribio bila kuanguka kwenye mtego wa sifa.

Katika moyo wa moduli hii kuna onyo la mara kwa mara: jopo la majaribio la kijani kibichi sio ushahidi wa ubora. Ikiwa vipimo vyako vinakupa ujasiri, unahitaji kujua ikiwa ujasiri huo ni wa kweli au bandia. Katika enzi ya akili bandia (AI), swali hili ni muhimu zaidi kuliko hapo awali, kwa sababu AI ni mahiri katika kutoa majaribio ya majimaji, yenye sura nyororo lakini matupu. Kujiamini kwa uwongo - kuamini kuwa programu ni sahihi kwa sababu majaribio ni ya kijani kibichi, wakati majaribio hayathibitishi chochote - ni jambo hatari zaidi ambalo linaweza kutokea kwa timu ya QA; kwa sababu haifichi kwamba hakuna makosa, lakini kwamba huwezi kuona makosa. Kitengo hiki huleta pamoja falsafa ya uthibitishaji wa moduli nzima katika taaluma moja: kupima majaribio yako.

Kiwango cha dhahabu cha kupima ubora wa majaribio: upimaji wa mabadiliko

Njia yenye nguvu zaidi ya kuelewa kama jaribio linalinda au la ni jaribio la mabadiliko (jaribio la mabadiliko - mbinu ambayo hutoa upotoshaji mdogo/mabadiliko madogo kimakusudi katika msimbo wa chanzo na kupima kama majaribio yanatambua upotoshaji huu). Mantiki ni rahisi: ukivunja msimbo kimakusudi (kutengeneza + ndani -, a > kuwa >=, kweli kuwa uongo), kitengo kizuri cha mtihani kinapaswa kupata ufisadi huo na kuwa nyekundu. Ikiwa haifanyi hivyo, usumbufu huo ni kibadilisho kilichosalia - kwa hivyo majaribio yako hayahifadhi tabia hiyo.

Alama ya mabadiliko = mabadiliko yaliyouawa / jumla ya mabadiliko. Kifurushi kilicho na ufikiaji wa laini 90% kinaweza kuwa na alama ya mabadiliko ya 40%; Hii inaonyesha kuwa mistari inafanya kazi lakini tabia haijathibitishwa. Alama ya mabadiliko ni kipimo mwaminifu zaidi cha ubora kuliko chanjo ya asilimia.

Kidokezo: Kuna zana za mabadiliko ya kiotomatiki (PIT/Pitest ya Java, Stryker kwa JavaScript/TypeScript, Stryker.NET ya .NET, mutmut kwa Python). Hizi huzalisha na kujaribu mamia ya mabadiliko kiotomatiki. Ikiwa huna chombo, hata mwongozo wa "kuvunja mtihani wa nambari" ni muhimu sana kwa kazi muhimu.

Nyuso tatu za uaminifu wa uwongo na makata yake

Fomu ya uaminifu wa uwongo

dalili

dawa

Mtihani bila madai

Nambari inafanya kazi, hakuna kitu kilichothibitishwa

Madai ya kweli katika kila mtihani; mtihani na mabadiliko

mtihani wa kujithibitisha

Inatarajiwa = pato la nambari

Kuhesabu thamani inayotarajiwa kwa kujitegemea

Madai yasiyo na maana

"sio null", "200 walirudi"

Thibitisha sheria ya biashara/matokeo halisi

Udanganyifu wa upeo wa juu

90% ya mistari, ulinzi wa chini

Angalia alama ya mabadiliko

Uvumilivu dhaifu wa mtihani

"Kukwama tena, kupita"

Sababu ya mizizi + upimaji wa kuamua

Kutumia AI kama "timu nyekundu"

AI inaweza kutoa uaminifu wa uwongo na kuwa mshirika mwenye nguvu katika kuiwinda. Tumia AI kama timu nyekundu dhidi ya majaribio yako mwenyewe: uliza "andika msimbo unaofaulu majaribio haya lakini sio sahihi" au "tafuta ubadilishaji ambao utapumbaza majaribio haya." Ikiwa AI itapata mianya katika majaribio yako, mianya hiyo ni hatari halisi.

Tahadhari: Usiulize AI "Je, ubora wa mtihani wangu ni mzuri?" na kuchukua jibu "ndiyo, kubwa" kama uhakikisho. AI huwa na fadhili. Badala yake, changamoto kwa AI kwa kazi thabiti: "toa mdudu ambaye hupita majaribio haya." Ikiwa inaweza kuizalisha, majaribio yako hayaoni kosa hilo.

Mabadiliko sawa na mipaka ya alama

Upimaji wa mabadiliko ni nguvu, lakini ina mtego: mabadiliko kadhaa hayabadilishi tabia ya nambari hata kidogo. Hizi huitwa mabadiliko sawa (mutant sawa - msimbo mbovu, mabadiliko ambayo hutoa matokeo sawa kabisa na ya asili). Kwa mfano, kubadilisha thamani ya awali ya kutofautiana ambayo haitumiki kamwe haiathiri pato; Hakuna mtihani unaweza na haupaswi kupata hii. Kwa hiyo, alama ya mabadiliko ya 100% mara nyingi haipatikani katika mazoezi na sio lengo. Kuondoa mabadiliko sawa kwa mkono ni kazi kubwa; Kwa hivyo usisome alama ya mabadiliko kama alama kamili ya mtihani, lakini kama kiashirio cha uaminifu cha "je vipimo vyangu vinalinda kweli?"

Mbinu ya vitendo ni hii: badala ya kufanya majaribio ya mabadiliko kila mara kwenye msingi mzima wa msimbo, iendesha kwenye moduli ambazo zina hatari kubwa zaidi na sheria changamano zaidi za biashara. Chunguza mabadiliko yaliyosalia katika moduli hizi moja baada ya nyingine; Ikiwa ni pengo halisi, ongeza mtihani; ikiwa ni mabadiliko sawa, yaweke alama kwa uhalalishaji na upite. AI inaweza kufanya uchunguzi wa awali katika kutathmini kama mabadiliko yaliyosalia ni sawa; lakini uamuzi wa mwisho unafanywa na wewe ambaye unajua kanuni hufanya nini.

Tahadhari: Upimaji wa mabadiliko ni ghali kikokotoa (majaribio yote muhimu yanatekelezwa tena kwa kila mabadiliko). Kwa hivyo mkakati wa kawaida na unaofaa ni kuipanga kama ukaguzi wa kina wa kila wiki au kabla ya kutolewa kwa moduli muhimu, badala ya kila unganisho.

Mwongozo dhaifu / Mwongozo thabiti

Dhaifu: "Je, vipimo vyangu vinatosha?"
Imara: "Fanya kama timu nyekundu kwa chaguo hili la kukokotoa na jaribio. (1) Tengeneza mabadiliko 8 katika msimbo unaoweza kuuawa (ubadilishaji wa kiendeshaji, mabadiliko ya mipaka, ubadilishaji wa hali, ubadilishaji wa thamani ya kurejesha). (2) Kwa kila ubadilishaji, onyesha ni majaribio gani yaliyopo yatakayoipata na ambayo HAITAFANYIWA. (3) Kwa kila mabadiliko ambayo yatasalia, andika mtihani huo ikiwa unaweza kuua ikiwa unaweza kutoa misimbo yote (4) pia. majaribio haya lakini inakiuka kanuni ya biashara + majaribio: [bandika]"

Agizo lenye nguvu; Inaweka AI kama mkaguzi wa kuvunja mtihani, sio mashine ya sifa.

Violezo vinne vinavyoweza kunakiliwa

1) Udhibiti wa mabadiliko ya mwongozo:

Tengeneza mabadiliko 8 muhimu (usumbufu mdogo wa kimakusudi) kwa msimbo huu: ubadilishaji wa opereta wa hesabu, kikomo cha kulinganisha (> dhidi ya >=), ubadilishaji wa kimantiki, urejeshaji/ubadilishaji mara kwa mara, kuruka masharti. Kwa kila mabadiliko, tabiri ni upi kati ya majaribio yanayopatikana kitakachoipata au la. Vipimo vya nambari +: [bandika]

2) Kuua mabadiliko yaliyobaki:

Ripoti ifuatayo ya jaribio la mabadiliko ina mabadiliko yaliyosalia (yasiyokumbwa): [orodha/ripoti]. Kwa kila moja, andika jaribio kidogo ambalo litaua mabadiliko hayo (nambari itabadilika kuwa nyekundu ikivunjwa kwa njia hiyo). Maoni juu ya tabia gani mtihani unathibitisha.

3) Timu nyekundu - damu mtihani:

Je, unaweza kuandika nambari ya kuthibitisha INAYOFAULU majaribio YOTE yafuatayo, lakini inakiuka kanuni ifuatayo ya biashara: [kanuni ya biashara]. Ikiwa ni hivyo, ni mwanya gani katika majaribio haya unaruhusu hii? Ongeza jaribio ambalo litaziba mwanya huo. Majaribio: [bandika]

4) Ukaguzi wa ubora wa mtihani:

Angalia safu hii ya majaribio kwa ubora. Weka tiki kwa kila jaribio:- Je, kuna dai la kweli au ni viboreshaji?- Je, thamani inayotarajiwa inajitegemea, inayotokana na msimbo?- Je, inathibitisha kanuni ya biashara au kitu kidogo? Mwishowe toa makadirio ya "alama ya uthibitishaji wa kweli" na majaribio 3 dhaifu zaidi. Majaribio: [bandika]

kesi tatu ndogo

Kesi ya 1 - Chanjo 92%, alama ya mabadiliko 38%. Timu moja ilitegemea chanjo ya juu. Jaribio la mabadiliko lilipoendeshwa na Stryker, alama ilikuwa 38%: mabadiliko mengi yaliyotolewa yalidumu. Hii ilikuwa dhibitisho kuwa majaribio hayakuwa yakiendesha mistari na kuthibitisha tabia. Timu iliwekeza wiki tatu katika kupima ubora; Alama ya mabadiliko iliongezeka hadi 81%, na hitilafu mbili za kweli za hesabu zilinaswa na majaribio haya yaliyoongezwa katika toleo lililofuata.

Kesi ya 2 - AI ilidanganya mtihani. Akiwa na kiolezo cha "timu nyekundu", mtaalam aliuliza AI msimbo ambao ulifaulu majaribio yaliyopo lakini kikakiuka kanuni ya punguzo. Msimbo wa AI uliandika ambao kila wakati ulileta punguzo la sifuri - na majaribio yote yalisalia kuwa ya kijani kwa sababu hakuna majaribio yaliyokuwa yakithibitisha thamani halisi ya punguzo. Pengo limeonekana, madai halisi yameongezwa.

Kesi ya 3 - Mtego wa sifa. Mjaribu mdogo aliuliza AI, "Je, vipimo vyangu ni vyema?" na alifarijika kusikia jibu, "Pana sana." Mwenzake mkuu alikaguliwa vipimo hivyo hivyo kwa kutumia kiolezo cha "test quality audit"; Ilibadilika kuwa vipimo 12 kati ya 20 vilikuwa mapambo (bila madai au takataka). Swali sahihi lilileta jibu sahihi.

Makosa ya kawaida

  • Kukosea kwa upeo wa ubora. Kutegemea chanjo ya safu ya juu na sio kuangalia alama ya mabadiliko hata kidogo.
  • Kuamini sifa za AI. Kuuliza "Je, vipimo vyako ni vyema?" na kuzingatia jibu chanya kama hakikisho.
  • Kupata thamani inayotarajiwa kutoka kwa msimbo. Vipimo vya kujithibitisha ambavyo vinathibitisha msimbo mbovu.
  • Ridhika na madai yasiyo na maana. Hundi ambazo hazidhibitishi kanuni halisi, kama vile "si batili", "200 zimerejeshwa".
  • Kupuuza mabadiliko yaliyosalia. Kupuuza kile ambacho hakikupatikana katika ripoti ya mabadiliko.
  • Sijajaribu hata kubadilisha msimbo muhimu. Kuruka hatua ya "kuvunja msimbo na mtihani" ikiwa chombo haipatikani.

Kwa muhtasari

Pseudo-trust ni kuamini kwamba programu ni sahihi kwa sababu majaribio ni ya kijani; ambapo majaribio yanaweza yasithibitishe chochote. Kiwango cha dhahabu cha kupima hii ni majaribio ya mabadiliko: kuvunja msimbo kwa makusudi na kupima ikiwa majaribio yameipata. Alama ya mabadiliko ni kipimo mwaminifu zaidi cha ubora kuliko chanjo ya asilimia. AI zote mbili hutoa uaminifu wa uwongo na kuwa timu nyekundu yenye nguvu katika kuiwinda - uliza "toa mdudu ambaye hufaulu majaribio haya." Jaribu majaribio yako: dai la kweli, thamani huru inayotarajiwa, uthibitishaji wa sheria za biashara, na mabadiliko yaliyosababisha kifo.

Jukumu la maombi

Ingiza chaguo za kukokotoa zilizo na sheria ya biashara na majaribio yake kutoka kwa mradi wako mwenyewe. Ikiwezekana, endesha zana ya kugeuza (Stryker/Pitest/mutmut) na upime alama ya mabadiliko; Ikiwa hakuna zana, toa angalau mabadiliko 8 kwa kiolezo cha "udhibiti wa ubadilishaji kwa mikono" na ujaribu wewe mwenyewe. Kwa kila mabadiliko yaliyosalia, andika jaribio jipya ukitumia kiolezo cha "ua unusuru uliobaki". Hatimaye, na muundo wa "timu nyekundu", angalia kama AI inaweza kutoa msimbo unaopumbaza majaribio yako. Ripoti alama yako ya kuanzia na kumalizia mabadiliko (au kiwango cha mabadiliko kilichopatikana/jumla).

orodha ya ukaguzi

  • [ ] Nilitathmini ubora wa jaribio kwa alama ya mabadiliko, si chanjo.
  • [ ] Niliendesha majaribio ya ubadilishaji (ama kwa zana au kwa mikono) kwa msimbo muhimu.
  • [ ] Niliandika majaribio mapya kwa kila mabadiliko yaliyosalia.
  • [ ] Nilitumia AI kama timu nyekundu na kutafuta mianya katika majaribio yangu.
  • [ ] Sikuchukua sifa ya AI ya "majaribio yako ni mazuri" kama uhakikisho.
  • [ ] Niliangalia kuwa kila jaribio linathibitisha madai halisi, thamani huru inayotarajiwa na sheria ya biashara.