Njësia 9 / 11

Testimi i regresionit, mirëmbajtja e testit dhe luftimi i testeve të brishta

Fitimet:

  • Kuptoni qëllimin e testimit të regresionit dhe jeni në gjendje të zgjidhni teste dhe të prodhoni raste regresioni sipas ndryshimeve me inteligjencën artificiale
  • Aftësia për të diagnostikuar shkaqet kryesore të testeve të brishta (koha, varësia nga porosia, gjendja e përbashkët, varësia e jashtme) dhe aplikimi i zgjidhjeve të përhershme pa shtypur simptomat
  • Aftësia për të ruajtur disiplinën e ekzekutimit të lëshimit paraprak të paketës së plotë duke e mbajtur paketën e regresionit të shpejtë, të pavarur dhe të besueshëm duke eliminuar testimin e kopjuar

Softueri ndryshon vazhdimisht; Çdo veçori e re, çdo rregullim, mund të prishë diçka që funksiononte më parë. Ndërprerja e mëvonshme e një funksioni të mëparshëm të punës quhet regresion. Testimi i regresionit po riteston funksionalitetin ekzistues me çdo ndryshim për të kapur këto degradime. Me kalimin e kohës, këto komplete testesh rriten - mijëra teste - dhe lindin dy probleme të mëdha: paketa ngadalësohet dhe testet e pasigurta - teste jo të besueshme që ndonjëherë kalojnë dhe ndonjëherë dështojnë në të njëjtin kod - shkatërrojnë besimin e ekipit në rezultatet e testit. Inteligjenca artificiale (AI) është një ndihmë e fuqishme për të mbajtur paketën e regresionit të mirëmbajtur, të shpejtë dhe të besueshëm. Por paralajmërimi qendror mbetet: Ndërsa AI mund të ofrojë "të kalojë" një test të brishtë, shpesh mund të prodhojë një copëz që mbulon një gabim të vërtetë. Detyra juaj është të gjeni shkakun rrënjësor të paqëndrueshmërisë, jo të shtypni simptomat.

Shkaqet rrënjësore të testeve të brishta

Testimi i brishtë është problemi më tinëzar i testimit: ai nuk është i besueshëm nëse kalon apo dështon, duke e shtyrë ekipin në zakonin e "duhet të ketë ngecur përsëri, të ekzekutohet përsëri" - dhe ky zakon një ditë do të injorojë një defekt të vërtetë si "të krisur". Shkaqet kryesore rrënjësore:

  • Koha/gjendja e garës: Testi kontrollon rezultatin pa pritur që një operacion të përfundojë. Arsyeja më e zakonshme.
  • Varësia e rendit: Testet varen nga të dhënat e lëna nga njëri-tjetri; Pritet kur ndryshon rendi.
  • Rasti i përbashkët: Testet e shumta përdorin të njëjtat të dhëna/përdorues testimi, konfliktuale.
  • Varësia e jashtme: Rrjeti real, shërbimi i palëve të treta, koha e sistemit, vlera e rastësishme.
  • Dallimi mjedisor: Kalon në lokal, qëndron në CI (mjedis i integruar i vazhdueshëm).
Kujdes: Kalimi i një testi të brishtë duke "riprovuar disa herë" shpesh do të maskojë një gabim të vërtetë të konkurencës. Riprovimi është një mjet diagnostikues, jo një trajtim. Gjeni së pari shkakun kryesor; Përdorni vetëm riprovën si mjetin e fundit për paqëndrueshmëri të dokumentuar, vërtet të jashtme.

Mirëmbajtja e testit: mbajtja e paketimit të shëndetshme

Kompleti i regresionit është si një kopsht; Nëse nuk kujdeset, barërat e këqija do të marrin përsipër. AI ndihmon në tre detyra mirëmbajtjeje:

1. Pastrim i dyfishtë/provë i panevojshëm. Me kalimin e kohës një numër i madh rastesh grumbullohen duke testuar të njëjtën gjë. AI sugjeron grupimin dhe bashkimin e testeve të ngjashme.

2. Diagnoza e testit të brishtë. Ju i jepni AI kodin e testimit dhe modelin e paqëndrueshmërisë; sugjeron shkaqet e mundshme rrënjësore dhe zgjidhjen e përhershme.

3. Përzgjedhja/ prioritizimi i testit. Është e shtrenjtë të ekzekutosh të gjithë paketën me çdo ndryshim. Me analizën e ndikimit të testit (duke përzgjedhur vetëm testet përkatëse bazuar në kodin e ndryshuar), AI rekomandon se cilat teste duhet të ekzekutohen së pari. Sidoqoftë, paketa e plotë e para-lëshimit është një domosdoshmëri.

Karantina: menaxhimi i duhur i testimit të brishtë

Ju keni zbuluar se një test është i brishtë, por nuk keni kohë për të rregulluar menjëherë shkakun kryesor. Çfarë duhet bërë? Ka dy mënyra të gabuara: për të fshirë plotësisht testin (ajo sjellje nuk ruhet më fare) ose për ta heshtur me një riprovim (duke mbuluar defektin e vërtetë). Mënyra e duhur është karantina (ndarja e përkohshme e testit të brishtë nga paketa kryesore dhe gjurmimi i tij në një listë të veçantë). Testimi në karantinë nuk parandalon bashkimin e versioneve, por mbetet një borxh i dukshëm dhe adresohet rregullisht. Pika kritike është kjo: karantina është një dhomë pritjeje, jo një kosh plehrash. Nëse lista e karantinës po rritet, ky është një alarm se shëndeti i testit të ekipit po përkeqësohet. AI mund të rishikojë periodikisht listën tuaj të karantinës dhe ta grupojë atë sipas modeleve të shkakut rrënjësor; Ai mundëson zgjidhje kolektive duke zbuluar shkaqet e zakonshme, të tilla si "të 6 testet janë të lidhura me të njëjtin përdorues të përbashkët të testit".

Këshillë: Shtoni një "pronar" dhe një "datë të rishikimit të fundit" në çdo rekord karantine. Karantina e braktisur bëhet hale e përhershme; Testet e brishta jetojnë atje përgjithmonë, sepse askush nuk kujdeset.

Tabela e strategjisë së regresionit

Statusi

Strategjia

Roli i AI

korrigjim i vogël

Zona e prekur + testi i tymit

Zgjidhni testet përkatëse

veçori e re

Moduli i lidhur + integrimi

Propozoni një rast të ri regresioni

refaktor i madh

Paketa e plotë e regresionit

Analiza e boshllëkut të mbulimit

para publikimit

Paketa e plotë + eksplorim

Vlerësimi i prioritetit dhe kohëzgjatjes

Rregullim urgjent drejtpërdrejt

Rruga e fokusuar + kritike

Seti i provës minimale të sigurt

Prompt i dobët / Prompt i fortë

I dobët: "Ky test ndonjëherë dështon, rregullojeni."
I fortë: "Ky test dështon në 3 nga 10 ekzekutime, kodi i pandryshuar. Diagnostifikoni shkakun rrënjësor të paqëndrueshmërisë: mund të jetë koha/raca, varësia e rendit, gjendja e përbashkët, varësia e jashtme ose ndryshimi i mjedisit. Tregoni se cila rresht në test tregon çdo shkak të mundshëm. Sugjeroni zgjidhje të përhershme; MOS sugjeroni "zgjidhje të qartë të testimit, nëse mund të ndrydhni arsyetimin" si një zgjidhje e qartë për të shtypur navigimin. [kodi]. Gjurmët e gabimit: [log].

Prompt i fuqishëm; drejton diagnozën në shkakun rrënjësor dhe ndalon në mënyrë eksplicite shtypjen e simptomave.

Katër shabllone të kopjueshëm

1) Diagnoza e testit të brishtë:

Ky kod testimi ndonjëherë kalon dhe nganjëherë dështon pa ndryshuar. Rendisni kandidatët e shkakut rrënjësor (raca, varësia e rendit, gjendja e përbashkët, varësia e jashtme, ora/rastësia, ndryshimi i mjedisit) dhe tregoni linjën e provave në test për secilën. Sugjeroni zgjidhje të përhershme; shënoni zgjidhje shtypëse si p.sh. riprovoni si mjetin e fundit dhe me justifikim. Test: [kodi] / Modeli i paqëndrueshmërisë: [sa herë në sa ekzekutime]

2) Propozimi i një rasti regresioni:

Është bërë ndryshimi i mëposhtëm: [ndryshim/përmbledhje PR]. Rendisni sjelljet AKTUALE që ky ndryshim do të thyente dhe propozoni një rast testimi regresioni për secilën. Theksoni veçanërisht fushat e efekteve anësore dhe varësive të përbashkëta.

3) Pastrim i dyfishtë i testit:

Shikoni paketën e testimit më poshtë. Grupi i rasteve të dyfishta ose të mbivendosura që testojnë të njëjtën sjellje; Sugjeroni cilat duhet të mbaj dhe cilat duhet të kombinoj për secilin grup. Paralajmëroni nëse ekziston rreziku i humbjes së mbulimit. Testet: [lista/kodi]

4) Zgjedhja e efektit të testit:

Skedarët/funksionet e mëposhtme kanë ndryshuar: [lista]. Nga grupi ekzistues i testeve, zgjidhni dhe justifikoni testet që më duhet të ekzekutoj së pari (ato që janë të lidhura drejtpërdrejt/indirekt me kodin e ndryshuar). Shënim: më kujto se do të ekzekutoj ende paketën e plotë të para-publikimit.

tre mini kuti

Rasti 1 - Gabimi i vërtetë u mbulua nga Riprovimi. Një ekip shtoi 3 përsëritje në një test të rastësishëm të pagesës së mbetur; Testi ishte gjithmonë "kalues" tani. Aplikimi i "diagnostikimit të testit të brishtë" zbuloi se paqëndrueshmëria vinte nga një gjendje e vërtetë gare: me ngarkesë të lartë, konfirmimi i pagesës ndonjëherë përpunohej dyfish. Për muaj të tërë, Riprovimi mbuloi një defekt që mund të kishte rezultuar në humbje reale të parave drejtpërdrejt. Shkaku rrënjësor u rregullua, provoni përsëri hiqet.

Rasti 2 - Paketa u tkurr, shpejtësia u rrit. Një grup regresioni prej 1400 testesh zgjati 55 minuta. Me "pastrimin e testit të dyfishtë", 380 teste rezultuan të dyfishta ose të mbuluara; të bashkuara. Paketa u reduktua në 900 teste, koha u reduktua në 34 minuta, mbulimi nuk u zvogëlua në mënyrë të matshme. Reagimet më të shpejta inkurajuan ekipin të testonte më shpesh.

Rasti 3 - Varësia e rendit. Një test do të kalonte gjithmonë në nivel lokal, por do të dështonte rastësisht në CI. Diagnostifikimi i AI tregoi se testi varej nga përdoruesi i krijuar nga një test tjetër, në CI ai u prish sepse testet u zhvilluan në mënyrë paralele/të ndryshme. Çdo test është bërë për të vendosur të dhënat e veta; Pavendosmëria ka marrë fund.

Gabimet e zakonshme

  • Heshtja e provës së brishtë me riprovim. Përpjekja përsëri pa kërkuar shkakun kryesor; duke mbuluar gabimin e vërtetë.
  • Kultura e "ngulur përsëri". Injorimi në mënyrë rutinore i rezultateve të kuqe; Një ditë, duke anashkaluar gabimin e vërtetë.
  • Nuk e krasit fare paketën. Lejimi i testeve të dyfishta që të grumbullohen dhe ngadalësojnë paketën.
  • Varësia midis testeve. Testet bazohen në gjendjen/sekuencën e zakonshme; burim i pasigurisë.
  • Testimi i vetëm pjesës së ndryshuar dhe anashkalimi i paketës së plotë. Shkurtorja e para-lëshimit; Efektet anësore të fshehura shpëtojnë.
  • Duke u mbështetur në varësinë e jashtme. Testet e bazuara në rrjetin/orën/vlerën aktuale të rastësishme; natyrisht e paqëndrueshme.

Në përmbledhje

Testimi i regresionit kap ndryshime që prishin funksionet e mëparshme të punës; Por ndërsa paketat rriten, ngadalësia dhe testimi i brishtë gërryejnë besimin. Shkaqet kryesore të testimit të brishtë janë zakonisht koha, varësia nga porosia, gjendja e përbashkët dhe varësitë e jashtme. AI është një ndihmë e fuqishme në diagnostikimin, pastrimin dhe përzgjedhjen e testeve; Por shtypja e pavendosmërisë me riprovë mbulon gabimet e vërteta. Gjeni shkakun rrënjësor, bëni testet të pavarura dhe përcaktuese, krasitni rregullisht paketimin, ekzekutoni paketën e plotë përpara lëshimit.

Detyra e aplikimit

Zgjidhni një test nga projekti juaj që e dini se është i brishtë (ose duket i paqëndrueshëm). Ekstraktoni kandidatët për shkakun rrënjësor dhe verifikoni linjat e provave në test me shabllonin "diagnoza e testit të brishtë". Identifikoni shkakun rrënjësor dhe zbatoni një zgjidhje të përhershme pa riprovim. Pastaj zgjidhni 10 teste nga paketa juaj dhe gjeni ato që mund të kombinohen me "pastrimin e testit të kopjuar". Raportoni sa paqëndrueshmëri testimi keni zgjidhur nga shkaku kryesor dhe sa raste të panevojshme keni hequr nga grupi.

listë kontrolli

  • [ ] Unë kam diagnostikuar shkakun rrënjësor të testit të brishtë; Unë nuk e shtypa simptomën.
  • [ ] Unë e konsiderova Riprovimin si një mjet të fundit të justifikuar, jo një kurë.
  • [ ] I bëra testet të pavarura dhe deterministe (të izoluara nga varësitë e jashtme).
  • [ ] Kam krasitur testet e kopjuara/të panevojshme nga grupi i regresionit.
  • [ ] Zgjodha të testoja bazuar në ndryshimin, por ekzekutova para-publikimin e paketës së plotë.
  • [ ] E mora seriozisht çdo të kuqe, kundër kulturës “ngulur sërish, kalo”.