4.2 Ufunikaji wa majaribio na ufanisi wa majaribio
Muhtasari na msukumo
Ufunikaji wa majaribio unapima asilimia ya msimbo inayotekelezwa na mfululizo wa majaribio: ufunikaji wa mistari, ufunikaji wa matawi, au ufunikaji mkali zaidi wa njia. Ni mojawapo ya vipimo vinavyofuatiliwa zaidi katika kitabu hiki kizima, vya bei nafuu kukokotoa, rahisi kuonyesha kwa picha kama asilimia moja, na kwa hiyo mojawapo ya vinavyochezewa mara nyingi zaidi, hasa kama mada ya 1.2 inavyotabiri kwa kipimo chochote kinachokuwa lengo. Mfululizo wa majaribio unaweza kufikia ufunikaji wa juu huku ukithibitisha karibu hakuna kitu chenye maana, kwa sababu ufunikaji unapima kama msimbo ulitekelezwa wakati wa uendeshaji wa jaribio, si kama jaribio lilikagua kweli kwamba msimbo ulitenda kwa usahihi.
Pengo hili kati ya ufunikaji na ufanisi halisi wa majaribio si maelezo madogo ya chini; ndilo wasiwasi mkuu wa mada hii. Jaribio linaloita kitendakazi na kuthibitisha chochote kuhusu matokeo yake linaongeza ufunikaji kwa namna ileile kama jaribio linalothibitisha kikamilifu tabia ya kitendakazi kuvuka hali za pembeni. Suluhisho ambalo mada hii inapendekeza, majaribio ya mabadiliko, linaingiza kwa makusudi kasoro ndogo, bandia kwenye msimbo na kukagua kama mfululizo wa majaribio unazikamata kweli, ndilo jibu la moja kwa moja kwa pengo hili, na mada hii inalichukulia kama kikamilisho cha lazima cha ufunikaji, si nyongeza ya hiari.
Kwa timu kubwa, malengo ya ufunikaji mara nyingi hupokelewa shirika zima kama lango la ubora, hasa aina ya kipimo kilichochochewa, chenye mwonekano wa juu ambacho mada ya 1.2 inaonya kiko wazi zaidi kuchezewa. Mashirika ya biashara kubwa na ya serikali yanayoweka sharti la asilimia ya jumla ya ufunikaji bila ukaguzi wa ufanisi uliooanishwa, kwa kweli, yanachochea hasa mfumo wa kuchezea kizingiti ambao kitabu hiki kinaueleza: majaribio ya kijinga yaliyoandikwa tu kufikia namba, bila uboreshaji unaolingana wa kuzuia kasoro halisi.
Kanuni kuu
- Ufunikaji unapima utekelezaji, si uthibitishaji. Mstari kutekelezwa na jaribio hausemi chochote kuhusu kama jaribio lilikagua kitu chenye maana kuuhusu.
- Lengo la ufunikaji bila ukaguzi wa ufanisi ni mpangilio wa kitabu wa sheria ya Goodhart (mada ya 1.2): namba inaboreka huku ubora halisi haufanyi hivyo.
- Majaribio ya mabadiliko ni kikamilisho cha lazima cha ufunikaji, si mbadala; tumia vyote viwili pamoja.
- Ufunikaji una manufaa zaidi kama sakafu kuliko kama lengo la kuongeza kwa kiwango cha juu. Namba ya chini inafichua msimbo ambao haujajaribiwa kweli; kufukuzia asilimia 100 mara nyingi huzalisha faida zinazopungua au hasi.
- Ufunikaji wa njia muhimu ni muhimu kuliko ufunikaji wa sare, wa jumla. Si msimbo wote unabeba hatari sawa ukishindwa.
Mapendekezo
Tumia ufunikaji kupata msimbo ambao haujajaribiwa, si kama lengo la kuongeza kwa kiwango cha juu
Chukulia ripoti ya ufunikaji hasa kama ramani ya kisichokuwa na jaribio kabisa, ambayo ni taarifa ya manufaa kweli, badala ya alama ya kusukuma kuelekea asilimia 100. Msimbo usio na ufunikaji kabisa ni pengo halisi linalostahili kuzibwa; thamani ya ziada ya kusukuma ufunikaji kutoka asilimia 85 hadi 95 kwa kawaida ni ya chini zaidi sana na mara nyingi haistahili juhudi inayochukua, hasa juhudi hiyo ikizalisha majaribio ya thamani ndogo tu kufikia namba ya juu zaidi.
Oanisha kila lengo la ufunikaji na majaribio ya mabadiliko
Zana za majaribio ya mabadiliko huingiza kiotomatiki kasoro ndogo kwenye msimbo wako, kugeuza kiendeshaji cha ulinganisho, kubadilisha sharti la mpaka, kisha huendesha mfululizo wako wa majaribio dhidi ya kila toleo lililobadilishwa. Mfululizo wa majaribio “unaoua” (unaoshindwa dhidi ya) mutants nyingi unathibitisha tabia kweli; mfululizo wa majaribio wenye ufunikaji wa juu wa mistari lakini kiwango cha chini cha kuua mutants unatekeleza msimbo bila kuukagua kwa maana. Uoanishaji huu ndio kizuizi chenye ufanisi zaidi dhidi ya kuchezea lengo la ufunikaji, na kitabu hiki kinaupendekeza kama mazoea ya kawaida, si mbinu ya hali ya juu au ya hiari.
Pa kipaumbele ufunikaji na majaribio ya mabadiliko kwenye njia muhimu kwanza
Si msimbo wote unabeba hatari sawa. Njia ya kuchakata malipo, ukaguzi wa uthibitishaji wa utambulisho, au hati ya uhamishaji wa data inastahili majaribio makali zaidi sana kuliko ripoti ya kiutawala inayotumika nadra. Badala ya kufuata ufunikaji wa sare kuvuka msingi mzima wa msimbo, tambua njia zako za msimbo zenye hatari kubwa zaidi, matokeo makubwa zaidi, na ukusanye juhudi ya ufunikaji na majaribio ya mabadiliko huko kwanza, ukikubali ufunikaji wa chini kwenye msimbo wa hatari ndogo kweli kama mabadilishano ya makusudi, yenye taarifa badala ya uangalizi.
Angalia mifumo mahususi ya kuchezea ufunikaji
Njia za kawaida zaidi ambazo ufunikaji huchezewa, unapokuwa lengo, ni pamoja na: majaribio yanayoita kitendakazi lakini hayathibitishi chochote chenye maana kuhusu matokeo (kuchezea kizingiti kwa mada ya 1.2 kunakotumika kwa kipimo hiki), kuzima au kufuta majaribio yanayoshindwa badala ya kurekebisha tatizo la msingi, na kuondoa msimbo mgumu kujaribu kutoka hesabu ya ufunikaji kabisa badala ya kushughulikia kwa nini ni mgumu kujaribu. Kagua mara kwa mara sampuli ya majaribio moja kwa moja, ukisoma uthibitisho wake halisi, badala ya kuamini asilimia ya ufunikaji peke yake.
Weka sakafu ya ufunikaji, si dari ya ufunikaji, kwenye bomba lako la CI
Sanidi bomba lako la ujenzi lishindwe ufunikaji ukishuka chini ya sakafu iliyokubaliwa kwa msimbo mpya, kuzuia kurudi nyuma, badala ya kudai kila badiliko lisukume namba ya jumla juu zaidi. Tofauti hii ni muhimu: sakafu inalinda dhidi ya kurudi nyuma bila kuunda shinikizo lilelile lisilokoma la kupanda linalozalisha majaribio ya thamani ndogo yaliyoandikwa tu kuongeza namba zaidi kidogo.
Mabadilishano: faida na hasara
| Mbinu | Faida | Hasara |
|---|---|---|
| Asilimia ya ufunikaji peke yake | Nafuu, rahisi, inaungwa mkono sana na zana | Inachezewa kwa urahisi; inapima utekelezaji, si uthibitishaji |
| Ufunikaji pamoja na majaribio ya mabadiliko | Inathibitisha majaribio yanakagua tabia kweli, inapinga kuchezea | Ghali zaidi kihesabu; inahitaji uwekezaji wa zana |
| Lengo la ufunikaji la sare kuvuka msingi wa msimbo | Rahisi kusema na kutekeleza | Inapoteza juhudi kwa msimbo wa hatari ndogo; inawekeza pungufu kulingana na hatari kwingineko |
| Ufunikaji unaotegemea hatari, njia muhimu kwanza | Inakusanya juhudi mahali panapojali zaidi | Inahitaji busara kutambua njia muhimu kweli kwa usahihi |
Mvutano wa kati ni urahisi dhidi ya uaminifu. Asilimia moja ya ufunikaji ni rahisi kuripoti na rahisi kuweka kama lengo, lakini urahisi huo ndio unaoufanya kuchezewa kwa urahisi mara unapokuwa namba iliyochochewa. Litatue kwa kukubali ugumu ulioongezwa wa majaribio ya mabadiliko na kupa kipaumbele kunakotegemea hatari kama gharama ya ishara ya uaminifu, na kwa kuwasiliana waziwazi kwa timu yako kwa nini namba ya chini ya jumla ya ufunikaji, iliyokusanywa kwa usahihi kwenye njia muhimu na kuungwa mkono na kiwango imara cha kuua mutants, ina thamani zaidi kuliko ya juu zaidi, iliyosambazwa kwa sare zaidi lakini iliyothibitishwa kwa ufanisi mdogo.
Maswali ya kujadili na timu yako
Kiwango chetu cha kuua mutants kwenye njia zetu za msimbo zenye hatari kubwa ni kipi, na kinalinganishwaje na asilimia yetu ya ufunikaji kwenye msimbo uleule? Pengo kubwa kati ya namba ya juu ya ufunikaji na kiwango cha chini cha kuua mutants ndiyo ishara iliyo wazi zaidi inayowezekana kwamba ufunikaji peke yake hauambii unachofikiri unaambia.
Je, tumewahi kuandika jaribio hasa kuongeza namba ya ufunikaji, kwa kufikiri kidogo halisi kuhusu linapaswa kuthibitisha nini? Kuwa mwaminifu hapa; hili hutokea mara nyingi zaidi kuliko timu zinavyopenda kukubali, hasa chini ya shinikizo la tarehe ya mwisho lango la ufunikaji linapozuia muunganisho.
Je, juhudi yetu ya ufunikaji imekusanywa kwenye njia zetu za msimbo zenye hatari kubwa, au imesambazwa kwa sare bila kujali matokeo msimbo huo ukishindwa? Chora usambazaji wenu wa sasa wa ufunikaji dhidi ya tathmini ya uaminifu ya hatari ya msingi wenu wa msimbo na utafute kutolingana.
Je, tumewahi kuzima au kufuta jaribio linaloshindwa badala ya kurekebisha tatizo la msingi ililofichua? Hii ni mojawapo ya aina zenye madhara zaidi za kuchezea ufunikaji, kwa sababu inaondoa ulinzi halisi kikamilifu huku namba iliyoripotiwa ya ufunikaji ikisogea kidogo tu.
Je, bomba letu la CI linatekeleza sakafu ya ufunikaji kwa msimbo mpya, au linasukuma dari ya juu zaidi na zaidi bila kujali faida zinazopungua? Jadilini kama muundo wenu wa sasa wa lango unaunda motisha sahihi, kulinda dhidi ya kurudi nyuma, au isiyo sahihi, shinikizo lisilokoma la kupanda linalozawadia kujaza majaribio ya thamani ndogo.
Msimbo upi katika msingi wetu wa msimbo umeondolewa kwenye hesabu ya ufunikaji, na je, kuondolewa huko kunahalalishwa au kunaficha pengo halisi la majaribio? Pitia usanidi wenu halisi wa kuondoa; ni kawaida kwa orodha hii kukua kimyakimya kwa muda bila yeyote kupitia upya kama kila kuondolewa bado kunahalalishwa.
Mtazamo wa sekta
Kampuni changa. Malengo rasmi ya ufunikaji mara nyingi si ya lazima mapema hivi; elekeza juhudi ya kuandika majaribio moja kwa moja kwenye njia zako hatari zaidi, muhimu zaidi kwa biashara za msimbo (kwa kawaida mantiki ya malipo au ya mtiririko mkuu) badala ya kufuata asilimia ya jumla kuvuka msingi wa msimbo ambao bado unabadilika haraka na unaweza kuandikwa upya kwa kiasi kikubwa hivi karibuni hata hivyo.
Biashara ndogo. Majukwaa mengi ya CI huripoti ufunikaji kiotomatiki kwa gharama ndogo ya usanidi; yatumie hasa kupata msimbo muhimu ambao haujajaribiwa kabisa badala ya kufukuzia asilimia lengwa mahususi, na fikiria majaribio ya mabadiliko tu mara mnapokuwa na uwezo wa uhandisi wa kutenda juu ya kile yanachofichua.
Biashara kubwa. Malengo ya jumla ya ufunikaji ya shirika zima ni kosa la kawaida na lenye matokeo kwa ukubwa huu, kwa kuwa yanachochea hasa kuchezea ambako mada hii inaeleza kuvuka makumi ya timu kwa wakati mmoja. Weka matarajio ya ufunikaji yanayotegemea hatari yanayotofautiana kwa umuhimu wa huduma, na uwekezaji katika miundombinu ya majaribio ya mabadiliko kwa mifumo yako yenye hatari kubwa zaidi mahususi.
Serikali. Mahitaji ya ufunikaji wakati mwingine yanaonekana katika nyaraka za ununuzi au uzingatiaji kama mwakilishi mkali, rahisi kubainisha wa uhakikisho wa ubora. Pale inapowezekana, oanisha asilimia yoyote ya ufunikaji inayohitajika kimkataba na sharti la majaribio ya mabadiliko au la ufanisi unaotegemea kasoro, ili motisha ya kimkataba isizawadie bila kukusudia hasa kujaza majaribio ya thamani ndogo ambako mada hii inaonya dhidi yake.
Mifano
Biashara kubwa. Uongozi wa jukwaa la biashara ya mtandaoni ulikuwa umeweka sharti la ufunikaji wa asilimia 95 kwa msimbo wote mpya, likitekelezwa kama lango gumu la CI. Ukaguzi miaka miwili baadaye, uliochochewa na wimbi la kasoro za uzalishaji katika msimbo uliodhaniwa kujaribiwa vizuri, uligundua kiwango cha kuua mutants chini ya asilimia 40 kuvuka sehemu kubwa ya msingi wa msimbo: timu zilikuwa zikiandika majaribio yaliyotekeleza njia za msimbo bila kuthibitisha tabia yake kwa maana, tu kuridhisha lango chini ya shinikizo la tarehe ya mwisho. Kampuni ilibadilisha sharti la jumla la ufunikaji na sera yenye madaraja ya hatari: ufunikaji mkali pamoja na majaribio ya mabadiliko ya lazima juu ya kizingiti cha kuua cha asilimia 80 kwa msimbo wa malipo na uthibitishaji wa utambulisho, na sakafu nyepesi zaidi sana ya ufunikaji kwa zana za ndani za hatari ndogo, jambo lililopunguza juhudi ya majaribio iliyopotea na kuboresha kwa kupimika viwango vya kasoro katika njia muhimu kweli.
Serikali. Mfumo wa ustahili wa mafao wa wakala wa afya ya umma ulikuwa umehitajika kimkataba kudumisha ufunikaji wa majaribio wa asilimia 90 chini ya makubaliano yake ya muuzaji wa uendelezaji. Mapitio ya baada ya tukio, yaliyofuata kasoro kubwa ya kukokotoa ustahili iliyosafirishwa licha ya sharti la ufunikaji kutimizwa, yaligundua kitendakazi mahususi kilichohusika kilikuwa kimefikia ufunikaji wake kabisa kupitia majaribio yaliyoita kitendakazi kwa pembejeo halali lakini hayakujaribu kamwe masharti ya mipaka au pembejeo batili, hasa mahali kasoro ilipotokea. Mkataba uliorekebishwa wa muuzaji wa wakala sasa unahitaji alama iliyoandikwa ya majaribio ya mabadiliko kando ya ufunikaji kwa msimbo wowote wa kukokotoa ustahili, ukiziba pengo mahususi lililoruhusu majaribio yanayozingatia lakini yasiyo na ufanisi kutimiza mkataba.
Kesi ya biashara: sababu, ROI, na TCO
Faida ya kuoanisha ufunikaji na majaribio ya mabadiliko ni kukamata pengo kati ya ubora wa majaribio unaoonekana na halisi kabla halijagharimu kasoro ya uzalishaji. Mfano wa biashara ya mtandaoni hapo juu unaonyesha mfumo wazi: sharti la ufunikaji peke yake lilikuwa limezalisha hisia ya uongo ya usalama ambayo wimbi la kasoro hatimaye liliifichua kwa gharama kubwa zaidi sana kuliko uwekezaji wa majaribio ya mabadiliko ambao ungekamata pengo mapema.
Jumla ya gharama ya umiliki inajumuisha gharama ya kihesabu ya majaribio ya mabadiliko, ambayo ni ghali zaidi kuendesha kuliko upimaji rahisi wa ufunikaji na kwa hiyo kwa kawaida huhifadhiwa kwa msimbo wa njia muhimu badala ya msingi mzima wa msimbo, pamoja na muda wa uhandisi wa kufasiri na kutenda juu ya matokeo. Gharama hiyo inahalalishwa mahususi kwa msimbo wenye hatari kubwa zaidi, ambapo gharama ya pengo lisilogunduliwa katika ufanisi wa majaribio ni ya juu zaidi.
Mifumo mibaya na mitego
- Kuchukulia asilimia ya ufunikaji kama hukumu ya moja kwa moja ya ubora: inapima utekelezaji, si uthibitishaji.
- Kuandika majaribio hasa kuridhisha lango la ufunikaji: huzalisha hasa mfumo wa thamani ndogo, wa kuchezea kizingiti ambao mada ya 1.2 inaonya dhidi yake.
- Kuzima au kufuta majaribio yanayoshindwa badala ya kurekebisha tatizo la msingi: huondoa ulinzi halisi huku ikiathiri namba iliyoripotiwa kidogo tu.
- Kutumia lengo la ufunikaji la sare bila kujali hatari ya msimbo: hupoteza juhudi kwa msimbo wa hatari ndogo na kuwekeza pungufu kwenye njia muhimu kweli.
- Kukuza orodha ya kuondoa kimyakimya kwa muda: huficha mapengo halisi ya majaribio nyuma ya takwimu ya ufunikaji sahihi kitaalamu lakini ya kupotosha.
- Kufuata dari ya ufunikaji badala ya sakafu ya ufunikaji: huunda shinikizo lisilokoma la kupanda linalozawadia kujaza majaribio kuliko uthibitishaji halisi.
Kielelezo cha ukomavu
- Ngazi ya 1, Kuanzisha: Ufunikaji haupimwi, au unapimwa bila uthabiti bila sakafu, lengo, au ukaguzi wa ufanisi.
- Ngazi ya 2, Kuendeleza: Lengo la ufunikaji lipo na linafuatiliwa, lakini hakuna majaribio ya mabadiliko wala kupa kipaumbele kunakotegemea hatari kunakoarifu jinsi juhudi inavyogawiwa.
- Ngazi ya 3, Kusawazisha: Sakafu za ufunikaji zinatekelezwa kwa uthabiti kwenye CI, pamoja na kupa kipaumbele kunakotegemea hatari kunakoelekeza mahali juhudi ya ufunikaji inapokusanyika.
- Ngazi ya 4, Kusimamia: Majaribio ya mabadiliko yanaendeshwa kwenye msimbo wa njia muhimu, pamoja na kizingiti kinachofuatiliwa cha kuua kinachopaswa kutimizwa kando ya ufunikaji, na orodha za kuondoa zinakaguliwa mara kwa mara.
- Ngazi ya 5, Kuratibu: Shirika linaweza kuonyesha upunguzaji mahususi wa kasoro uliofuatiliwa hadi kupa kipaumbele kulikoarifiwa na majaribio ya mabadiliko, na data ya ufunikaji na ufanisi kwa pamoja inaarifu moja kwa moja maamuzi ya uwekezaji wa majaribio.
Mawazo ya kujadili
- Kiwango chetu cha kuua mutants kwenye njia yetu moja ya msimbo muhimu zaidi ni kipi, na je, tunakijua kabisa?
- Je, tumewahi kuandika jaribio la thamani ndogo hasa kuridhisha lango la ufunikaji?
- Je, juhudi yetu ya sasa ya ufunikaji imekusanywa mahali hatari ni kubwa zaidi, au imesambazwa kwa sare?
- Msimbo upi kwa sasa umeondolewa kwenye hesabu ya ufunikaji, na je, kuondolewa huko bado kunahalalishwa?
- Je, uwekezaji wa majaribio ya mabadiliko kwenye mfumo wetu wenye hatari kubwa zaidi ungestahili gharama yake ya kihesabu?
Mambo muhimu ya kukumbuka
- Ufunikaji wa majaribio unapima utekelezaji, si uthibitishaji; mstari uliofunikwa hausemi chochote kuhusu kama ulikaguliwa kwa maana.
- Oanisha ufunikaji na majaribio ya mabadiliko kuthibitisha kwamba majaribio yanakamata kasoro halisi, si tu kwamba yanaendesha msimbo.
- Kusanya juhudi ya majaribio kwenye njia muhimu, zenye hatari kubwa badala ya kufuata ufunikaji wa sare kuvuka msingi mzima wa msimbo.
- Tumia ufunikaji kama sakafu ya kulinda dhidi ya kurudi nyuma, si dari ya kuongeza kwa kiwango cha juu bila kikomo.
- Angalia mifumo mahususi ya kuchezea ufunikaji: majaribio ya thamani ndogo, majaribio yanayoshindwa yaliyozimwa, na orodha za kuondoa zinazokua kimyakimya.
Marejeo na usomaji zaidi
- Working Effectively with Legacy Code, na Michael Feathers (mkakati wa ufunikaji wa majaribio kwa misingi ya msimbo iliyopo, migumu kujaribu).
- Jia, Yue, and Mark Harman, “An Analysis and Survey of the Development of Mutation Testing,” IEEE Transactions on Software Engineering (2011): utafiti kamili wa mbinu za majaribio ya mabadiliko na ufanisi wake.
- xUnit Test Patterns, na Gerard Meszaros (mifumo ya usanifu wa majaribio inayohusika na kuandika majaribio yenye ufanisi kweli, si ya kutosheleza ufunikaji tu).
- Accelerate: The Science of Lean Software and DevOps, na Nicole Forsgren, Jez Humble, na Gene Kim (uhusiano kati ya mazoea ya majaribio na utendaji wa utoaji).