Jak řešíte náhodné chyby v UI testech?

Jak řešíte náhodné chyby v UI testech?
« kdy: 23. 12. 2020, 10:45:54 »
Ahoj, mame UI testy (Sellenium) v poctu nizsi tisice. Jak roste produkt roste i pocet testu. Nemergujeme dokud vsechny testy nejsou na zmene zelene / je manualne overeno ze cerveny test je nahodna chyba.

Jsme aktualne v situaci, kdy na kazde zmene vzdy nekolik testu padne a je nutne manualni overeni, coz zacina byt dost otrava. Zkousime jit cestou "mas nahodnou chybu na zmene, musis test vylepsit" ale bohuzel toto reseni se zatim moc neosvedcilo - bere to mnoho casu ktereho je vzdy kriticky malo a casto je uprava pouze nahodna strelba, kdy test sice projde, ale na dalsi zmene je opet cerveny  ::)

Jak resite vy?
« Poslední změna: 23. 12. 2020, 20:15:31 od Petr Krčmář »


Re:Nahodne chyby v UI testech - jak resite?
« Odpověď #1 kdy: 23. 12. 2020, 11:40:22 »
Zjišťujeme, co je příčinou těch náhodných selhání testu. Obvykle je to v případě UI způsobené špatnou synchronizací – že se nezjišťuje skutečný stav objektu, ale spoléhá se na to, že se něco stihne. A ono se to občas nestihne. Řešením je pak test opravit – tj. nespoléhat na to, že se třeba data nahrají, než dojde k dalšímu kroku testu, ale počkat, než se opravdu nahrají.

Re:Nahodne chyby v UI testech - jak resite?
« Odpověď #2 kdy: 23. 12. 2020, 13:44:46 »
V podstatě pan Filip Jirsák odpověděl, ale kdybych to mněl napsat trochu více polopaticky, soustředil bych se hlavně na to zda v testech nemáte někde natvrdo delay/sleep a (nejen ) tam doplnil čekání až budou data a potřebné prvky UI načteny a zobrazeny.

Pár dalších tipů, i když pravděpodobně už je znáte :)

Osvědčilo se mi v některých případech přidat čekání na jquery atp (postup se dá vygooglit).

Správné čekání je třeba zajistit také pokud třeba část dat nejprve načtete jako html a pak parsujete zvlášť mimo selenuim(někdy se dělá kvůli rychlosti) - občas někdo zapomene.

Případně, pokud už to nejde jinak tak se někdy dá najít nějaký prvek který je zobrazen jako poslední až po načtení všech dat a nejprve na něj počkat. A až pak pokračovat, ale je to spíše workaround a ne vždy možný.

Dále někdy může být problém, pokud danou instanci prohlížeče používáte moc dlouho.
Pokud to není nutné z hlediska testu(např kontrolujete zda nedojde k problémům pokud padesátkrát přepnete v rámci aplikace na jinou stránku - fuj), tak může být lepší(i když někdy pomalejší) mít pro každý test(nebo alespoň sadu testů) samostatnou instanci.
Ze zkušenosti, občas nemá selenium/webdriver rád když se ta instance používá moc dlouho - jedna na všechny testy, ale může se lišit i dle prohlížeče a verze,... .

A obecně mít jednotlivé testy na sobě nezávislé - ostatně myslím že to je i v nějakých doporučeních co jsem viděl, určitě je dobré se  na ně podívat.

Také může být užitečné, pokud to neděláte,  uložit si screenshot, html, či nějaké další detaily při chybě. Aby se dalo snáze najít co se nestíhá.

Re:Nahodne chyby v UI testech - jak resite?
« Odpověď #3 kdy: 23. 12. 2020, 13:55:16 »
Ješte by stálo za to se zamyslet, zda místo toho že se nestíhá něco načíst při testech (ačkoliv je to asi nejpravděpodobnější varianta).
Tak zda náhodou není problém skutečně v aplikaci/ testované stránce (například něco přeteče, nebo se použije něco z chache která se nestihla vyčistit atp.).
Ale to je spíše pro případ že ta chyba je alespoň trochu konzistentní (myšleno dokud neuděláte změnu v testech tak se vyskytuje na přibližně tom samém místě), a také na tom jak je ta aplikace postavena(běží celá na serveru, nebo větší část v prohlížeči,...)

Re:Nahodne chyby v UI testech - jak resite?
« Odpověď #4 kdy: 23. 12. 2020, 14:18:47 »
Analyzujeme, proč ten test nemá deterministické chování. Údržba testů je vzdycky něco, co u managementu není moc populární, ale je prostě třeba aby si senioři prosadili čas na údržbu.
Dalším pravidlem je, že nehrneme testy na hromadu jen abych jich bylo co nejvíc - promýšlíme jestli je test potřeba a to právě u důvodu, že testy nestačí jen napsat ale i udržovat a spouštět.
Zpátky v otázce - test který není deterministický se samozřejmě přetestuje ručně, případně se provede analýza problému. Osobně budu mít test raději v kolonce manuální než formálně automatizovaný ale nespolehlivý.


Re:Jak řešíte náhodné chyby v UI testech?
« Odpověď #5 kdy: 24. 12. 2020, 10:31:06 »
Diky za nazory. Doplnujici otazka - pouzivate nekdo automatickey 're-run' spadnutych testu k odfiltrovani nahodnuch chyb?