Bölüm 6 / 11

Bölüm synagynyň döredilmegi we synag mümkinçiligi: AI bilen berk synag

Girdeji:

  • Emeli intellektiň kabul ediş düzgünine garaşsyz bölüm synaglarynda garaşylýan bahany hasaplamak bilen ýalňyş hereketleri 'dogry' hökmünde kabul etmeginiň öňüni almak ukyby;
  • AAA we FIRST ýörelgelerini ulanyp we daşarky garaşlylygy masgaralap, çalt, garaşsyz we gaýtalanýan synaglary çap etmek ukyby
  • Synaglary mutasiýa (kod döwmek) bilen barlamak we synagdan geçmek kody dizaýn ysy hökmünde tanamak

Synag piramidasynyň iň uly we iň çalt gatlagy birlik synagydyr - başga bir zatdan üzňe bir funksiýany ýa-da kiçi kod bölegini barlaýan synag. Müňlerçe birlik synaglary sekuntda işleýär we kod henizem döredijiniň ekranynda bolýar. Emeli intellekt (AI) birlik synaglaryny öndürmekde iň ökde bolmagy mümkin: oňa bir funksiýa berýärsiňiz, AI onlarça synag öndürýär. Thisöne bu amatlylyk iň uly duzaga sebäp bolýar: AI aňsatlyk bilen “ýaşyl öwüsýän, ýöne hiç zady barlamaýan” ýa-da koduň häzirki (belki nädogry) hereketini “dogry” diýip kabul edýän synaglary aňsatlyk bilen öndürýär. Bu bölümde AI bilen hakyky gorag birligi synaglaryny we synagdan geçirilýän kod bilen AI arasyndaky baglanyşygy nädip ýazmalydygyny öwrenersiňiz.

Gowy bölüm synagynyň hilleri: BIRINJI

Gowy birlik synaglary BIRINJI ýörelgelere eýerýär: Çalt, garaşsyz (synaglar biri-birine bagly bolmaly däl), Gaýtalanýan (gaýtalanyp boljak - islendik gurşawda şol bir netije), Öz-özüni barlamak (aç-açan / şowsuz), Wagtynda (wagtynda). AI synaglary geçirilende bu ýörelgeleri ýada salyň; synagyň daşarky dünýä (hakyky maglumat bazasy, tor, sagat) "garaşsyz" we "gaýtalanjak" bolmagyna bagly däldigini anyk soraň.

AAA nagşy we aňlatma tassyklamasy

Gaty birlik synagy AAA gurluşyna eýerýär: Tertiplemek (giriş we garaşlylygy düzmek), Kanun (ýerine ýetiriň - synag wagtynda funksiýany çagyryň), Assert (tassyklaň - netijäni garaşylýan baha bilen deňeşdiriň). Kritiki tassyklanýar. AI-iň iň ýalňyş ýalňyşlygy, synag astyndaky koduň çykyşyndan tassyklamak - “kod näme gaýtarsa ​​dogry” logikasy. Bu synagy manysyz edýär. Dogry ýol garaşylýan bahany özbaşdak kesgitlemekdir (kabul ediş ölçeglerinden, el bilen hasaplaň).

Üns beriň: AI-e "bu funksiýa üçin synag ýazyň" diýseňiz, AI funksiýany işledip, çykyşyny "garaşylşy" ýaly ýazyp biler. Funksiýa ýalňyş bolsa-da bu synag geçýär. Munuň ýerine "garaşylýan netijeleri şu düzgünlere görä hasaplaýarsyňyz, funksiýanyň häzirki çykyşyna salgylanmaň" diýiň.

Masgaralar, stublar we baglylyklar

Bölüm synagy izolýasiýa talap edýär. Funksiýaňyz maglumat bazasyna ýa-da API-e bagly bolsa, synagda masgaralaýjy zatlar (mock / stub - hakyky garaşlylygyň dolandyrylýan, gödek çalşygy) bilen çalşylýar. Bu synagy çalt, garaşsyz we köpeldýär. AI masgara gurnamasyny öndürip biler; Excessiveöne aşa masgaralamakdan ägä boluň: hemme zady masgaralasaňyz, synag hakyky logika däl-de, "masgaranyň näme gaýtarylýandygyny" barlar. Balans: daşarky dünýäni öýküniň, synagda hakyky logikany ýerine ýetiriň.

Synag we AI

Gyzykly seslenme bar: synamak kyn bolan kod köplenç erbet işlenmedik kod. AI bir funksiýa synaglary ýazmakda kynçylyk çekýän bolsa (gaty köp garaşlylyk, gizlin global ýagdaý, zyýanly täsirler), bu dizaýn ysy. AI-den “bu kody synagdan geçirmek üçin nädip üýtgedip bilersiňiz” diýip soramak, has gowy synaga we has gowy koda alyp barýar.

Parametrleşdirilen synaglar we maglumatlaryň dürlüligi

Şol bir düzgüni dürli girişler bilen barlamak üçin her gezek aýratyn synag ýazmak hem ýadaw, hem-de saklamak kyn. Parametrleşdirilen synag - girişleriň we garaşylýan netijeleriň sanawynda birmeňzeş synag logikasyny birnäçe gezek işleýän gurluş - bu gaýtalanmagy aradan aýyrýar: bir synag organy onlarça giriş jübüti bilen iýmitlenýär. AI kabul ediş düzgünleriňizi bereniňizde, bu garaşylýan netijeler tablisalaryny öndürmekde örän ökde; Hususan-da, çäk bahalary we ekwiwalentlik synplaryny yzygiderli düzýär.

Hereöne bu ýerde bir duzak hem bar: AI synag astyndaky koddan döredilen tablisada garaşylýan netijeleri alýar. Bu ýalňyşlyk parametrleşdirilen synagda hasam howply, sebäbi bir nädogry logika onlarça setiri ýatyrýar. Şonuň üçin hemişe garaşylýan netije sütünini kabul ediş düzgünine laýyklykda özbaşdak hasaplaň we azyndan birnäçe hatary el bilen tassyklaň. Şeýle hem "her hatar nämäni aňladýar" düşündiriş sütünini soraň; şonuň üçin hatar döwlende haýsy ýagdaýyň döwülendigini derrew görersiňiz.

Maslahat: Parametrleşdirilen synag tablisasyna bilkastlaýyn “duzak hatary” goşuň, ýagny netijäni bilgeşleýin ýalňyş ýazyň. Synag geçirilende şol setir gyzyl öwrülmese, synagyňyz aslynda bu ýagdaýy tassyklamaýar. Bu çalt masgaralaýyş barlagy.

Gowşak haýyş / Güýçli haýyş

Gowşak: "Bu funksiýa üçin birlik synagyny ýazyň."
Güýçli: "TaxCalculate (mukdar, stawka) funksiýasy üçin [dil / çarçuwa] birlik synaglaryny ýazyň. Kabul etmegiň düzgüni: netije = mukdar * derejesi, 2 onka çenli tegelek; negatiw mukdar ýa-da nyrh ýalňyşlyk goýberýär; nyrh 0 bolsa 0-a gaýtarylýar. AAA gurluşyny ulanyň. tassyklaýan düzgüni "Daşarky garaşlylyk" .ok.

Güýçli haýyş; Kabul etmek düzgünini, garaşsyz garaşylýan baha garaşmagyny, gurluşyny we gyrasy ýagdaýlaryny berýär. Şeýlelikde, synag koduň aýnasy däl-de, düzgüniň goragçysy bolýar.

Bölüm synagynyň hil tablisasy

alamaty

Erbet synag (galp ynam)

gowy synag

tassykla

Hiç biri ýa-da "ýok"

Garaşylýan anyk baha

Garaşylýan baha çeşmesi

Funksiýanyň netijesi

Kabul etmegiň düzgüni / el bilen hasaplamak

endik

Hakyky DB / tor / sagat

Masgara / stub bilen izolýasiýa

gyrasy

Diňe bagtly ýol

çäklendirmek, otrisatel, ýalňyşlyk

Kody bozanyňyzda

ýaşyllygyna galýar

gyzyl öwüsýär

Ady

test1, testMethod

tassyklaýan düzgünini suratlandyrýar

Göçürip boljak dört şablon

1) Düzgüne esaslanýan bölüm synagy:

Siziň roluňyz: uly programma üpjünçiligi synag inereneri. [Dil / çarçuwa] bilen aşakdaky funksiýa boýunça birlik synagyny ýazyň: [gol] .Kabul ediş düzgünleri: [düzgünler] .- AAA gurluşyny ulanyň.- BU düzgünlere laýyklykda garaşylýan bahalary el bilen hasaplaň; Funksiýanyň häzirki çykyşyna salgylanmaň. - Çäk, negatiw, ýalňyşlyk we bagtly ýoly aýratyn synaglar bilen ýapyň. - Her synag adynyň tassyklaýan düzgünini beýan etsin. - Daşarky garaşlylygy masgaralamak; Hakyky logikany işlediň.

2) Mutasiýa garşylygy gözegçilik:

Bu bölüm synaglaryny gözden geçiriň. Synag astyndaky koda (a - a +, a> = ýerine>, araçäk çalşygy) girizip boljak 5 sany kiçijik düzedişleri sanaň we bu synaglaryň haýsysynyň gyzyl öwrüljekdigini aýdyň? Hiç biri yzyna gaýtarylmasa, synag ýeterlik däl. Kod + synaglar: [paste]

3) Synaga syn:

Bu funksiýa üçin birlik synagyny ýazmak näme üçin kyn? Gizlin endik, global ýagdaý, zyýanly täsirler, köp jogapkärçilik barmy? Synag üçin iň az gaýtadan işlemegi maslahat beriň; özüni alyp barşyňy üýtgetme. Kod: [paste]

4) Doly däl ssenariýa:

Aşakdaky funksiýa we bar bolan synaglar berilýär. Haýsy özüni alyp barşyň / gyranyň Hiç haçan synag edilmändigini sanaň we her biri üçin synag goşuň. Funksiýa + synaglar: [ýelme]

üç sany kiçi halat

1-nji hadysa - Kody aýna synagy. Bir dörediji AI tegelek funksiýa üçin synag ýazmagyny isledi; 10 synag ýaşyl boldy. Aslynda, funksiýa nädogry ugurda tegelekdi, ýöne AI funksiýanyň çykyşyndan garaşylýan bahalary aldy, şonuň üçin synaglar ýalňyşlygy "dogry" hasaplady. Garaşylýan bahalar "düzgün bilen dolandyrylýan" şablon bilen el bilen hasaplananda, 4 synag gyzyl reňkde boldy we hakyky ýalňyşlyk ýüze çykdy.

2-nji hadysa - mutasiýa gözegçiliginiň gymmaty. Bir topar 45 birlik synagyna bil baglady. "Mutasiýa berkligini barlamak" bilen koda 20 sany kiçijik synanyşyk; synaglar diňe 11-sini aldy. Galan 9 bökdençlik sessiz geçdi. Topar gowşak synaglary güýçlendirdi; Hakyky hasaplama ýalňyşlygy indiki goýberilişde bu güýçlendirilen synaglar bilen tutuldy.

3-nji hadysa - Durnuksyzlyk dizaýn ysy. AI sargyt funksiýasy üçin synag ýazyp bilmedi, hemişe hakyky maglumat bazasyna mätäçdi. "Synaga ukyplylygy gözden geçirmek" şablony, funksiýanyň maglumatlar bazasyna girişini görkezdi. Baglylyk sanjymy aýrylanda synaglar ýazylyp, kod has arassalanyp bilerdi.

Adaty ýalňyşlyklar

  • Koddan garaşylýan bahany almak. AI funksiýanyň çykyşyny "dogry" hökmünde kabul edýär; nädogry kody tassyklaýan synag.
  • Tassyklamazdan ýa-da ownuk tassyklama bilen synag ediň. "Erroralňyşlyk goýbermedi, logika geçdi"; Ol hiç zady tassyklamaýar.
  • Örän gülkünç. Hemme zady masgaralamak we diňe ýaňsylaýan zadyny barlamak; hakyky logika synagdan geçirilmeýär.
  • Diňe bagtly ýol. Çäkden geçmek, otrisatel we ýalňyş ýagdaýlar.
  • Kody bozup synag etme. Mutasiýa barlamazdan ýaşyla ynanmak.
  • Durnuksyzlyga ähmiýet bermezlik. Gaty synagdan geçirmegiň ýerine erbet dizaýny tanamazlyk we düzetmezlik.

Gysgaça

Bölüm synaglary synag piramidasynyň iň çalt we iň uly gatlagydyr; Thealňyşlygy iň arzan pursatda ele alýar. AI birlik synaglaryny öndürmäge örän ukyply, ýöne iň uly ýalňyşlygy, koduň garaşylýan bahasyny alyp, nädogry hereketi "dogry" hasaplaýan synaglary ýazmakdyr. Çözüw: kabul ediş düzgünlerini beriň, garaşylýan bahalary el bilen hasaplaň, AAA we BIRINJI ýörelgeleri ýerine ýetiriň, daşarky dünýäni masgaralaň we hakyky logikany işlediň we her synagy mutasiýa arkaly synap görüň (kody bozuň). Synag kyn bolan kod, düzedilmeli dizaýn belgisidir.

Programma meselesi

Öz taslamaňyzdan iş düzgünini öz içine alýan funksiýany saýlaň. Kabul etmegiň düzgünlerini ýazyň we “düzgün bilen dolandyrylýan birlik synagy” şablony bilen AI ýazuw synaglaryny geçiriň; Garaşylýan bahalary el bilen hasaplaň. Soňra “mutasiýa berkligini barlaň” ulanyň: kodda azyndan 5 sany kiçijik arakesme ediň we näçe synagyň gyzyl öwüsýändigini ölçäň. Gözlenmedik korrupsiýa üçin täze synag goşuň. Näçe bökdençligiň tutulandygyny habar beriň (mutasiýa baly ýaly).

gözegçilik sanawy

  • [] Kabul etmegiň düzgünlerini berdim we garaşylýan bahalary el bilen hasapladym.
  • [] Synaglaryň koddan garaşylýan bahany almaýandygyna göz ýetirdim.
  • [] AAA we FIRST görkezmelerine laýyklykda garaşsyz synag geçirdim.
  • [] Daşarky baglylyklary masgaraladym we hakyky logikany işledim.
  • [] Çäk, negatiw we ýalňyş ýagdaýlary öz içine aldym.
  • [] Kody (mutasiýa) bozup, synaglaryň hakykatdanam goraýandygyny subut etdim.