Faida:
- Uwezo wa kutoa upimaji wa kitengo, kesi za makali, na uchambuzi wa pengo la chanjo na AI
- Uwezo wa kuchapisha matarajio ya jaribio kulingana na vipimo, sio tabia ya sasa ya msimbo
- Uwezo wa kujaribu ikiwa jaribio linalinda kwa kudunga makosa
Majaribio ya kuandika ni mojawapo ya kazi zinazozalisha thamani zaidi ambazo watengenezaji wengi huahirisha. Kitengo kizuri cha majaribio ni dhibitisho kwamba msimbo hufanya kazi kama inavyotarajiwa na njia ya kuokoa mabadiliko ya siku zijazo. Shida ni kwamba majaribio ya kuandika ni ya kujirudia na yanatumia wakati - haswa aina ya kazi ambapo AI inang'aa. Lakini kuna mtego: AI mara nyingi hujaribu tabia iliyopo ya nambari, sio tabia ambayo inapaswa kuwa. Kusimamia tofauti hii ndio kiini cha kitengo hiki.
Katika kitengo hiki, utajifunza upimaji wa kitengo (jaribio ambalo hujaribu kazi pekee, kwa kutengwa), majaribio ya kesi za makali na kutoa data ya majaribio kwa AI; kufunga mapengo katika chanjo ya mtihani; na kwa nini kuamini kwa upofu majaribio ya AI ni hatari.
Pande Mbili za Jaribio: Kurekebisha Tabia dhidi ya kuthibitisha
Jaribio linaweza kutumika kwa madhumuni mawili tofauti. Ya kwanza ni uthibitishaji: inajaribu kuwa nambari ni sahihi, kwamba inaambatana na vipimo. Ya pili ni ulinzi wa rejista: inafungia tabia ya msimbo leo, kwa hivyo ikiwa mtu atabadilisha kwa bahati mbaya kesho, jaribio litavunjika na kuarifu.
AI ni nzuri sana kwa mwisho; Inaangalia msimbo na hutoa kesi zinazojaribu "inachofanya hivi sasa." Lakini ikiwa nambari si sahihi tangu mwanzo, AI inaweza kubandika tabia hiyo mbaya kama "sahihi." Kwa hivyo lazima upitie madai ya kila jaribio ambalo AI hutoa: "Nambari inarudisha 42 na mtihani unatarajia 42" haimaanishi kuwa 42 ndio jibu sahihi.
Tahadhari: Ikiwa AI itapita mtihani, haimaanishi kuwa nambari "inafanya kazi"; inamaanisha "inatenda kama AI inavyotarajia". Unaamua kama matarajio ni sahihi au la kwa kuangalia vipimo.
Hatua kwa Hatua: Kuandika Majaribio Madhubuti na AI
- Toa maelezo, sio nambari tu. Ikiwa unaongeza habari "Kazi hii inapaswa kufanya hivi", AI inaweza kuandika matarajio sahihi; Itajaribu tabia ya sasa ikiwa utatoa nambari tu.
- Uliza kesi za makali. Tupu, null, sufuri, hasi, kubwa mno, umbizo mbovu, concurrency — dai kwa uwazi kutoka kwa njia ya furaha.
- Bainisha muundo na mtindo wa majaribio. "tumia pytest", "Panga-Act-Assert muundo", "acha kila jaribio lijaribu kitu kimoja" nk.
- Angalia matarajio (madai). Linganisha na vipimo ambavyo kila dai hukagua thamani sahihi.
- Funga mapengo katika wigo. Toa vipimo vilivyopo na uulize "ni matawi na kesi gani hazijapimwa?" kukufanya uulize; kisha uthibitishe majaribio ya ziada yaliyotolewa.
Kesi Tatu Ndogo
Kesi ya 1 - Chanjo kutoka 52% hadi 85%. Jaribio la moduli moja ya huduma lilikuwa 52%. Timu ililisha majaribio yaliyopo kwa AI, ikaorodhesha matawi ambayo hayajajaribiwa na kuyatolea majaribio. Kwa ukaguzi wa kibinadamu, chanjo iliongezeka hadi 85%; Katika mchakato huo, AI iligundua hitilafu halisi (njia ambayo ilirejesha msimbo wa makosa) katika tawi la hitilafu ambalo halikuwahi kujaribiwa hapo awali.
Kesi ya 2 - Mtego wa kurekebisha matarajio ya uwongo. Shughuli ya kukusanya pesa haikuwa sahihi; Badala ya kuzungusha 2.675 hadi 2.67, ilikuwa inazunguka 2.67 badala ya 2.68. AI iliangalia msimbo na ikaandika dai round_money(2.675) == 2.67 - kufungia kosa kama "kweli". Wakati msanidi programu alisoma vipimo, alirekebisha matarajio na akapata mdudu halisi. Kujaribu sheria, sio nambari, kulifanya tofauti.
Kesi ya 3 - Mlipuko wa hali ya ukingo. Wakati wa kuuliza AI kwa "kesi za makali" tu kwa kazi ya safu ya tarehe; Ilitoa matukio 8 kama vile start=end, reverse interval, leap year 29 February, saa tofauti za eneo na null interval. Mbili kati ya hizi (nafasi ya nyuma na mwaka wa kurukaruka) kwa kweli zilikuwa zinasababisha kosa. Kuzingatia kesi hizi kwa mikono mara nyingi kurukwa; AI imekuwa mshirika wa "makali ya kesi" hapa.
Violezo Vinne Vinakiliwa
Uzalishaji wa mtihani kulingana na vipimo:
Jukumu: Msanidi programu anayeandika majaribio. Mfumo: {{pytest/JUnit/Jest...}}.Nini kazi ya kukokotoa INAPASWA KUFANYA (ubainishaji): {{rule}}Andika majaribio ya chaguo za kukokotoa zifuatazo. Andika matarajio kulingana na vipimo, SIO matokeo ya sasa ya msimbo. Njia ya furaha + ongeza angalau kesi 4 za makali. Wacha kila jaribio lijaribu kitu kimoja, tumia jina la kuelezea. {{kazi}}
Majadiliano ya kesi ya makali:
Orodhesha kesi za ukingo/kushindwa ambazo zinafaa kujaribiwa katika majaribio ya chaguo hili la kukokotoa (batili, null, vituo vya kuvunja, umbizo mbaya, upatanishi, hitilafu ya nje).Kwa kila kesi: ingizo, tabia inayotarajiwa. USIANDIKE msimbo bado, orodhesha tu.{{function}}
Uchambuzi wa pengo la chanjo:
Chini ni kazi na vipimo vinavyopatikana. Ni matawi gani, masharti na kesi gani hazijapimwa? Orodhesha mapungufu na uandike majaribio mapya kwa mapungufu tu. Usirudie zilizopo. Kazi:{{function}}Majaribio:{{exsting_tests}}
Data ya majaribio / utengenezaji wa kitu cha kejeli:
Tengeneza data halisi ya majaribio ya majaribio ya {{function/service}}: sampuli halali, sampuli za mpaka na sampuli zisizo sahihi kando. Pendekeza tabia rahisi ya dhihaka kwa utegemezi wa nje {{X}}. Kutumia data ya siri ya kweli/PII; Tengeneza data bandia.
Agizo dhaifu / Ukumbusho thabiti
Dhaifu: "Andika jaribio la chaguo hili la kukokotoa."
Nguvu: "pamoja na pytest. Kazi apply_discount(jumla, asilimia) — sheria: punguzo lazima liwe 0%–30%, nje ya mipaka inapaswa kutupa ValueError, matokeo yanapaswa kufupishwa hadi desimali 2. Andika matarajio kwa KANUNI hii (sio kwa msimbo). Njia ya furaha + matukio haya makali: 0%, 30%, 31%, msimbo hasi, 0% = 0%
Anatoa sheria kali ya kutolewa na kusema "andika matarajio kulingana na sheria, sio kanuni"; Sentensi hii moja inafunga mtego wa AI kurekebisha tabia mbaya.
Aina ya mtihani
Mchango wa AI
udhibiti wa binadamu
Furaha ya kupima kitengo cha barabara
mifupa ya haraka
Je, matarajio ni sahihi?
Kesi za makali
Mazungumzo ya kina
Ondoa yasiyofaa
Ujazaji wa pengo la wigo
Hupata matawi yaliyorukwa
Thibitisha umuhimu
Data ya majaribio/dhihaka
Hutoa sampuli halisi
Hakuna PII, udhibiti wa uhalisia
Majaribio Hudhibiti Ubora, Sio Kuihakikishia
Ufikiaji wa juu wa mtihani unatoa imani, lakini pia inaweza kupotosha: ufikiaji wa asilimia 100 unamaanisha "kila mstari uliendeshwa," sio "kila mstari ni sahihi." Ni rahisi kuongeza chanjo na AI; Thamani halisi ni katika kuandika matarajio yenye maana. Thamani ya jaribio ni uwezo wake wa kuvunja na kukuarifu msimbo unapovunjwa. Ndiyo sababu vipimo vinavyotokana na AI vinatokana na swali "je, kanuni huvunjika wakati inabadilika?" Ijaribu kwa swali; Kuvunja mstari kwa makusudi na kuona mapumziko ya mtihani (wazo la mutation) ni uthibitisho kwamba mtihani ulifanya kazi.
Kidokezo: Ili kuona kama jaribio ambalo AI huandika linafanya kazi, tengeneza hitilafu ndogo kwenye msimbo (k.m. badilisha + hadi a -) na uone ikiwa jaribio litakatika. Ikiwa haitavunjika, mtihani huo hautakulinda.
Makosa ya kawaida
- Kuuliza mtihani bila kutoa sheria. Mfano huo unafungia tabia ya sasa; hurekebisha kosa kama "kweli".
- Kukubali matarajio bila kuyasoma. Majaribio ni ya kupotosha ikiwa hutaangalia kama madai yanatafuta thamani sahihi.
- Jaribu tu njia ya furaha. Makosa halisi huishi pembezoni; Uliza kesi za makali kwa uwazi.
- Kukosea kwa upeo wa kusudi. Asilimia kubwa sio dhamana ya tabia sahihi.
- Kutengeneza data halisi/iliyofichwa kama data ya majaribio. Data ya mteja au siri haipaswi kuingia kwenye majaribio na hifadhi; Tengeneza data ya syntetisk.
Kwa muhtasari
AI inachukua mzigo mwingi unaorudiwa kutoka kwa majaribio ya uandishi: hutoa mifupa haraka, orodha kubwa za visa vikali, na uchanganuzi wa pengo la chanjo. Lakini jambo muhimu zaidi ni matarajio: AI huelekea kujaribu tabia ya sasa ya nambari, wakati upimaji unapaswa kuandikwa kulingana na vipimo. Toa sheria, angalia matarajio, tekeleza kesi za makali, na ujaribu ikiwa majaribio hulinda kwa kudunga mdudu. Chanjo ya mtihani ni chombo, si lengo.
Jukumu la maombi
Chagua chaguo la kukokotoa na uchapishe kwanza jaribio kwa AI kwa kutoa tu nambari yake; Kumbuka matarajio. Kisha uchapishe mtihani tena, ukitoa maelezo (tabia inayohitajika) kwa kazi sawa. Linganisha matarajio ya seti mbili za majaribio: kuna tofauti yoyote, ni ipi inayofichua mdudu halisi? Mwishowe, thibitisha kuwa moja ya majaribio yaliyotolewa yalifanya kazi kwa kuongeza mdudu wa kukusudia kwenye nambari na kuona mapumziko ya jaribio.
orodha ya ukaguzi
- [ ] Ninatofautisha ikiwa jaribio ni la kurekebisha au kuthibitisha tabia.
- [ ] Ninapoomba jaribio, mimi hutoa sheria (maalum) ambayo inapaswa kuwa mahali, sio nambari.
- [ ] Ninalinganisha kila dai lililotolewa na maelezo.
- [ ] Ninaomba kwa uwazi kesi za makali na kutofaulu.
- [ ] Ninaona asilimia chanjo kama zana, si lengo.
- [ ] Ninajaribu kama jaribio linalinda kwa kudunga makosa.