Kasu:
- Saab aru regressioonitestimise eesmärgist ning oskab valida teste ja toota regressioonijuhtumeid vastavalt tehisintellekti muutustele
- Võimalus diagnoosida nõrkade testide algpõhjuseid (ajastus, järjekorrasõltuvus, jagatud olek, väline sõltuvus) ja rakendada püsivaid lahendusi ilma sümptomit maha surumata
- Võimalus säilitada distsipliini kogu paketi eelväljalaskeelsel käitamisel, hoides regressioonikomplekti kiire, sõltumatu ja usaldusväärsena, välistades dubleeritud testimise
Tarkvara muutub pidevalt; Iga uus funktsioon, iga parandus võib rikkuda midagi, mis varem töötas. Varem töötanud funktsiooni hilisemat katkemist nimetatakse regressiooniks. Regressioonitestimine testib olemasolevaid funktsioone uuesti iga muudatusega, et tuvastada need halvenemised. Aja jooksul muutuvad need testikomplektid suuremaks – tuhandeid teste – ja ilmnevad kaks suurt probleemi: komplekt aeglustub ja ebausaldusväärsed testid, mis mõnikord läbivad ja mõnikord ebaõnnestuvad samas koodis, hävitavad meeskonna usalduse testitulemuste vastu. Tehisintellekt (AI) on võimas abivahend, et hoida regressioonikomplekti hästi hooldatud, kiire ja töökindlana. Kuid keskne hoiatus jääb alles: kuigi tehisintellekt võib pakkuda hapra testi läbimist, võib see sageli tekitada plaastri, mis varjab tõelise vea. Teie ülesanne on leida ebastabiilsuse algpõhjus, mitte sümptomeid maha suruda.
Habraste testide algpõhjused
Habras testimine on testimise kõige salakavalam probleem: see on ebausaldusväärne, kas see läbib või ebaõnnestub, mis sunnib meeskonnas harjumust "see peab uuesti takerduma, käivitage see uuesti" — ja see harjumus ignoreerib ühel päeval tõelist viga kui "helbemat". Peamised algpõhjused:
- Ajastus/võistluse seisukord: Test kontrollib tulemust, ootamata toimingu lõppu. Kõige tavalisem põhjus.
- Tellimuse sõltuvus: testid sõltuvad üksteise jäetud andmetest; See katkeb, kui järjekord muutub.
- Jagatud juhtum: mitu testi kasutavad samu testiandmeid/kasutaja, vastuolus.
- Väline sõltuvus: pärisvõrk, kolmanda osapoole teenus, süsteemiaeg, juhuslik väärtus.
- Keskkonna erinevus: lülitub kohalikule, jääb CI-sse (pideva integratsiooni keskkond).
Ettevaatust. Nõrga testi läbimine "mõned korrad uuesti proovides" varjab sageli tõelise samaaegsusvea. Korduskatse on diagnostikavahend, mitte ravi. Kõigepealt leidke algpõhjus; Kasutage uuesti proovimist ainult viimase abinõuna dokumenteeritud tõeliselt välise ebastabiilsuse korral.
Testhooldus: pakendi tervena hoidmine
Regressioonikomplekt on nagu aed; Kui selle eest ei hoolitseta, võtab umbrohi võimust. AI abistab kolmes hooldustoimingus:
1. Korduv/tarbetu testpuhastus. Aja jooksul koguneb sama asja testimiseks suur hulk juhtumeid. AI soovitab sarnaseid teste rühmitada ja liita.
2. Habras testi diagnoos. Annate AI-le testikoodi ja ebastabiilsuse mustri; pakub välja võimalikud algpõhjused ja püsiva lahenduse.
3. Testi valik/prioriseerimine. Kogu paketi käitamine iga muudatusega on kallis. Testi mõjuanalüüsiga (muutunud koodi põhjal ainult asjakohaste testide valimine) soovitab tehisintellekt, milliseid teste tuleks kõigepealt käivitada. Täielik väljalaskeeelne pakett on aga kohustuslik.
Karantiin: hapra testimise õige haldamine
Olete avastanud, et test on habras, kuid teil pole aega algpõhjust kohe kõrvaldada. Mida teha? On kaks valet viisi: test täielikult kustutada (seda käitumist enam üldse ei säilitata) või vaigistada see uuesti proovimisega (tõelise vea varjamine). Õige viis on panna karantiini (eraldades habras test ajutiselt põhipaketist ja jälgides seda eraldi loendis). Karantiinis testimine ei takista versioonide ühendamist, vaid jääb nähtavaks võlgu ja sellega tegeletakse regulaarselt. Kriitiline punkt on järgmine: karantiin on ooteruum, mitte prügikast. Kui karantiiniloend kasvab, on see häire, et meeskonna testide seisund halveneb. AI saab teie karantiiniloendi perioodiliselt üle vaadata ja rühmitada selle algpõhjuste mustrite järgi; See võimaldab kollektiivseid lahendusi, paljastades levinud põhjused, näiteks "kõik 6 testi on ühendatud sama jagatud testkasutajaga".
Näpunäide. Lisage igale karantiinikirjele "omanik" ja "viimati vaadatud kuupäev". Mahajäetud karantiinist saab alaline prügimägi; Haprad testid elavad seal igavesti, sest kedagi ei huvita.
Regressioonistrateegia tabel
Olek
strateegia
AI roll
väike parandus
Mõjutatud piirkond + suitsutest
Valige asjakohased testid
uus funktsioon
Seotud moodul + integratsioon
Paku välja uus regressioonijuhtum
suur refaktor
Täielik regressioonipakett
Katvuse lõhe analüüs
eelväljaanne
Täispakett + uurimine
Prioriteedi ja kestuse hindamine
Kiire reaalajas parandus
Fokuseeritud + kriitiline tee
Minimaalne ohutu testikomplekt
Nõrk viip / Tugev viip
Nõrk: "See test mõnikord ebaõnnestub, parandage see."
Tugev: "See test ebaõnnestub 3 korda kümnest, kood on muutmata. Diagnoosige ebastabiilsuse algpõhjus: võib olla ajastus/rass, järjekorrasõltuvus, jagatud olek, väline sõltuvus või keskkonna erinevus. Näidake, milline testirida osutab igale võimalikule põhjusele. Soovitage püsivat lahendust; ÄRGE soovitage sümptomeid summutavat lahendust, näiteks [testidatav" — kui kood on selgelt äratarvitatav. Vea jälg: [logi]."
Võimas viip; suunab diagnoosi algpõhjusele ja keelab selgesõnaliselt sümptomite mahasurumise.
Neli kopeeritavat malli
1) Habras testi diagnoos:
See testkood mõnikord läbib ja mõnikord ebaõnnestub muutmata. Loetlege algpõhjuse kandidaadid (rass, järjestussõltuvus, jagatud olek, väline sõltuvus, kell/juhuslik, keskkonna erinevus) ja näidake iga testis tõendite rida. Soovitage püsivat lahendust; märkige viimase võimalusena ja koos põhjendusega mahasuruv lahendus, näiteks uuesti proovimine. Test: [kood] / ebastabiilsuse muster: [mitu korda mitme jooksu jooksul]
2) Regressioonijuhtumi pakkumine:
Tehti järgmine muudatus: [muudatuse/PR kokkuvõte]. Loetlege PRAEGUSED käitumisviisid, mida see muudatus rikub, ja pakkuge iga jaoks välja regressioonitesti juhtum. Tooge eriti esile kõrvalmõjude ja jagatud sõltuvuste valdkonnad.
3) Duplikaattest puhastus:
Tutvuge allpool oleva testkomplektiga. Grupeeri dubleerivad või kattuvad juhtumid, mis testivad sama käitumist; Soovitage, millised peaksin iga rühma jaoks alles jätma ja millised kombineerima. Hoiatage, kui on oht kindlustuskaitsest ilma jääda. Testid: [loend/kood]
4) Testiefekti valik:
Järgmised failid/funktsioonid on muutunud: [loend]. Olemasolevast testkomplektist valige ja põhjendage testid, mida pean esmalt käivitama (need, mis on muudetud koodiga otseselt/kaudselt seotud). Märkus: tuletage mulle meelde, et kasutan endiselt täielikku väljalaskeeelset komplekti.
kolm minikarpi
Juhtum 1 – Retry varjatud viga. Üks meeskond lisas 3 korduskatset aeg-ajalt järelejäänud väljamaksete testile; Katse oli nüüd alati "läbiminev". "Habraste testdiagnostika" rakendamisel selgus, et ebastabiilsus tulenes reaalsest võistlusseisundist: suure koormuse korral töödeldi maksekinnitust mõnikord topelt. Retry varjas mitu kuud viga, mis oleks võinud reaalajas raha kaotada. Algpõhjus on parandatud, proovige uuesti eemaldada.
Juhtum 2 – pakk kahanes, kiirus suurenes. 1400 testist koosnev regressioonikomplekt võttis aega 55 minutit. "Duplikaattesti puhastamisega" osutus 380 testi duplikaadiks või kaetud; liidetud. Pakett vähenes 900 testini, aeg vähenes 34 minutini, katvus ei vähenenud mõõdetavalt. Kiirem tagasiside julgustas meeskonda sagedamini testima.
Juhtum 3 – Tellimuse sõltuvus. Test läbiks alati kohapeal, kuid ebaõnnestub juhuslikult CI-s. AI diagnostika näitas, et test sõltus teise testiga loodud kasutajast, CI-s läks katki, kuna testid jooksid paralleelselt/erinevas järjekorras. Iga test tehti oma andmete kindlaksmääramiseks; Otsustamatus on möödas.
Levinud vead
- Hapra testi vaigistamine uuesti proovimisega. Uuesti proovimine algpõhjust otsimata; tegeliku vea varjamine.
- "Jälle kinni jäänud" kultuur. punaste tulemuste rutiinne ignoreerimine; Ühel päeval, jättes tegeliku vea vahele.
- Pakki üldse ei pügata. Dubleeritud testide kuhjumine ja paketi aeglustamine.
- Sõltuvus testide vahel. Testid põhinevad ühisel tingimusel/järjekorral; ebakindluse allikas.
- Ainult muudetud osa testimine ja täispaketi vahelejätmine. Väljalaskeeelne otsetee; Varjatud kõrvalmõjud põgenevad.
- Välisele sõltuvusele tuginemine. Testid, mis põhinevad tegelikul võrgu/kella/juhuslikul väärtusel; loomulikult ebastabiilne.
Kokkuvõttes
Regressioonitestimine tabab muutused, mis rikuvad varem töötanud funktsioone; Kuid pakettide kasvades kahandavad aeglus ja rabe testimine usaldust. Hapra testimise algpõhjused on tavaliselt ajastus, tellimussõltuvus, jagatud olek ja välised sõltuvused. AI on võimas abivahend diagnoosimisel, puhastamisel ja testi valimisel; Kuid otsustamatuse mahasurumine uuesti proovimisega varjab tõelised vead. Leidke algpõhjus, muutke testid sõltumatuks ja deterministlikuks, kärpige paketti regulaarselt, käivitage kogu pakett enne vabastamist.
Rakenduse ülesanne
Valige oma projektist test, mis on habras (või tundub ebastabiilne). Tõmmake välja algpõhjuse kandidaadid ja kontrollige testis esinevaid tõendeid malliga "habras testidiagnoos". Tuvastage algpõhjus ja rakendage ilma uuesti proovimata püsiv lahendus. Seejärel valige oma paketist 10 testi ja leidke need, mida saab kombineerida duplikaattesti puhastamisega. Teatage, kui palju testi ebastabiilsusi nende algpõhjuse tõttu lahendasite ja kui palju tarbetuid juhtumeid komplektist eemaldasite.
kontrollnimekiri
- [ ] Olen diagnoosinud hapra testi algpõhjuse; Ma ei surunud sümptomit maha.
- [ ] Pidasin uuesti proovimist õigustatud viimaseks abinõuks, mitte raviks.
- [ ] Muutsin testid sõltumatuks ja deterministlikuks (välistest sõltuvustest eraldatuks).
- [ ] Kärpisin regressioonikomplektist dubleerivad/ebavajalikud testid.
- [ ] Valisin testimise muudatuse põhjal, kuid kasutasin kogu paketti eelväljaandes.
- [ ] Võtsin igat punast tõsiselt, "jälle kinni, passi" kultuuri vastu.