Ẹyọ 5 / 12

Igbeyewo Gbóògì ati Didara idaniloju

Awọn anfani:

  • Agbara lati gbejade idanwo ẹyọkan, awọn ọran eti, ati itupalẹ aafo agbegbe pẹlu AI
  • Agbara lati tẹ awọn ireti idanwo ti o da lori sipesifikesonu, kii ṣe ihuwasi lọwọlọwọ ti koodu naa
  • Agbara lati ṣe idanwo boya idanwo kan ni aabo gangan nipasẹ awọn aṣiṣe abẹrẹ

Awọn idanwo kikọ jẹ ọkan ninu awọn iṣẹ ṣiṣe ti o ni iye julọ ti ọpọlọpọ awọn olupilẹṣẹ fi silẹ. Suite idanwo to dara jẹ ẹri pe koodu ṣiṣẹ bi o ti ṣe yẹ ati igbesi aye fun awọn ayipada iwaju. Iṣoro naa ni pe awọn idanwo kikọ jẹ atunwi ati n gba akoko - gangan iru iṣẹ nibiti AI n tan. Ṣugbọn apeja kan wa: AI nigbagbogbo ṣe idanwo ihuwasi ti o wa ti koodu, kii ṣe ihuwasi ti o yẹ ki o jẹ. Ṣiṣakoso iyatọ yii jẹ pataki ti ẹyọ yii.

Ninu ẹyọ yii, iwọ yoo kọ ẹkọ idanwo ọkan (idanwo ti o ṣe idanwo iṣẹ kan nikan, ni ipinya), awọn idanwo ọran eti ati ṣiṣẹda data idanwo pẹlu AI; pipade awọn ela ni agbegbe idanwo; ati idi ti igbẹkẹle afọju awọn idanwo AI jẹ ewu.

Awọn Apa Meji ti Idanwo: Ṣiṣe atunṣe ihuwasi vs

Idanwo le ṣe awọn idi oriṣiriṣi meji. Ohun akọkọ jẹ ijẹrisi: o ṣe idanwo pe koodu naa tọ, pe o ni ibamu pẹlu sipesifikesonu. Ẹlẹẹkeji jẹ idaabobo atunṣe: o didi ihuwasi ti koodu loni, nitorina ti ẹnikan ba yipada lairotẹlẹ ni ọla, idanwo naa yoo fọ ati ki o leti.

AI jẹ dara julọ ni igbehin; O n wo koodu naa ati ṣe ipilẹṣẹ awọn ọran ti o ṣe idanwo “kini o n ṣe ni bayi.” Ṣugbọn ti koodu naa ba jẹ aṣiṣe lati ibẹrẹ, AI le pin ihuwasi aṣiṣe yẹn bi “tọ.” Nitorinaa o gbọdọ ṣe atunyẹwo iṣeduro ti idanwo kọọkan ti AI ṣe: “koodu pada 42 ati idanwo naa nireti 42” ko tumọ si pe 42 jẹ idahun to pe.

Išọra: Ti AI ba kọja idanwo naa, ko tumọ si pe koodu naa “ṣiṣẹ”; o kan tumọ si “o huwa bi AI ṣe nireti”. O pinnu boya ireti jẹ deede tabi kii ṣe nipa wiwo sipesifikesonu naa.

Igbesẹ nipasẹ Igbesẹ: Kikọ Awọn idanwo Alagbara pẹlu AI

  1. Fun sipesifikesonu, kii ṣe koodu nikan. Ti o ba ṣafikun alaye naa “Iṣẹ yii yẹ ki o ṣe eyi”, AI le kọ ireti to pe; Yoo ṣe idanwo ihuwasi lọwọlọwọ ti o ba kan pese koodu naa.
  2. Beere fun awọn igba eti. Ofo, asan, odo, odi, ti o tobi ju, ọna kika buburu, concurrency — beere ni gbangba kuro ni ọna idunnu.
  3. Pato ilana idanwo ati ara. "lo pytest", "Arange-Act-Assert pattern", "jẹ ki idanwo kọọkan ṣe idanwo ohun kan" ati be be lo.
  4. Ṣayẹwo awọn ireti (itẹnumọ). Ṣe afiwe pẹlu sipesifikesonu ti ọkọọkan sọ sọwedowo fun iye to pe.
  5. Pa awọn ela ni iwọn. Fun awọn idanwo ti o wa tẹlẹ ki o beere “awọn ẹka ati awọn ọran wo ni ko ti ni idanwo?” jẹ ki o beere; lẹhinna ṣayẹwo awọn idanwo afikun ti a ṣe.

Mẹta Mini igba

Ọran 1 - Ideri lati 52% si 85%. Agbegbe idanwo ti module iṣẹ kan jẹ 52%. Ẹgbẹ naa jẹ awọn idanwo ti o wa tẹlẹ si AI, ti ṣe atokọ awọn ẹka ti ko ni idanwo ati ṣe awọn idanwo fun wọn. Pẹlu atunyẹwo eniyan, agbegbe pọ si 85%; Ninu ilana, AI ṣe awari kokoro gangan kan (ọna ti o da koodu aṣiṣe ti ko tọ) ni ẹka kokoro ti ko ti ni idanwo tẹlẹ.

Irú 2 - Awọn eke ireti imuduro pakute. A owo ikotan iṣẹ wà kosi ti ko tọ; Dipo ti yika 2.675 si 2.67, o yika 2.67 dipo 2.68. AI wo koodu naa o kowe assert round_money(2.675) == 2.67 — didi aṣiṣe bi “otitọ”. Nigbati olupilẹṣẹ ka sipesifikesonu, o ṣe atunṣe ireti ati mu kokoro gidi naa. Idanwo ofin, kii ṣe koodu, ṣe iyatọ.

Case 3 - bugbamu ipinle eti. Nigbati o ba n beere lọwọ AI fun “awọn ọran eti” nikan fun iṣẹ sakani ọjọ kan; O ṣe agbejade awọn ọran 8 gẹgẹbi ibẹrẹ = ipari, aarin yiyipada, ọdun fifo Kínní 29, awọn agbegbe akoko oriṣiriṣi ati aarin asan. Meji ninu iwọnyi (aaye yiyipada ati ọdun fifo) nfa aṣiṣe naa gaan. Ṣiyesi awọn ọran wọnyi pẹlu ọwọ ni igbagbogbo fo; AI di alabaṣepọ “eti-ọran ọpọlọ” nibi.

Mẹrin Copiable Templates

Ipilẹṣẹ idanwo ti o da lori pato:

Ipa: Olùgbéejáde ti o kọ awọn idanwo. Ilana: {{pytest/JUnit/Jest...}}.Kini iṣẹ yẹ ki o ṢE (pato): {{ofin}} Kọ awọn idanwo fun iṣẹ atẹle. Kọ awọn ireti ni ibamu si sipesifikesonu, KO iṣejade lọwọlọwọ ti koodu naa. Ona idunnu + ṣafikun o kere ju awọn ọran eti 4. Jẹ ki ọkọọkan ṣe idanwo ohun kan, lo orukọ asọye. {{iṣẹ}}

Imudaniloju ọran Edge:

Akojọ eti / awọn ọran ikuna ti o yẹ ki o gbiyanju ni idanwo fun iṣẹ yii (asan, asan, awọn aaye fifọ, ọna kika buburu, concurrency, aṣiṣe ita) .Fun ọran kọọkan: titẹ sii, ihuwasi ireti. MAA ṢE kọ koodu sibẹsibẹ, kan ṣe akojọ.{{iṣẹ}}

Itupalẹ aafo agbegbe:

Ni isalẹ wa awọn iṣẹ ati awọn idanwo to wa. Awọn ẹka wo, awọn ipo ati awọn ọran ko ti ni idanwo? Ṣe atokọ awọn aipe ki o kọ awọn idanwo tuntun nikan fun awọn aipe. Maṣe tun awọn ti o wa tẹlẹ ṣe. Iṣẹ:{{iṣẹ}}Awọn idanwo:{{exising_test}}

Idanwo data / iran ohun ẹlẹgàn:

Ṣe ipilẹṣẹ data idanwo ojulowo fun awọn idanwo {{iṣẹ/iṣẹ}}: awọn ayẹwo to wulo, awọn ayẹwo aala ati awọn ayẹwo aiṣedeede lọtọ. Daba ihuwasi ẹlẹya ti o rọrun fun igbẹkẹle ita {{X}}. Lilo data asiri otitọ/PII; Ṣe ipilẹ data iro.

Ailagbara kiakia / Alagbara kiakia

Alailagbara: "Kọ idanwo fun iṣẹ yii."
Alagbara: "pẹlu pytest. Iṣẹ apply_discount (lapapọ, ogorun) - ofin: ẹdinwo gbọdọ jẹ 0% -30%, kuro ninu awọn aala yẹ ki o jabọ ValueError, abajade yẹ ki o wa ni yika si awọn eleemewa 2. Kọ awọn ireti nipasẹ RULE yii (kii ṣe nipasẹ koodu). Ọna ayọ + awọn ọran eti wọnyi: 0%, 30%), 31% (aṣiṣe).

O funni ni ofin idasilẹ ti o lagbara ati sọ pe “kọ ireti ni ibamu si ofin, kii ṣe koodu”; Gbolohun kan ṣoṣo yii tilekun pakute AI ti n ṣatunṣe iwa aiṣedeede.

Iru idanwo

AI ilowosi

eda eniyan Iṣakoso

Dun opopona kuro igbeyewo

sare egungun

Ṣe ireti naa tọ?

Awọn igba eti

Ibanujẹ ọpọlọ nla

Mu ohun ti ko ṣe pataki kuro

Nkún aafo dopin

Wa awọn ẹka skipped

Jẹrisi pataki

Idanwo data / ẹlẹyà

Ṣe agbejade apẹẹrẹ ojulowo

Ko si PII, iṣakoso otito

Awọn idanwo Ṣakoso Didara, Kii ṣe Ẹri Rẹ

Iṣeduro idanwo giga n funni ni igboya, ṣugbọn o tun le jẹ ṣinalọna: 100 ogorun agbegbe tumọ si “gbogbo laini ti ṣiṣẹ,” kii ṣe “gbogbo laini jẹ deede.” O rọrun lati mu agbegbe pọ si pẹlu AI; Iye gidi ni kikọ awọn ireti ti o nilari. Awọn iye ti a igbeyewo ni awọn oniwe-agbara lati bu ati ki o gbigbọn o nigbati awọn koodu ti baje. Ti o ni idi ti AI-ti ipilẹṣẹ igbeyewo ti wa ni da lori awọn ibeere "nje koodu gan adehun nigba ti o ayipada?" Ṣe idanwo pẹlu ibeere naa; Mọọmọ fọ laini kan ati ri isinmi idanwo (imọran iyipada) jẹ ẹri pe idanwo naa ṣiṣẹ.

Imọran: Lati rii boya idanwo AI n ṣiṣẹ, ṣẹda kokoro kekere kan ninu koodu (fun apẹẹrẹ yi a + si a -) ki o rii boya idanwo naa ba ya. Ti ko ba ya, idanwo naa ko ni aabo fun ọ.

Awọn aṣiṣe ti o wọpọ

  • Beere fun idanwo laisi fifun ofin naa. Awọn awoṣe didi lọwọlọwọ ihuwasi; ṣe atunṣe aṣiṣe bi "otitọ".
  • Gbigba awọn ireti laisi kika wọn. Idanwo jẹ ṣinilọna ti o ko ba ṣayẹwo pe awọn idaniloju n ṣayẹwo fun iye to pe.
  • O kan idanwo ọna idunnu. Awọn aṣiṣe gidi n gbe lori awọn ala; Beere fun awọn ọran eti ni gbangba.
  • Asise awọn dopin fun idi. Iwọn giga kan kii ṣe iṣeduro ihuwasi ti o tọ.
  • Ṣiṣe data gidi / pamọ bi data idanwo. Awọn data alabara tabi awọn aṣiri ko yẹ ki o tẹ idanwo ati ibi ipamọ sii; Ṣe ina data sintetiki.

Ni akojọpọ

AI gba pupọ ninu ẹru atunwi lati awọn idanwo kikọ: o ṣe agbejade awọn egungun iyara, awọn atokọ nla ti awọn ọran eti, ati awọn itupalẹ aafo agbegbe. Ṣugbọn aaye pataki julọ ni awọn ireti: AI duro lati ṣe idanwo ihuwasi lọwọlọwọ ti koodu, lakoko ti idanwo yẹ ki o kọ ni ibamu si sipesifikesonu. Fun ofin naa, ṣayẹwo awọn ireti, fi ipa mu awọn ọran eti, ati idanwo boya awọn idanwo naa ni aabo gangan nipasẹ abẹrẹ kokoro kan. Agbegbe idanwo jẹ ohun elo, kii ṣe ibi-afẹde kan.

Ohun elo iṣẹ-ṣiṣe

Yan iṣẹ kan ki o kọkọ tẹjade idanwo kan si AI nipa fifun koodu rẹ lasan; Ṣe akiyesi awọn ireti. Lẹhinna tẹjade idanwo naa lẹẹkansi, fifun sipesifikesonu (iwa ti o nilo) fun iṣẹ kanna. Ṣe afiwe awọn ireti ti awọn eto idanwo meji: ṣe iyatọ eyikeyi wa, eyiti o ṣafihan kokoro gidi kan? Lakotan, rii daju pe ọkan ninu awọn idanwo ti ipilẹṣẹ ṣiṣẹ nipa fifi kokoro imomose kun koodu naa ati ri isinmi idanwo naa.

akojọ ayẹwo

  • [] Mo ṣe iyatọ boya idanwo naa ni lati ṣatunṣe tabi rii daju ihuwasi.
  • [] Nigbati Mo beere idanwo kan, Mo fun ni ofin (sipesifikesonu) ti o yẹ ki o wa ni aye, kii ṣe koodu naa.
  • [] Mo afiwe kọọkan ti ipilẹṣẹ itenumo si awọn sipesifikesonu.
  • [] Mo beere ni gbangba eti ati awọn ọran ikuna.
  • [] Mo wo agbegbe ipin bi ohun elo, kii ṣe ibi-afẹde kan.
  • [] Mo ṣe idanwo boya idanwo kan ni aabo gangan nipasẹ awọn aṣiṣe abẹrẹ.