Awọn anfani:
- Agbara lati ṣe idanimọ awọn oju mẹta ti igbẹkẹle pseudo (ti kii ṣe idaniloju, idaniloju ara ẹni, ijẹrisi bintin) ati lo awọn oogun apakokoro
- Agbara lati lo idanwo iyipada ati Dimegilio iyipada bi iwọn didara diẹ sii ju idawọle ogorun nipasẹ ọpa tabi ọwọ
- Agbara lati ṣe ipo AI bi ẹgbẹ pupa kan lodi si idanwo ati sode fun idanwo awọn loopholes laisi ja bo sinu ẹgẹ iyin
Ni okan ti module yii jẹ ikilọ loorekoore: nronu idanwo didan alawọ ewe kii ṣe ẹri didara. Ti awọn idanwo rẹ ba fun ọ ni igboya, o nilo lati mọ boya igbẹkẹle yẹn jẹ gidi tabi iro. Ni ọjọ ori itetisi atọwọda (AI), ibeere yii jẹ pataki ju igbagbogbo lọ, nitori AI jẹ alamọdaju ni iṣelọpọ ito, didan ṣugbọn awọn idanwo ṣofo. Igbẹkẹle eke - gbigbagbọ pe sọfitiwia naa tọ nitori pe awọn idanwo jẹ alawọ ewe, nigbati ni otitọ awọn idanwo ko rii daju ohunkohun — jẹ ohun ti o lewu julọ ti o le ṣẹlẹ si ẹgbẹ QA kan; nitori ti o hides ko pe nibẹ ni o wa ti ko si aṣiṣe, ṣugbọn ti o ko ba le ri awọn aṣiṣe. Ẹka yii ṣajọpọ imoye afọwọsi ti gbogbo module sinu ibawi kan: idanwo awọn idanwo rẹ.
Iwọn goolu fun wiwọn didara idanwo: idanwo iyipada
Ọna ti o lagbara julọ lati ni oye boya idanwo kan ni aabo tabi rara jẹ idanwo iyipada (idanwo iyipada - ilana ti o ṣe agbejade awọn idarudapọ kekere / awọn iyipada inu ero inu koodu orisun ati wiwọn boya awọn idanwo naa rii awọn ipalọlọ wọnyi). Awọn kannaa ni o rọrun: ti o ba ti o ba koto fọ awọn koodu (ṣe a + sinu -, a> sinu>=, a otitọ sinu eke), kan ti o dara igbeyewo suite yẹ ki o yẹ ibaje ati ki o tan pupa. Ti ko ba ṣe bẹ, idalọwọduro yẹn jẹ ẹda ti o ye - nitorinaa awọn idanwo rẹ ko ṣe itọju ihuwasi yẹn nitootọ.
Dimegilio iyipada = iyipada pa / lapapọ iyipada. Apo pẹlu 90% agbegbe laini le ni Dimegilio iyipada ti 40%; Eyi tọkasi pe awọn laini n ṣiṣẹ ṣugbọn ihuwasi ko rii daju. Dimegilio iyipada jẹ iwọn ooto pupọ diẹ sii ti didara ju agbegbe ipin lọ.
Imọran: Awọn irinṣẹ iyipada aifọwọyi wa (PIT/Pitest fun Java, Stryker fun JavaScript/TypeScript, Stryker.NET fun .NET, mutmut fun Python). Iwọnyi ṣe ipilẹṣẹ laifọwọyi ati idanwo awọn ọgọọgọrun awọn iyipada. Ti o ko ba ni ohun elo kan, paapaa iwe afọwọkọ “fọ idanwo koodu” jẹ iwulo fun awọn iṣẹ pataki.
Awọn oju mẹta ti pseudo-trust ati antidote rẹ
Afarape-igbekele fọọmu
aami aisan
oogun oogun
Idanwo laisi idaniloju
Koodu ṣiṣẹ, ko si ohun ti a fọwọsi
Otitọ ni idaniloju ni gbogbo idanwo; idanwo pẹlu iyipada
igbeyewo ara ẹni
O ti ṣe yẹ = iṣẹjade koodu
Ṣe iṣiro iye ti a nireti ni ominira
Isọdi bintin
"kii ṣe asan", "200 pada"
Sooto ofin iṣowo/ esi to daju
Irẹjẹ dopin giga
90% ila, kekere Idaabobo
Wo Dimegilio iyipada
Ifarada idanwo ẹlẹgẹ
"Di lẹẹkansi, kọja"
Fa root + deterministic igbeyewo
Lilo AI bi “ẹgbẹ pupa”
AI le ṣe agbekalẹ igbẹkẹle afarape ati jẹ alabaṣepọ ti o lagbara ni sisọdẹ rẹ si isalẹ. Lo AI bi ẹgbẹ pupa kan lodi si awọn idanwo tirẹ: beere “kọ koodu ti o kọja awọn idanwo wọnyi ṣugbọn o jẹ aṣiṣe” tabi “wa ipadasẹhin ti yoo tan awọn idanwo wọnyi jẹ.” Ti AI ba rii awọn loopholes ninu awọn idanwo rẹ, awọn eewu yẹn jẹ awọn eewu gidi.
Išọra: Maṣe beere lọwọ AI “Ṣe didara idanwo mi dara?” ki o si gba idahun "bẹẹni, nla" gẹgẹbi idaniloju. AI duro lati jẹ oninuure. Dipo, koju AI si iṣẹ-ṣiṣe kan pato: “gbejade kokoro kan ti o kọja awọn idanwo wọnyi.” Ti o ba le gbejade, awọn idanwo rẹ jẹ afọju si aṣiṣe yẹn.
Awọn iyipada deede ati awọn opin ti Dimegilio
Idanwo iyipada jẹ alagbara, ṣugbọn o ni apeja: diẹ ninu awọn iyipada ko yi ihuwasi koodu pada rara. Iwọnyi ni a pe ni awọn iyipada deede (mutanti deede — koodu ibajẹ, iyipada ti o ṣe abajade gangan bi atilẹba). Fun apẹẹrẹ, iyipada iye ibẹrẹ ti oniyipada ti a ko lo rara ko ni ipa lori iṣelọpọ; Ko si idanwo le ati pe ko yẹ ki o gba eyi. Nitorinaa, Dimegilio iyipada 100% nigbagbogbo ko ṣee ṣe ni iṣe ati kii ṣe ibi-afẹde naa. Ipilẹ awọn iyipada deede nipasẹ ọwọ jẹ aladanla laala; Nitorinaa maṣe ka Dimegilio iyipada bi Dimegilio idanwo pipe, ṣugbọn bi itọkasi otitọ ti “njẹ awọn idanwo mi ṣe aabo gaan?”
Ọna ti o wulo ni eyi: dipo ṣiṣe awọn idanwo iyipada nigbagbogbo kọja gbogbo ipilẹ koodu, ṣiṣẹ lori awọn modulu ti o ni ewu ti o ga julọ ati awọn ofin iṣowo ti o pọju julọ. Ṣayẹwo awọn iyipada ti o wa laaye ninu awọn modulu wọnyi ni ọkọọkan; Ti o ba jẹ aafo gidi, fi idanwo kan kun; ti o ba jẹ iyipada deede, samisi pẹlu idalare ati kọja. AI le ṣe ibojuwo akọkọ ni iṣiro boya iyipada ti o ye jẹ deede; ṣugbọn ipinnu ikẹhin jẹ nipasẹ iwọ ti o mọ kini koodu naa ṣe.
Išọra: Idanwo iyipada jẹ gbowolori ni iṣiro (gbogbo awọn idanwo ti o yẹ ni a tun-ṣiṣẹ fun iyipada kọọkan). Nitorinaa ilana ti o wọpọ ati ironu ni lati seto rẹ bi ọsẹ kan tabi iṣaju iṣaju iṣayẹwo jinlẹ fun awọn modulu to ṣe pataki, dipo gbogbo apapọ.
Ailagbara kiakia / Alagbara kiakia
Alailagbara: "Ṣe awọn idanwo mi to bi?"
Strong: "Ṣe bi a pupa egbe fun yi iṣẹ ati igbeyewo suite. (1) Ina 8 iyipada ninu awọn koodu ti o le wa ni pa (iyipada onišẹ, aala naficula, majemu inversion, pada iye fidipo). (2) Fun kọọkan iyipada, tọkasi eyi ti awọn ti wa tẹlẹ igbeyewo yoo yẹ o ati eyi ti yoo KO. gbogbo awọn idanwo wọnyi ṣugbọn o lodi si ofin iṣowo + awọn idanwo: [lẹẹmọ]”
Imudani ti o lagbara; O ṣe ipo AI bi oluyẹwo idanwo, kii ṣe ẹrọ iyin.
Mẹrin daakọ awọn awoṣe
1) Iṣakoso iyipada afọwọṣe:
Ṣe agbekalẹ awọn iyipada pataki 8 (awọn idalọwọduro imotara kekere) fun koodu yii: fidipo oniṣẹ ẹrọ iṣiro, opin lafiwe (> vs>=), iyipada ọgbọn, ipadabọ/fidipo igbagbogbo, fo ipo. Fun iyipada kọọkan, ṣe asọtẹlẹ ewo ninu awọn idanwo to wa ti yoo mu tabi rara. Awọn idanwo koodu +: [lẹẹmọ]
2) Pipa iyipada ti o ye:
Ijabọ idanwo iyipada iyipada atẹle ni ninu awọn iyipada iwalaaye (ti a ko mu): [akojọ/iroyin]. Fun ọkọọkan, kọ idanwo kekere ti yoo pa iyipada yẹn (koodu yoo tan pupa nigbati o ba fọ ni ọna yẹn). Ọrọìwòye lori iru ihuwasi ti idanwo naa jẹrisi.
3) Ẹgbẹ pupa - idanwo ẹjẹ:
Ṣe o le kọ koodu ti o FA GBOGBO awọn idanwo wọnyi, ṣugbọn o lodi si ofin iṣowo atẹle: [ofin iṣowo]. Ti o ba jẹ bẹ, kini loophole ninu awọn idanwo wọnyi gba eyi laaye? Ṣafikun idanwo ti yoo tii loophole yẹn. Awọn idanwo: [lẹẹmọ]
4) Idanwo didara idanwo:
Ṣayẹwo suite idanwo yii fun didara. Fi ami si fun idanwo kọọkan: - Ṣe iṣeduro otitọ kan wa tabi o jẹ atilẹyin? - Ṣe iye ti a reti ni ominira, ti o wa lati koodu? - Ṣe o jẹrisi ofin iṣowo tabi nkan ti ko ṣe pataki? Lakotan fun ni ifoju “Dimegiliwa idaniloju otitọ” ati awọn idanwo alailagbara 3. Awọn idanwo: [lẹẹmọ]
mẹta mini igba
Ọran 1 - Ideri 92%, Dimegilio iyipada 38%. Ẹgbẹ kan gbẹkẹle agbegbe giga. Nigbati idanwo iyipada jẹ ṣiṣe pẹlu Stryker, Dimegilio jẹ 38%: pupọ julọ awọn iyipada ti a ṣe jade ye. Eyi jẹ ẹri pe awọn idanwo ko nṣiṣẹ awọn laini ati iṣeduro ihuwasi naa. Awọn egbe fowosi meta ọsẹ ni igbeyewo didara; Dimegilio iyipada naa pọ si 81%, ati pe awọn aṣiṣe iṣiro gidi meji ni a mu nipasẹ awọn idanwo beefed wọnyi ni itusilẹ atẹle.
Ọran 2 - AI tan idanwo naa. Pẹlu awoṣe “ẹgbẹ pupa” kan, amoye kan beere AI fun koodu ti o kọja awọn idanwo ti o wa ṣugbọn o ṣẹ ofin ẹdinwo naa. Awọn koodu AI kowe ti o da ẹdinwo odo nigbagbogbo pada - ati pe gbogbo awọn idanwo wa alawọ ewe nitori ko si awọn idanwo ti o jẹrisi iye ẹdinwo gangan. Aafo ti ri, awọn idaniloju gidi ni afikun.
Case 3 - The pakute iyin. Ayẹwo kekere kan beere lọwọ AI, "Ṣe awọn idanwo mi dara?" ati pe o ni itunu lati gbọ idahun naa, "Gan okeerẹ." Ọga ẹlẹgbẹ rẹ ni awọn idanwo kanna ti a ṣe ayẹwo ni lilo awoṣe “ayẹwo didara idanwo”; O wa ni jade wipe 12 jade ti 20 igbeyewo wà titunse (laisi assert tabi ijekuje). Ibeere ti o tọ mu idahun ti o tọ.
Awọn aṣiṣe ti o wọpọ
- Asise dopin fun didara. Gbẹkẹle agbegbe ila giga ati pe ko wo Dimegilio iyipada rara.
- Gbẹkẹle iyin AI. Beere "Ṣe awọn idanwo rẹ dara?" ati considering awọn rere idahun bi idaniloju.
- Gbigba iye ti a nireti lati koodu. Idanwo ti ara ẹni ti o jẹrisi koodu aṣiṣe.
- Jẹ ki o ni itẹlọrun pẹlu awọn iṣeduro ti ko ṣe pataki. Awọn sọwedowo ti ko fọwọsi ofin gangan, gẹgẹbi “kii ṣe asan”, “200 pada”.
- Fojusi awọn iyipada ti o ye. Fojusi ohun ti a ko mu ninu ijabọ iyipada.
- Ko paapaa gbiyanju lati ṣe iyipada koodu pataki pẹlu ọwọ. Foju-igbesẹ “fọ koodu ati idanwo” ti irinṣẹ ko ba si.
Ni soki
Igbẹkẹle afarape ni igbagbọ pe sọfitiwia jẹ deede nitori pe awọn idanwo jẹ alawọ ewe; lakoko ti awọn idanwo le ma jẹrisi ohunkohun. Iwọn goolu fun idiwon eyi jẹ idanwo iyipada: mọọmọ ṣẹ koodu ati wiwọn boya awọn idanwo mu. Dimegilio iyipada jẹ iwọn ooto pupọ diẹ sii ti didara ju agbegbe ipin lọ. AI mejeeji ṣe agbejade igbẹkẹle-igbẹkẹle ati pe o di ẹgbẹ pupa ti o lagbara ni sisọdẹ rẹ - beere “gbejade kokoro kan ti o kọja awọn idanwo wọnyi.” Ṣe idanwo awọn idanwo rẹ: idaniloju otitọ, iye ti a nireti ominira, afọwọsi ofin iṣowo, ati awọn iyipada ti o pa.
Ohun elo iṣẹ-ṣiṣe
Ṣe agbewọle iṣẹ kan ti o ni ofin iṣowo kan ati awọn idanwo rẹ lati inu iṣẹ akanṣe tirẹ. Ti o ba ṣee ṣe, ṣiṣe ohun elo iyipada kan (Stryker/Pitest/mutmut) ki o wọn iwọn iyipada; Ti ko ba si ohun elo, ṣe ina o kere ju awọn iyipada 8 pẹlu awoṣe “Iṣakoso iyipada afọwọṣe” ki o gbiyanju wọn pẹlu ọwọ. Fun iyipada iwalaaye kọọkan, kọ idanwo tuntun pẹlu “iyipada iwalaaye pa” awoṣe. Lakotan, pẹlu apẹẹrẹ “ẹgbẹ pupa”, rii boya AI le ṣe agbejade koodu ti o tan awọn idanwo rẹ jẹ. Jabọ rẹ ibẹrẹ ati ipari ikun iyipada (tabi mu/oṣuwọn iyipada lapapọ).
akojọ ayẹwo
- [] Mo ṣe iṣiro didara idanwo nipasẹ Dimegilio iyipada, kii ṣe agbegbe.
- [] Mo sare idanwo iyipada (boya nipasẹ ọpa tabi pẹlu ọwọ) fun koodu pataki.
- [] Mo ti kowe titun igbeyewo fun kọọkan iwalaaye iyipada.
- [] Mo ti lo AI bi awọn pupa egbe ati ki o wa fun loopholes ninu mi igbeyewo.
- [] Emi ko gba AI "awọn idanwo rẹ dara" iyin bi idaniloju.
- [] Mo ṣayẹwo pe idanwo kọọkan jẹri idaniloju gangan, iye ti a nireti ominira, ati ofin iṣowo.