Table of Contents

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áre:

  1. Overiť, že logovanie sa neukladá, ak je vypnuté v agent_model.
  2. Overiť, že logovanie sa ukladá, ak je zapnuté v agent_model.

Testovaciescenáreboli spustené a overené. Oba testovacieprípadyboli na 100% úspešné.

Implementácia zmeny posielaniasprávbola otestovaná. Testy boli na 100% úspešné.


2. AgentModel

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é).

Testovaciescenáre:

Pomocouyourkitsme 10x odmeralihodnotydanejtriedy a tie porovnali.

Zlepšenieo (44,2%-29,5%) 14,7%.

Celkovosa zlepšila náročnosť triedy o 14,7%.


3. Funkcia isT

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.

Testovanie:

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ú.


4. LowSkills

Bolo implementovanévypnutie logovania ošetrením podmienkou if(Setting.getBoolean(„lowSkillsLogger“)).

Testovací scenár:

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%.


5. Synchronizácia komunikačného vlákna

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.

Testovaciescenáre:

  1. Pozorovanie správania sa robota.
  2. Vyvodenie záveru.

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.


6. Funkcia isPlus

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 +.

Testovanie:

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ú.


7. Pridanie viac vlákien do spracovania komunikácie

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.

Testovaciescenáre:

  1. Odmerať 10x rýchlosť komunikácie pred implementovaním zmien
  2. Odmerať 10x rýchlosť komunikácie po implementovaní zmien

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.


8. Funkcia justLinesSeen

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

Testovanie:

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.


9. size 0

V metóde updatePosition bola implementovaná podmienka. Po implementácií úlohy nasledovalo jeho testovanie.

Testovací scenár:

  1. Pustenie agenta, aby sa dostal do takého stavu, kde sa vyvolá metóda updatePosition
  2. Overenie funkčnosti agenta

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.


10. Effectors into HashMap

Boli potrebné vykonať zmeny dátových štruktúr v triedach: JoiuntPlacement.java, Phase.java a SkillsFromXmlLoader.java.

Testovací scenár:

  1. Pustenie agenta​​​​​​
  2. Overenie funkčnosti agenta

Agent bol viackrát pustený a otestovaný. Nezistilo sa, že by nová implementácia mala na jeho správanie vplyv.


11. Implementacia singleton vzoru v SkillsFromXmlLoader

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.

Testovací scenár:

  1. Pustenie agenta​​​​​​
  2. Overenie funkčnosti agenta

Agent bol viackrát pustený a otestovaný. Nezistilo sa, že by nová implementácia mala na jeho správanie vplyv.


12. sk.fiit.jim.agent.CommunicationTest.java.

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.