Kitengo 6 / 11

Uzalishaji wa Mtihani wa Kitengo na Ujaribio: Jaribio Imara na AI

Faida:

  • Uwezo wa kuzuia akili ya bandia kutoka kwa kukubali tabia potovu kama 'sahihi' kwa kuhesabu thamani inayotarajiwa katika majaribio ya kitengo bila kuzingatia sheria ya kukubalika.
  • Uwezo wa kuchapisha majaribio ya haraka, huru na yanayoweza kurudiwa kwa kutumia kanuni za AAA na KWANZA na kudhihaki utegemezi wa nje.
  • Uwezo wa kujaribu majaribio kwa mabadiliko (kuvunja msimbo) na kutambua msimbo ambao ni mgumu-kujaribu kama harufu ya muundo

Safu kubwa na ya haraka zaidi ya piramidi ya majaribio ni upimaji wa kitengo - majaribio ambayo huthibitisha kazi au sehemu ndogo ya msimbo kwa kutengwa na kila kitu kingine. Maelfu ya majaribio ya vipimo huendeshwa kwa sekunde na kupata hitilafu wakati msimbo ukiwa bado kwenye skrini ya msanidi. Akili Bandia (AI) labda ni hodari zaidi katika kutengeneza majaribio ya kitengo: ukiifanyia kazi, AI hutoa majaribio kadhaa. Lakini urahisi huu unatokeza mtego mkubwa zaidi: AI hutoa majaribio kwa urahisi ambayo "yanang'aa kijani lakini hayathibitishi chochote" au kukubali tabia ya sasa (labda mbaya) ya msimbo kama "sahihi". Katika kitengo hiki utajifunza jinsi ya kuandika majaribio ya kitengo cha ulinzi kweli na AI na uhusiano kati ya msimbo unaoweza kujaribiwa na AI.

Sifa za mtihani mzuri wa kitengo: KWANZA

Majaribio mazuri ya vipimo hufuata kanuni za KWANZA: Haraka, Kujitegemea (majaribio hayapaswi kutegemeana), Yanayoweza kurudiwa (yanayoweza kurudiwa - matokeo sawa katika mazingira yoyote), Kujithibitisha (wazi kupita/kufeli), Kwa Wakati (kwa wakati). Jikumbushe kanuni hizi wakati AI itatoa majaribio; uliza haswa kwamba jaribio halitegemei ulimwengu wa nje (database halisi, mtandao, saa) kuwa "huru" na "inayoweza kurudiwa".

Muundo wa AAA na madai ya kujieleza

Jaribio la kipimo thabiti hufuata muundo wa AAA: Panga (tayarisha - weka pembejeo na vitegemezi), Tekeleza (tekeleza - piga chaguo la kukokotoa chini ya jaribio), Thibitisha (thibitisha - linganisha matokeo na thamani inayotarajiwa). La muhimu ni kudai. Makosa ya kawaida ambayo AI hufanya ni kupata madai kutoka kwa matokeo ya msimbo chini ya jaribio - mantiki ya "chochote ambacho msimbo utatoa ni kweli". Hii inafanya mtihani kutokuwa na maana. Njia sahihi ni kuamua thamani inayotarajiwa kwa kujitegemea (kutoka kwa vigezo vya kukubalika, hesabu kwa manually).

Makini: Ukiiambia AI "andika jaribio la chaguo la kukokotoa", AI inaweza kuendesha kazi na kuandika matokeo yake kama "inayotarajiwa". Jaribio hili hupita hata kama chaguo la kukokotoa si kweli. Badala yake, sema "unahesabu matokeo yanayotarajiwa kulingana na sheria hizi, usirejelee matokeo ya sasa ya kazi."

Kejeli, vijiti na utegemezi

Upimaji wa kitengo unahitaji kutengwa. Ikiwa utendakazi wako unategemea hifadhidata au API, hubadilishwa na vitu vya kejeli (dhihaka/stub - kibadala kinachodhibitiwa, dummy cha utegemezi halisi) katika majaribio. Hii inafanya mtihani kuwa wa haraka, huru na wa kuzaliana. AI inaweza kutoa usakinishaji wa dhihaka; Lakini jihadhari na dhihaka nyingi: ikiwa unadhihaki kila kitu, mtihani utathibitisha tu "kile mzaha hurejesha", sio mantiki halisi. Mizani: kuiga ulimwengu wa nje, tekeleza mantiki halisi chini ya mtihani.

Uthibitisho na AI

Kuna maoni ya kuvutia: msimbo ambao ni vigumu kujaribu mara nyingi ni msimbo ulioundwa vibaya. Ikiwa AI ina shida kuandika majaribio kwa chaguo la kukokotoa (tegemezi nyingi sana, hali ya siri ya ulimwengu, athari), hiyo ni harufu ya muundo. Kuuliza AI "ungewezaje kurekebisha nambari hii ili kuifanya iweze kufanyiwa majaribio" husababisha majaribio bora na msimbo bora zaidi.

Vipimo vilivyo na vigezo na utofauti wa data

Kuandika jaribio tofauti kila wakati ili kuthibitisha sheria sawa na pembejeo tofauti ni kuchosha na ni vigumu kudumisha. Jaribio la kigezo - muundo unaotumia mantiki sawa ya jaribio mara kwa mara kwenye orodha ya ingizo na matokeo yanayotarajiwa - huondoa marudio haya: kikundi kimoja cha majaribio hulishwa na jozi kadhaa za ingizo. AI ni bora sana katika kutoa majedwali haya ya matokeo yanayotarajiwa unapoipatia sheria zako za kukubali; Hasa, inaweka kikomo maadili ya kikomo na madarasa ya usawa.

Lakini kuna mtego hapa pia: AI huelekea kupata matokeo yanayotarajiwa kwenye jedwali linalotolewa kutoka kwa nambari iliyo chini ya jaribio. Hitilafu hii ni hatari zaidi katika upimaji wa vigezo, kwa sababu mantiki moja isiyo sahihi inabatilisha mistari kadhaa. Kwa hivyo, kila wakati safu wima ya matokeo inayotarajiwa ihesabiwe kwa kujitegemea kulingana na sheria ya kukubalika na uthibitishe mwenyewe angalau safu chache. Pia uliza safu ya maelezo "kila safu inawakilisha nini"; kwa hivyo safu inapovunjika unaona mara moja ni hali gani imevunjika.

Kidokezo: Ongeza kwa makusudi "safu mlalo" kwenye jedwali la majaribio lililowekewa vigezo - yaani, kuandika matokeo kimakusudi. Ikiwa mstari huo hautakuwa nyekundu unapofanya jaribio, jaribio lako halithibitishi hali hiyo. Huu ni ukaguzi wa haraka wa dhihaka.

Mwongozo dhaifu / Mwongozo thabiti

Dhaifu: "Andika jaribio la kitengo cha chaguo la kukokotoa."
Imara: Andika majaribio ya kipimo cha [lugha/mfumo] ya chaguo la kukokotoa la "kokotoo la kodi(kiasi, kiwango). Kanuni ya kukubalika: tokeo = kiasi * kiwango, kilichozungushwa hadi desimali 2; kiasi hasi au kiwango huleta hitilafu; hurejesha 0 ikiwa kiwango ni 0. Tumia muundo wa AAA. Kokotoa thamani zinazotarajiwa kwa mujibu wa sheria HIZI; usitake chaguo la kukokotoa. Urejeleaji wa kesi hasi, mzunguko hasi wa 0, na urejelee hali hasi ya 0. Wacha jina la kila jaribio lielezee sheria ambayo inathibitisha utegemezi wa nje "Hapana."

Agizo lenye nguvu; Inatoa sheria ya kukubalika, matarajio huru ya thamani inayotarajiwa, muundo na kesi za makali. Kwa hivyo, mtihani unakuwa mlezi wa sheria, sio kioo cha kanuni.

Jedwali la ubora wa kipimo

dalili

Mtihani mbaya (imani bandia)

mtihani mzuri

kudai

Hakuna au "sio null"

Thamani halisi inayotarajiwa

Chanzo cha thamani kinachotarajiwa

Pato la chaguo la kukokotoa

Sheria ya kukubalika / hesabu ya mwongozo

uraibu

DB/mtandao/saa halisi

Imehamishwa kwa mzaha/stub

kesi ya makali

Barabara ya furaha tu

kikomo, hasi, makosa

Unapovunja kanuni

inabaki kijani

inageuka nyekundu

Jina

test1, testMethod

inaeleza kanuni inayothibitisha

Violezo vinne vinavyoweza kunakiliwa

1) Upimaji wa kitengo kinachoendeshwa na sheria:

Jukumu lako: mhandisi mkuu wa majaribio ya programu.Andika jaribio la kitengo kuhusu kipengele cha kukokotoa kifuatacho kwa kutumia [lugha/mfumo]: [saini].Sheria za kukubalika: [kanuni].- Tumia muundo wa AAA.- Hesabu kwa mikono thamani zinazotarajiwa kulingana na sheria HIZI; USIREJEE matokeo ya sasa ya chaguo za kukokotoa. - Funika kikomo, hasi, makosa na njia ya furaha na vipimo tofauti. - Acha kila jina la jaribio lieleze sheria ambayo inathibitisha. - Kudhihaki utegemezi wa nje; Fanya mantiki halisi ifanye kazi.

2) Udhibiti wa upinzani wa mabadiliko:

Angalia vipimo hivi vya kitengo. Orodhesha maboresho 5 madogo ambayo ningeweza kufanya kwa nambari iliyo chini ya jaribio (a - badala ya +, a >= badala ya >, mabadiliko ya mpaka) na uniambie kwa kila NI IPI kati ya majaribio haya yatabadilika kuwa nyekundu? Ikiwa hakuna iliyorejeshwa, jaribio halitoshi.Code + tests: [bandika]

3) Mapitio ya uthibitisho:

Kwa nini ni vigumu kuandika jaribio la kitengo kwa kipengele hiki? Uraibu uliofichwa, hadhi ya kimataifa, madhara, je, kuna majukumu mengi? Pendekeza urekebishaji mdogo ili kuifanya iweze kujaribiwa; usibadili tabia. Msimbo: [bandika]

4) Kutokamilika kwa hali:

Kazi zifuatazo na vipimo vinavyopatikana vinatolewa. Orodhesha ni tabia/kesi gani HAIJAWAHI kujaribiwa (pengo la upeo) na uongeze jaribio kwa kila moja. Kazi+majaribio: [bandika]

kesi tatu ndogo

Kesi ya 1 - Jaribu kuakisi msimbo. Msanidi programu alikuwa na AI kuandika jaribio la kazi ya kuzungusha; Vipimo 10 vilikuwa vya kijani. Kwa kweli, chaguo la kukokotoa lilikuwa likizunguka katika mwelekeo usio sahihi, lakini AI ilikuwa imechukua thamani zilizotarajiwa kutoka kwa matokeo ya chaguo la kukokotoa, kwa hivyo majaribio yalizingatia kosa kuwa "kweli". Wakati maadili yaliyotarajiwa yalihesabiwa kwa mikono na kiolezo cha "kuendeshwa na sheria", vipimo 4 viligeuka kuwa nyekundu na hitilafu halisi ilifunuliwa.

Kesi ya 2 - Thamani ya udhibiti wa mabadiliko. Timu moja ilitegemea majaribio ya vitengo 45. Ilijaribu marekebisho madogo 20 kwa msimbo na "ukaguzi wa uimara wa mabadiliko"; vipimo vilikamata 11 tu kati yao. Usumbufu 9 uliobaki ulipita kimya kimya. Timu iliimarisha majaribio dhaifu; Hitilafu halisi ya kukokotoa ilinaswa na majaribio haya yaliyoimarishwa katika toleo linalofuata.

Kesi ya 3 - Kutokuwa thabiti ni harufu ya muundo. AI haikuweza kuandika vipimo kwa kazi ya kuagiza, ilihitaji hifadhidata halisi kila wakati. Kiolezo cha "mapitio ya uthabiti" kilionyesha kuwa chaguo za kukokotoa zilipachikwa ufikiaji wa hifadhidata. Wakati sindano ya utegemezi iliondolewa, majaribio yanaweza kuandikwa na msimbo ukawa safi.

Makosa ya kawaida

  • Kupata thamani inayotarajiwa kutoka kwa msimbo. AI inakubali matokeo ya kazi kama "sahihi"; mtihani unaothibitisha msimbo mbovu.
  • Jaribu bila madai au kwa madai madogo. "Yeye hakutupa kosa, alipita" mantiki; Haithibitishi chochote.
  • Mzaha uliokithiri. Kudhihaki kila kitu na kujaribu tu kile dhihaka inarudi; mantiki halisi haijaribiwi.
  • Barabara ya furaha tu. Kikomo cha kupita, hali hasi na makosa.
  • Si kujaribu kwa kuvunja kanuni. Kuamini kijani bila kuangalia mabadiliko.
  • Kupuuza kutokuwa na utulivu. Kutotambua na kurekebisha muundo mbaya badala ya kusukuma majaribio magumu.

Kwa muhtasari

Vipimo vya vipimo ni safu ya haraka na kubwa zaidi ya piramidi ya majaribio; Inashika kosa kwa wakati wa bei rahisi. AI ina uwezo mkubwa wa kutoa vipimo vya kitengo, lakini mtego wake mkubwa ni kuandika majaribio ambayo huchukulia tabia isiyo sahihi kama "sahihi" kwa kupata dhamana inayotarajiwa kutoka kwa nambari yenyewe. Suluhisho: toa sheria za kukubalika, uwe na maadili yanayotarajiwa kukokotwa kwa mikono, tekeleza kanuni za AAA na FIRST, dhihaki ulimwengu wa nje na utekeleze mantiki halisi, na jaribu kila jaribio kwa ubadilishaji (kuvunja kanuni). Nambari ambayo ni ngumu kujaribu ni ishara ya muundo ambayo inahitaji kurekebishwa.

Jukumu la maombi

Chagua chaguo la kukokotoa ambalo lina sheria ya biashara kutoka kwa mradi wako mwenyewe. Andika sheria za kukubalika na uandike majaribio ya AI kwa kiolezo cha "kipimo kinachoendeshwa na kanuni"; Kuwa na maadili yanayotarajiwa kuhesabiwa kwa mikono. Kisha tumia "kukagua uimara wa mabadiliko": fanya angalau mapumziko madogo 5 kwenye msimbo na upime ni majaribio ngapi yanayobadilika kuwa mekundu. Ongeza mtihani mpya kwa mafisadi ambao hawajashughulikiwa. Ripoti ni usumbufu ngapi ulipatikana (kama vile alama za mabadiliko).

orodha ya ukaguzi

  • [ ] Nilitoa sheria za kukubalika na nikawa na thamani zinazotarajiwa kukokotwa kwa mikono.
  • [ ] Nilihakikisha kuwa majaribio hayakupata thamani inayotarajiwa kutoka kwa msimbo.
  • [ ] Nimeanzisha majaribio ya kujitegemea kwa kufuata miongozo ya AAA na FIRST.
  • [ ] Nilidhihaki utegemezi wa nje na kuendesha mantiki halisi.
  • [ ] Nilishughulikia kikomo, visa hasi na makosa.
  • [ ] Kwa kuvunja msimbo (mutation) nilithibitisha kuwa majaribio kweli hulinda.