Nečekaný ad-hoc testcase

Silně zahloubán do programování. Když vtom najednou zazvonil telefon. Nečekaný testcase spatřil světlo světa.

Naštěstí nevolal žádný hlavolovec telefouňa ani jiný reklamní navolávač, tentokrát byl na opačném konci posel dobrých zpráv. Ale ve skutečnosti na tom zas tak nesejde, protože vedlejší efekt se dostavil tak jako tak: přetrhl mi nit. Jenom jsem neměl důvod se na něj zlobit.

Vylepšoval jsem patnáctku o tutoriál a zrovna jsem ladil volbu před prvním spuštěním hry:

Před první hrou

Telefonát skončil a já s myšlenkou "tak fajn, jdem testovat znovu" zmáčknul na telefonu tlačítko "zpět." A nestačil jsem se divit, jakou chybu v programu jsem odhalil!

V čem chyba spočívala? Když jsem vytvářel dialog coby obecnou komponentu (standardní dialog nabízený Androidem nešel nastylovat do barev hry), používal jsem ho v kontextech, kde se uživatel rozhodoval "ano" nebo "ne" s tím, že tlačítko "zpět" na telefonu znamenalo volbu "ne."

Což je de facto i případ prvního spuštění hry: "Chceš ukázat tutoriál? Ano nebo ne?" Očekávané chování programu: volba "ano" spustí tutoriál, volba "ne" spustí hru. Zcela logické, když uživatel stiskne tlačítko "Začít novou hru." Ale tady přichází kámen úrazu. Tlačítko "zpět" je také interpretováno jako "ne," tudíž v důsledku výše popsané implementace tlačítko "zpět" spustilo hru. Což je naopak zcela nelogické, neboť při stisknutí tlačítka "zpět" bych očekával návrat do hlavního menu hry.

Chybu jsem samozřejmě opravil. Dialog kromě stavů "ano" a "ne" rozlišuje ještě "zpět" coby třetí stav. No a pak už je na daném kontextu, zda bude na stavy "ne" a "zpět" reagovat stejně nebo jinak.

Vzpomínka na neočekávaný telefonát, který přinesl neočekávaný ad-hoc testcase, nasměroval mé myšlení směrem, který mne předtím nenapadl, a odhalil chybu v konceptu obecné komponenty - ta už zůstane.

Post scriptum pro případné samozvané generály po bitvě: když programujete a chcete, aby daná funkcionalita dobře zapadla do kontextu celého programu, musíte myslet na více věcí najednou. Pak se ale může stát, že něco opomenete. Od toho je však kolega tester, aby svým pohledem odlišným od vašeho podobná opomenutí odhalil. Děkuji tímto svému bývalému PM, který při vývoji kytek dokonale simuloval neukázněného uživatele.

Tagy: H15, Android, Programování, Ze života programátora

Tento web bude tebe a tvůj počítač krmit piškotkami, jelikož a protože je to slušný web a jako takový ví, že je potřeba návštěvu řádně pohostit, aby se u nás cítila dobře. Užíváním tohoto webu potvrzuješ, že netrpíš mentální anorexií, nedržíš žádnou obskurní dietu a že můžeš piškotki do sebe cpát kdykoli a v jakémkoli množství. Více informací...