Awọn anfani:
- Agbara lati ṣe idiwọ oye atọwọda lati gba ihuwasi aṣiṣe bi 'tọ' nipa iṣiro iye ti a nireti ni awọn idanwo ẹyọkan ni ominira ti ofin gbigba.
- Agbara lati tẹjade ni iyara, ominira ati awọn idanwo atunwi nipa lilo AAA ati awọn ipilẹ FIRST ati ẹlẹgàn awọn igbẹkẹle ita
- Agbara lati ṣe idanwo awọn idanwo pẹlu iyipada (fifọ koodu) ati ṣe idanimọ koodu ti o nira-lati-idanwo bi oorun apẹrẹ
Layer ti o tobi julọ ati iyara ti jibiti idanwo jẹ idanwo ẹyọkan - idanwo ti o jẹrisi iṣẹ kan tabi nkan kekere ti koodu ni ipinya lati ohun gbogbo miiran. Ẹgbẹẹgbẹrun awọn idanwo ẹyọkan ṣiṣẹ ni iṣẹju-aaya ati mu kokoro kan lakoko ti koodu naa tun wa loju iboju olupilẹṣẹ. Oye itetisi atọwọda (AI) le jẹ ọlọgbọn julọ ni iṣelọpọ awọn idanwo ẹyọkan: o fun ni iṣẹ kan, AI ṣe agbejade awọn dosinni ti awọn idanwo. Ṣugbọn irọrun pupọ yii n funni ni ẹgẹ ti o tobi julọ: AI ni irọrun ṣe awọn idanwo ti “awọ alawọ ewe ṣugbọn maṣe jẹrisi ohunkohun” tabi gba ihuwasi lọwọlọwọ (boya aṣiṣe) ti koodu bi “tọ”. Ninu ẹyọ yii iwọ yoo kọ ẹkọ bii o ṣe le kọ awọn idanwo ẹyọ aabo nitootọ pẹlu AI ati ibatan laarin koodu idanwo ati AI.
Awọn agbara ti idanwo ẹyọkan to dara: FIRST
Awọn idanwo ẹyọkan ti o dara tẹle awọn ilana FIRST: Yara, Ominira (awọn idanwo ko yẹ ki o dale lori ara wọn), Tunṣe (atunṣe — esi kanna ni eyikeyi agbegbe), Ifọwọsi ara ẹni (ko kọja / kuna), Akoko (lori akoko). Ṣe iranti ararẹ ti awọn ipilẹ wọnyi nigbati o ba ni awọn idanwo AI; ni pataki beere pe idanwo naa ko dale lori agbaye ita (data data gangan, nẹtiwọki, aago) lati jẹ “ominira” ati “tun ṣe”.
AAA Àpẹẹrẹ ati expressive assert
Idanwo ẹyọkan ti o muna tẹle ilana AAA: Ṣeto (murasilẹ - ṣeto awọn igbewọle ati awọn igbẹkẹle), Ofin (ṣe — pe iṣẹ naa labẹ idanwo), Assert (fọwọsi - ṣe afiwe abajade pẹlu iye ti a nireti). Ohun to ṣe pataki ni a sọ. Aṣiṣe ti o wọpọ julọ ti AI n ṣe ni gbigba idaniloju lati inu abajade ti koodu labẹ idanwo - “ohunkohun ti koodu ba pada jẹ otitọ”. Eyi jẹ ki idanwo naa jẹ asan. Ọna ti o pe ni lati pinnu iye ti a nireti ni ominira (lati awọn ibeere gbigba, ṣe iṣiro pẹlu ọwọ).
Ifarabalẹ: Ti o ba sọ fun AI “kọ idanwo kan fun iṣẹ yii”, AI le ṣiṣẹ iṣẹ naa ki o kọ iṣẹjade rẹ bi “ti a nireti”. Idanwo yii kọja paapaa ti iṣẹ naa ba jẹ eke. Dipo, sọ pe "o ṣe iṣiro awọn abajade ti o nireti ni ibamu si awọn ofin wọnyi, maṣe tọka si iṣelọpọ lọwọlọwọ ti iṣẹ naa.”
Mocks, stubs ati dependencies
Idanwo ẹyọkan nilo ipinya. Ti iṣẹ rẹ ba da lori ibi ipamọ data tabi API, wọn rọpo pẹlu awọn ohun ẹlẹgàn (ẹgàn / stub — iṣakoso kan, aropo idinwon fun igbẹkẹle gidi) ni idanwo. Eyi jẹ ki idanwo naa yarayara, ominira ati atunṣe. AI le gbe awọn Mock fifi sori; Ṣugbọn ṣọra fun ẹgan ti o pọ julọ: ti o ba ṣe ẹlẹyà ohun gbogbo, idanwo naa yoo rii daju “kini ohun ẹlẹgàn naa yoo pada”, kii ṣe imọran gangan. Iwontunws.funfun: farawe agbaye ita, ṣiṣẹ ọgbọn gidi labẹ idanwo.
Testability ati AI
Awọn esi ti o nifẹ si wa: koodu ti o nira lati ṣe idanwo nigbagbogbo koodu apẹrẹ ti ko dara. Ti AI ba ni wahala kikọ awọn idanwo si iṣẹ kan (ọpọlọpọ awọn igbẹkẹle, ipo agbaye ti o farapamọ, awọn ipa ẹgbẹ), iyẹn jẹ õrùn apẹrẹ. Bibeere AI “bawo ni iwọ yoo ṣe tun koodu yii ṣe lati jẹ ki o jẹ idanwo” yori si idanwo mejeeji ti o dara julọ ati koodu to dara julọ.
Awọn idanwo parameterized ati oniruuru data
Kikọ idanwo lọtọ ni akoko kọọkan lati rii daju ofin kanna pẹlu awọn igbewọle oriṣiriṣi jẹ mejeeji ti o nira ati nira lati ṣetọju. Idanwo paramita - eto kan ti o nṣiṣẹ leralera kannaa idanwo kanna lori atokọ ti awọn igbewọle ati awọn abajade ti a nireti - yọkuro atunwi yii: ara idanwo kan jẹ ifunni pẹlu dosinni ti awọn orisii igbewọle. AI ṣiṣẹ daradara ni iṣelọpọ awọn tabili abajade ti a nireti titẹ sii nigbati o fun ni awọn ofin gbigba rẹ; Ni pataki, o ṣe agbekalẹ eto eto awọn iye opin ati awọn kilasi ibaramu.
Ṣugbọn ẹgẹ kan wa nibi paapaa: AI duro lati gba awọn abajade ti a nireti ni tabili ti ipilẹṣẹ lati koodu labẹ idanwo. Aṣiṣe yii paapaa lewu diẹ sii ni idanwo parameterized, nitori pe ọgbọn aṣiṣe kan sọ awọn dosinni ti awọn laini jẹ alaiṣe. Nitorinaa, nigbagbogbo ni iwe abajade ti a nireti ṣe iṣiro ni ominira ni ibamu si ofin gbigba ati fọwọsi pẹlu ọwọ o kere ju awọn ori ila diẹ. Tun beere fun iwe apejuwe kan "kini awọn ila kọọkan ṣe aṣoju"; nitorina nigbati ọna kan ba ya, o wo lẹsẹkẹsẹ iru ipo ti o bajẹ.
Imọran: Mọọmọ ṣafikun “ila pakute” si tabili idanwo paramita - iyẹn ni, mọọmọ ṣi abajade naa. Ti ila yẹn ko ba tan pupa nigbati o ba ṣiṣẹ idanwo naa, idanwo rẹ kii ṣe ijẹrisi ipo yẹn gangan. Eyi jẹ ayẹwo ayẹwo-kọja iyara kan.
Ailagbara kiakia / Alagbara kiakia
Alailagbara: "Kọ idanwo ẹyọkan fun iṣẹ yii."
Alagbara: Kọ [ede / Framework] awọn idanwo ẹyọkan fun iṣẹ “taxCalculate (iye, oṣuwọn). Ofin gbigba: abajade = iye * oṣuwọn, yika si awọn eleememewa 2; iye odi tabi oṣuwọn n jabọ aṣiṣe; pada 0 ti oṣuwọn ba jẹ 0. Lo eto AAA. Ṣe iṣiro awọn idiyele ti a ti ṣe yẹ ni ọwọ, awọn ofin wọnyi ti o ṣe deede, maṣe ṣe itọkasi awọn ọran odi lọwọlọwọ Co. ti o tobi, yika si eleemewa).
Imudani ti o lagbara; O funni ni ofin gbigba, ireti iye ireti ominira, eto ati awọn ọran eti. Nitorinaa, idanwo naa di alabojuto ofin, kii ṣe digi ti koodu naa.
Unit igbeyewo tabili didara
aami aisan
Idanwo buburu (igbẹkẹle iro)
ti o dara igbeyewo
fi idi rẹ mulẹ
Ko si tabi "kii ṣe asan"
O ti ṣe yẹ nja iye
O ti ṣe yẹ iye orisun
Ijade ti iṣẹ naa
Ofin gbigba / iṣiro ọwọ
afẹsodi
DB gangan / nẹtiwọki / wakati
Ya sọtọ pẹlu Mock / stub
eti irú
Nikan dun opopona
ifilelẹ, odi, aṣiṣe
Nigbati o ba ṣẹ koodu
si maa wa alawọ ewe
yipada pupa
Oruko
test1, testMethod
ṣe apejuwe ofin ti o jẹrisi
Mẹrin daakọ awọn awoṣe
1) Idanwo ẹyọkan ti o da lori ofin:
Rẹ ipa: oga software igbeyewo engineer.Kọ a kuro igbeyewo lori awọn wọnyi iṣẹ pẹlu [ede/framework]: [ibuwọlu] Awọn ofin gbigba: [ofin] .- Lo AAA be.- Pẹlu ọwọ ṣe iṣiro awọn iye ti o ti ṣe yẹ gẹgẹ bi WỌNYI ofin; MAA ṢE tọka abajade lọwọlọwọ ti iṣẹ naa. - Bo opin, odi, aṣiṣe ati ọna idunnu pẹlu awọn idanwo lọtọ. - Jẹ ki kọọkan igbeyewo orukọ apejuwe awọn ofin ti o verifies. - Mock ita dependencies; Ṣe awọn gangan kannaa ṣiṣẹ.
2) Iṣakoso resistance iyipada:
Ṣayẹwo awọn idanwo ẹyọkan wọnyi. Ṣe atokọ awọn tweaks kekere 5 ti MO le ṣe si koodu labẹ idanwo (a - dipo +, a>= dipo a>, iyipada aala) ki o sọ fun mi fun ọkọọkan EWO ninu awọn idanwo wọnyi yoo di pupa? Ti ko ba si ọkan ti o da pada, idanwo naa ko to.Code + tests: [lẹẹmọ]
3) Atunwo idanwo:
Kini idi ti o ṣoro lati kọ idanwo ẹyọkan fun iṣẹ yii? Afẹsodi ti o farasin, ipo agbaye, awọn ipa ẹgbẹ, ṣe ọpọlọpọ awọn ojuse wa bi? Dabaa atunṣe atunṣe to kere julọ lati jẹ ki o jẹ idanwo; maṣe yi ihuwasi pada. Koodu: [lẹẹ mọ]
4) Ipari oju iṣẹlẹ ti ko pe:
Iṣẹ atẹle ati awọn idanwo to wa ni a fun. Ṣe atokọ iru ihuwasi/apo eti ti ko ti ni idanwo (aafo dopin) ki o ṣafikun idanwo kan fun ọkọọkan. Awọn idanwo iṣẹ +: [lẹẹmọ]
mẹta mini igba
Case 1 - Idanwo mirroring koodu. Olùgbéejáde kan ni AI kọ idanwo kan fun iṣẹ iyipo; 10 igbeyewo wà alawọ ewe. Ni otitọ, iṣẹ naa n yika ni itọsọna ti ko tọ, ṣugbọn AI ti gba awọn iye ti a nireti lati iṣẹjade iṣẹ naa, nitorinaa awọn idanwo naa ka aṣiṣe “otitọ”. Nigbati awọn iye ti a nireti ṣe iṣiro pẹlu ọwọ pẹlu awoṣe “iṣakoso-ofin”, awọn idanwo 4 yipada pupa ati aṣiṣe gidi ti ṣafihan.
Ọran 2 - Awọn iye ti iṣakoso iyipada. Ẹgbẹ kan gbarale awọn idanwo ẹyọ 45. Gbiyanju awọn tweaks kekere 20 si koodu pẹlu “ṣayẹwo agbara iyipada”; igbeyewo mu nikan 11 ti wọn. Awọn idalọwọduro 9 ti o ku kọja ni ipalọlọ. Ẹgbẹ naa mu awọn idanwo alailagbara lagbara; Aṣiṣe iṣiro gangan ni a mu nipasẹ awọn idanwo imudara wọnyi ni itusilẹ atẹle.
Ọran 3 - Untestability jẹ oorun apẹrẹ. AI ko le kọ awọn idanwo fun iṣẹ pipaṣẹ, o nilo data data gidi nigbagbogbo. Awoṣe “atunyẹwo idanwo” fihan pe iṣẹ naa ni iraye si ibi ipamọ data. Nigbati abẹrẹ ti o gbẹkẹle kuro, awọn idanwo le kọ ati pe koodu naa di mimọ.
Awọn aṣiṣe ti o wọpọ
- Gbigba iye ti a nireti lati koodu. AI gba iṣẹjade iṣẹ bi “ti o tọ”; idanwo ti o jẹrisi aṣiṣe koodu.
- Idanwo laisi idaniloju tabi pẹlu ohun ti ko ni idiyele. "O ko jabọ ohun ašiše, o koja" kannaa; Ko jẹrisi ohunkohun.
- Ẹgan ti o ga julọ. Ṣe ẹlẹyà ohun gbogbo ati idanwo nikan ohun ti ẹlẹgàn pada; ogbon gidi ko ni idanwo.
- O kan ni opopona dun. Bypassing iye to, odi ati aṣiṣe ipinle.
- Ko ṣe idanwo nipasẹ kikan koodu naa. Gbẹkẹle alawọ ewe laisi ṣayẹwo fun iyipada.
- Aibikita ailagbara. Ko ṣe idanimọ ati atunṣe apẹrẹ buburu dipo titari idanwo lile.
Ni akojọpọ
Awọn idanwo ẹyọkan jẹ ipele ti o yara ju ati tobi julọ ti jibiti idanwo; O mu aṣiṣe ni akoko ti o kere julọ. AI ni agbara pupọ lati ṣe agbejade awọn idanwo ẹyọkan, ṣugbọn ọfin nla rẹ ni kikọ awọn idanwo ti o ro ihuwasi ti ko tọ bi “ti o tọ” nipa gbigba iye ti a nireti lati koodu funrararẹ. Solusan: fun awọn ofin gbigba, ṣe iṣiro awọn idiyele ti a nireti pẹlu ọwọ, fi ipa mu awọn ipilẹ AAA ati FIRST, ṣe ẹlẹya ita gbangba ati ṣiṣe ọgbọn gangan, ati idanwo idanwo kọọkan nipasẹ iyipada (fifọ koodu naa). Koodu ti o nira lati ṣe idanwo jẹ ami apẹrẹ ti o nilo atunṣe.
Ohun elo iṣẹ-ṣiṣe
Yan iṣẹ kan ti o ni ofin iṣowo kan ninu iṣẹ akanṣe tirẹ. Kọ awọn ofin gbigba ati ki o ni awọn idanwo kikọ AI pẹlu awoṣe “idanwo ẹyọ-iṣakoso-ofin”; Ṣe iṣiro awọn iye ti a nireti pẹlu ọwọ. Lẹhinna lo “ayẹwo agbara iyipada”: ṣe o kere ju awọn isinmi kekere 5 ninu koodu naa ki o wọn iye awọn idanwo ti o yipada pupa. Ṣafikun idanwo tuntun fun awọn ibajẹ ti a ko mu. Jabọ iye awọn idalọwọduro ti a mu (gẹgẹbi Dimegilio iyipada).
akojọ ayẹwo
- [] Mo fun ni awọn ofin gbigba ati pe awọn iye ti a nireti ṣe iṣiro pẹlu ọwọ.
- [] Mo rii daju pe awọn idanwo naa ko gba iye ti a nireti lati koodu naa.
- [] Mo ti ṣeto idanwo ominira ni atẹle AAA ati awọn itọsọna FIRST.
- [] Mo ti fi awọn ita dependencies ati ki o ran awọn gangan kannaa.
- [] Mo ti bo iye to, odi ati aṣiṣe igba.
- [] Nipa fifọ koodu naa (iyipada) Mo fihan pe awọn idanwo naa ṣe aabo nitootọ.