TESTOVANIA
Tím WAWOTpočasprácena tímovom projekte vykonal nasledujúce testovania:
1. Odstránenie posielaniaspráva výpisovdo logu
Bolo implementovanévypnutie posielaniasprávdo testframeworku a vypnuté logovanie.
Testovaciescenáreboli spustené a overené. Oba testovacieprípadyboli na 100% úspešné.
Implementácia zmeny posielaniasprávbola otestovaná. Testy boli na 100% úspešné.
Triedask.fiit.jim.agent.models bola podľayourkitvýpočtovonáročnejšia. Úlohou bolo pozrieť sa na túto triedu a zrýchliťmetódy, ktorésa dajú. Počas implementácie sa zmenilo logovanie triedy, ktorésa vykonávalo, aj keď nebolo treba(bolo vypnuté).
Pomocouyourkitsme 10x odmeralihodnotydanejtriedy a tie porovnali.
Zlepšenieo (44,2%-29,5%) 14,7%.
Celkovosa zlepšila náročnosť triedy o 14,7%.
Cieľom úlohy bolo implementovať funkciu isT, ktorá zisťuje, či majú dve úsečky spoločný priesečník v tvare T. Na jej základe môže hráč lepšie určiť svoju polohu – podľarelatívnych súradníc, ktorédostane od servera vypočíta, či ide o tvar T.
Základné testovanie vypracovaných metód sa nachádza v triede LinePatternRecognitionTest. Pre účely testovania novej metódysú v teste vytvorené nové objekty čiar, ktorénetvoria T a také, ktorétvoria T. Správnosť výsledku metódyje potom skontrolovaná porovnaním s očakávanou hodnotou. Príklad volania:
assertEquals(0, isT(lines.get(6), lines.get(7)));
Pre potreby testovania bola pridaná funkcia na menenie endFlagu – setEndFlag1(Boolean bool) a setEndFlag2(Boolean bool).
Pomocouimplementovanej metódyisT()je možné zistiť, či dve úsečky majú priesečník v tvare T, ktorý je pre vyhodnotenie polohy hráča relevantný a teda je možné ju použiť na zlepšenie orientácie hráča na ihrisku. Unit testy sú úspešnéa môžeme považovať implementáciu funkcie za dokončenú.
Bolo implementovanévypnutie logovania ošetrením podmienkou if(Setting.getBoolean(„lowSkillsLogger“)).
5x meranie v yourkitpo zmeneimplementácie
Pôvodnú hodnotu 7% sa podarilo znížiť na 1,8%, čo je zlepšenie o 5,2%.
Implementácia logovania v LowSkills bola otestovaná. Zlepšila sa výpočtová náročnosť o 5,2%.
Po pridaní vlákien bolo potrebné správne synchronizovať komunikačné vlákno. Po pridaní vlákien bez synchronizácie robot viac padal a po niektorých pádoch sa nevedel postaviť, čo bolo spôsobené nesprávnou synchronizáciou komunikačného vlákna.
Robota sme pozorovali dlhšiu dobu, identifikovali sme menej pádov. Po každom páde sa postavil.
Aktuálne robot menej padá ako pred synchronizáciou komunikačného vlákna. Po každom páde sa postavil. V ďalších šprintoch sa trebaviac zamerať na testovanie a vychytanie chýb pri komunikácií. Preto sme pridali novú user story: Testovanie súčasného stavu.
Cieľom úlohy bolo implementovať funkciu isPlus, ktorá zisťuje, či majú dve úsečky spoločný priesečník v tvare +. Na jej základe môže hráč lepšie určiť svoju polohu – podľarelatívnych súradníc, ktorédostane od servera vypočíta, či ide o tvar +.
Základné testovanie vypracovaných metód sa nachádza v triede LinePatternRecognitionTest. Pre účely testovania novej metódysú v teste vytvorené nové objekty čiar, ktorénetvoria + a také, ktorétvoria +. Správnosť výsledku metódyje potom skontrolovaná porovnaním s očakávanou hodnotou. Príklad volania:
assertEquals(0, isPlus(lines.get(6), lines.get(7)));
Pomocouimplementovanej metódyisPlus()je možné zistiť, či dve úsečky majú priesečník v tvare +, ktorý je pre vyhodnotenie polohy hráča relevantný a teda je možné ju použiť na zlepšenie orientácie hráča na ihrisku. Unit testy sú úspešnéa môžeme považovať implementáciu funkcie za dokončenú.
Christopher implementoval vlákna do spracovania komunikácie, čo má zabezpečiť rýchlejšiu komunikáciu. Testovať takúto implementáciu sa dá iba meraním. Na meranie sa využil softvér Yourkit.
Zmenou implementácie sme zlepšili komunikáciu Jima v priemere o 9,7%. Obrazovky merania z Yourkitu boli nahrané na dokumentový server. Avšak chovanie sa Jima zhoršilo, ktoréspôsobujú pakety, ktorésa miešajú z dôvodu, že sú vo vláknach. Z tohto dôvodu je vytvorený nový task 9934 - Miešanie pakiet a celkové chovanie sa Jima po implementácií vlákien.
Doimplementovala sa funkcia justLinesSeen, ktorá sa volá, ak agent vidí iba čiary. Bolo trebana základe nich identifikovať priesečníky a pomocou funkcií určujúcich vzor čiar zistiť, o ktorý bod na ihrisku sa jedná a na základe toho mu priradiť kombináciu relatívnych a absolútnych súradníc
Boli pridané unit testy na overenie správnosti implementácie. Unit testy prebehli s 100% úspešnosťou.
Okrem unit testov bol agent bol viackrát pustený a otestovaný. Nezistilo sa, že by nová implementácia mala na jeho správanie negatívny vplyv.
V metóde updatePosition bola implementovaná podmienka. Po implementácií úlohy nasledovalo jeho testovanie.
Agent bol viackrát otestovaný. Po zavolaní danejmetódyagent pokračoval v hre a metóda už nehodila exception. Na správanie agenta implementácia metóda nemá výrazný vplyv.
Boli potrebné vykonať zmeny dátových štruktúr v triedach: JoiuntPlacement.java, Phase.java a SkillsFromXmlLoader.java.
Testovací scenár:
Agent bol viackrát pustený a otestovaný. Nezistilo sa, že by nová implementácia mala na jeho správanie vplyv.
Bolo potrebné zaviesť singleton, aby sa pracovalo s nanajvýš jednou inštanciou triedy. Zmeny boli vykonané v triedach: KickTestHighSkill, JimWindowController, Main, SkillsFromXmlLoader, TestFrameworkMain, LowSkillTest, SkillsFromXmlLoader.
Agent bol viackrát pustený a otestovaný. Nezistilo sa, že by nová implementácia mala na jeho správanie vplyv.
V projekte som našla 2 miesta, kde sa daná trieda vyskytuje. Jedno je miesto, kde sú zapísané všetky testy, ktorésa v projekte nachádzajú (2. obrázok v poradí). Druhé miesto, kde sa daný test vyskytuje je samotná implementácia triedy, ktorá je prázdna. Po analýzy dostupnej dokumentácie som nezistila, ako pôvodný tím myslel implementáciu tejto triedy.
Z dostupnej dokumentácie nie je jasné, ako tím pôvodne myslel implementáciu danejtriedy. Po dohode s vedúcim sme danú triedu zmazali.