Oprava testovacej sady

Kto vlastní automatizované testy, keď ich nikto nespúšťa

Firma môže mať stovky automatizovaných testov a napriek tomu nemať reálnu regresnú kontrolu. Stačí, aby nikto nevedel, kedy sa majú spustiť, kto prečíta výsledok a kto rozhodne, čo urobiť s neúspešným testom. Sada potom existuje v repozitári, ale release neovplyvňuje.

Problém zvyčajne nie je v tom, že by tímu chýbal „majiteľ všetkého“. Automatizované testovanie má viac druhov vlastníctva: niekto vlastní význam scenárov, niekto prevádzku a niekto kód. Ak tieto zodpovednosti nie sú pomenované, každý prirodzene očakáva, že ich rieši ten druhý.

Test, ktorý sa nepoužíva, nie je bezpečnostná sieť

Hodnota testu vzniká až v rozhodovacom toku. Zmena spustí kontrolu, výsledok príde včas, človek mu rozumie a podľa neho zastaví release, opraví produkt alebo aktualizuje neplatný test. Ak niektorý krok chýba, test neposkytuje spätnú väzbu.

Typický úpadok vyzerá nenápadne. Sada je spočiatku spustená manuálne pred veľkým releasom. Jeden beh začne trvať dve hodiny, niektoré scenáre náhodne padajú a report je uložený na mieste, ktoré pozná iba autor. Tím test spustí neskôr, potom len časť a napokon vôbec. Keď sa k sade po pol roku vráti, nevie rozlíšiť chyby produktu od zastaraných lokátorov, dát a prostredia.

Počet súborov ani posledný zelený screenshot nehovorí, či sada chráni dnešný produkt. Dôležitejšie otázky sú: kedy naposledy bežala celá, koľko výsledkov niekto vyhodnotil a ktoré rozhodnutie ovplyvnila.

Jedno slovo „vlastník“ skrýva päť rolí

Malý tím môže všetky roly prideliť dvom ľuďom. Vo väčšej organizácii budú rozdelené. Podstatné je, aby pri každej role existovalo konkrétne meno alebo tím, nie všeobecné „QA“.

Oblasť vlastníctva Za čo zodpovedá Kto ju často preberá
Hodnota a pokrytie Ktoré riziká a používateľské cesty má sada chrániť Product owner, QA lead, doménový expert
Spúšťanie Kedy, kde a s akými dátami sa testy spustia Vlastník CI/CD, release tím, QA automation
Prvé vyhodnotenie Kto otvorí neúspešný výsledok a zatriedi ho Tím, ktorého zmena test spustila, alebo služba QA
Kód a framework Opravy testov, knižníc, závislostí a infraštruktúry Test automation engineer alebo vývojový tím
Rozhodnutie o release Aký výsledok blokuje nasadenie a kto môže udeliť výnimku Release owner, product owner, zodpovedný manažér

Autor testu nemusí byť jeho večný prevádzkovateľ. Dodávateľ môže sadu vytvoriť a udržiavať, no firma stále potrebuje človeka, ktorý rozumie významu výsledkov a vlastní release rozhodnutie. Rovnako ani DevOps tím automaticky nevlastní správnosť scenára len preto, že spravuje pipeline.

Začnite zmluvou o používaní sady

Zmluva nemusí byť právny dokument. Je to krátka dohoda, ktorá odpovedá na praktické otázky:

Takáto dohoda má byť blízko sady — napríklad v README a v definícii pipeline — a musí zodpovedať realite. Dokument, ktorý sľubuje denný beh, hoci prístupy fungujú iba z notebooku bývalého kolegu, problém nerieši.

Prispôsobte frekvenciu účelu testu

Nie všetky testy musia bežať pri každom commite. Častý omyl je pokus zapojiť celú pomalú sadu ako povinnú bránu. Pipeline sa predĺži, vývojári začnú behy obchádzať a vlastníctvo sa znovu rozplynie.

Praktickejšie je vytvoriť vrstvy:

  1. Rýchla kontrola zmeny trvá minúty a chráni najdôležitejšie funkcie. Beží pri pull requeste alebo pred zlúčením.
  2. Širšia regresia beží po nasadení do testovacieho prostredia, v noci alebo podľa release rytmu.
  3. Špecializované scenáre s externými integráciami, rozsiahlymi dátami alebo dlhým trvaním majú vlastný plán a vlastníka.
  4. Produkčné syntetické kontroly používajú bezpečné účty a operácie a patria do prevádzkového monitoringu, nie do bežnej testovacej sady bez dohľadu.

Každá vrstva potrebuje primeraný čas reakcie. Zlyhanie pull requestu má dostať spätnú väzbu ešte počas práce autora. Nočný beh potrebuje rannú triáž. Mesačný beh, ktorý nikto neotvorí, je iba plánovaná spotreba infraštruktúry.

Kto má reagovať na neúspešný test

Prvé vyhodnotenie nemusí robiť človek, ktorý test opraví. Jeho úlohou je rozlíšiť aspoň štyri možnosti: pravdepodobná chyba produktu, chyba alebo zastaranie testu, problém prostredia a nejasný výsledok vyžadujúci ďalšiu diagnostiku.

Pomáha, keď report obsahuje verziu aplikácie, názov scenára, zlyhaný krok, očakávaný a skutočný výsledok a primeraný dôkaz. Pri webovom teste to môže byť snímka, konzola a sieťová komunikácia; pri API odpoveď a korelačný identifikátor. Report však nesmie zverejniť heslá, tokeny ani osobné údaje.

Tím potrebuje jednoduché pravidlo eskalácie. Ak zlyhanie súvisí s práve menenou funkciou, prvý pohľad urobí autor zmeny alebo príslušný produktový tím. Ak ide o framework či spoločné testovacie dáta, prevezme ho technický vlastník sady. Nezaradené zlyhanie nemá zostať „červené“ celé týždne, pretože ďalšie výsledky v ňom zaniknú.

Dočasné vypnutie testu potrebuje dátum návratu

Quarantine môže byť rozumná. Nestabilný test nemá blokovať každý release, kým sa diagnostikuje. Riziko vzniká, keď sa vypnutie stane konečným stavom bez vlastníka.

Pri každom vypnutom teste zaznamenajte dôvod, súvisiacu úlohu, vlastníka a termín ďalšieho rozhodnutia. Potom existujú len tri udržateľné výsledky: test sa opraví a vráti, prepíše podľa nového správania alebo sa po dohode odstráni. Nekonečný zoznam preskočených scenárov vytvára falošný obraz pokrytia.

Pri čistení pomáha posúdiť ktoré automatizované testy zmazať. Zmazanie testu bez hodnoty je lepšie než jeho predstieraná existencia; odstránenie dôležitej kontroly bez náhrady je naopak produktové rozhodnutie o riziku.

Merajte používanie, nie len počet testov

Dashboard s číslom „850 testov“ neukazuje zdravie sady. Užitočnejšie prevádzkové ukazovatele sú:

Tieto čísla netreba používať na hodnotenie jednotlivcov. Slúžia na odhalenie procesu, ktorý nemá kapacitu, informácie alebo jasnú zodpovednosť.

Keď už sadu nikto nepoužíva

Prvým krokom nie je zapnúť všetkých 850 testov ako blokujúcu bránu. Najprv urobte inventúru: kedy test naposledy prešiel, aké riziko chráni, či scenár ešte existuje a čo potrebuje na spustenie. Potom vyberte malú skupinu najhodnotnejších testov a obnovte nad nimi celý tok od spustenia po reakciu.

Ak sada dlhodobo padá, pomôže postup pre zdedenú nestabilnú testovaciu sadu. Cieľom prvej etapy nie je zelená farba za každú cenu, ale dôveryhodný základ: opakovateľné prostredie, zrozumiteľný report, vlastník výsledku a známe pravidlá blokovania.

Po stabilizácii pridávajte ďalšie scenáre podľa rizika. Súčasne odstráňte alebo archivujte tie, ktorých význam už nikto nevie vysvetliť. História zostane v systéme správy verzií; pipeline nemusí niesť každý minulý nápad.

Čo jasné vlastníctvo prinesie

Tím dostane prakticky použiteľnú spätnú väzbu v čase, keď sa podľa nej ešte dá konať. Zlyhania nečakajú v schránke, výnimky majú meno a dátum a technický dlh sady je viditeľný. Vývojári nemusia hádať, či červený test ignorovať, a produktový vlastník vie, ktoré riziko sa pri výnimke prijíma.

Jasné roly tiež uľahčia odovzdanie medzi interným tímom a dodávateľom. Prevádzka nie je skrytá v osobných návykoch autora, ale v popísanom procese, prístupoch a merateľnej reakcii.

Ďalší krok

Vyberte jednu testovaciu vrstvu a ku každej z piatich oblastí — hodnota, spúšťanie, prvé vyhodnotenie, kód a release rozhodnutie — dopíšte konkrétne meno alebo tím. Potom spustite jeden beh a sledujte ho až po uzavretie všetkých zlyhaní. Miesto, kde sa tok zastaví bez jasnej ďalšej osoby, je prvý vlastnícky problém, ktorý treba opraviť.

Súvisiace témy

Mohlo by vás zaujímať

Spoľahlivé výsledky sú dôležitejšie než počet testov

Zmeriame nestabilitu, preveríme pravdepodobné príčiny náhodných zlyhaní a sadu stabilizujeme v dohodnutom rozsahu.