Nereprodukovateľné chyby - nočná mora každého vývojára
V rámci vývoja aplikácií nastávajú rôzne situácie, kedy sa prejavujú chyby rôzneho charakteru. Niektoré z nich je veľmi náročné reprodukovať, najmä ak ide o chyby tretích strán. Jednu podobnú chybu som mal približne 3 mesiace s Internet Explorerom.Konkrétne išlo o ignorovanie spracovania poľa cez for in. Túto chybu som nahlásil aj Microsoftu, no vždy bola zamietnutá. Vôbec som nechápal prečo. Rozuzlenie prišlo až keď som začal písať článok na tému: Pozor na Internet Explorer a for in. V tomto prípade som ale namiesto výsledku function item() { [native code] } začal dostávať undefined. To som už ale vedel, kde je kameň úrazu a že za všetko môže for in.Príklad: Prechádzanie poľa v Internet Exploreri nefungovalo správne.
1
2
3
4
5
6
var Arr =["one", "two", "three", "four", "five"];
var index;
for(index in Arr){
console.log(Arr[index]);
}
Prekvapil ma ale iný výsledok operácie. Nakoniec sa všetko rozuzlilo veľmi náhodným a zaujímavým spôsobom. Keďže sa mi v rámci test casu nezobrazila aktuálne vykonaná zmena, išiel som sa pozrieť či mám v Internet Exploreri zakázané cacheovanie. Keďže IE nepoužívam na vývoj a nedávno som prešiel na Windows 8, browser mal samozrejme povolené cacheovanie. Po zakázaní cacheovania a vymazaní všetkých dát z cache, zrazu všetko fungovalo ako hodinky. Žiadne chyby, všetko správne výsledky. Skúšal som aj varianty s natívnym poľom či nie je rozdiel pri práci s literálom alebo s objektom.Ešte doplním, že keď som riešil uvedenú chybu s Microsoftom, v compatibility móde pre IE 7 a IE 8 bol výsledok operácie správny. Išlo o absolútne neočakávané správanie a výsledky, ktoré sa bežne nedajú nasimulovať pre testovanie.
Záver
Z minulosti ako aj z aktuálnej skúsenosti odporúčam mať spracovaný dokument so zoznamom povolených aplikácií a ich odporúčanými nastaveniami. Predíde sa tak hľadaniu chýb v prostredí, ktoré môže byť absolútne atypické a možno už nikdy ani nenastane. Pre takéto situácie nemá zmysel strácať čas a hľadať riešenia, ale stačí jednoducho držať sa pravidiel daného dokumentu čím sa predíde možným chybám v programe. Preto pri ťažko reprodukovateľných problémoch možno stačí iba zmeniť nastavenia povolených aplikácií na východiskové hodnoty. Ako príklad môžem spomenúť hry, s ktorými som mal problém pri prechode na Windows 8, kde tiež nastavením aplikácie na východiskové hodnoty sa odstránili všetky problémy. 18.5.2013, Matej LednárKategória: BlogBlog,bug reporting,programovanieŽiadna časť tohto článku nesmie byť reprodukovaná bez uvedenia autora a URL na túto stránku.Viac informácií nájdete v sekcii O projekte.