Week 4 - noramehesz/gyak GitHub Wiki
UI Test
Előző hétről maradt feladatom volt UI teszt készítése, mivel ez nem a JUnit test része. Az első próbóbálkozásomhoz a választás a RCPTT-re esett, ami része az Eclipse Foundation-nak. Eclipse marketplace-ből egyszerűen letöltöttem. Innen kezdve viszont nem jutottam vele semmire, úgyhogy pár próbálkozás után feladtam és úgy döntöttem mást keresek helyette, amivel hátha többre fogok menni.
Ezután találtam meg a Jubula-t. Ez egy Functional Testing tool, lehetőséget nyújt automatikus GUI tesztek készítésére, nagyon kevés vagy semmi kód írásával. Ezt is hasonlóan az előzőhöz a MarketPlace-ből töltöttem le. A használata számomra elsőre nem volt túl egyértelmű, viszonylag hamar találtam viszont egy nagyon hasznos oldalt, ami egy kis példán szépen bemutatja a használatát: https://www.softwaretestinghelp.com/jubula-functional-testing-tool/#Recommended_Reading
Ennek értelmezése után láttam neki a saját tesztjeim elkészítésének.
A tesztek készítése viszonylag egyszerű, először TestCase-t hozunk létre , ehhez hozzáadjuk drag and drop-pal a szükséges test actionokat, majd ehhez a test case-hez készítünk egy TestSuite-t. Ha mindent jól beállítottuk csak futtatjuk a tesztet, ő automatikusan elvégzi az általunk megadott eseményeket, majd kapunk egy eredményt, ami azt mutatja meg, hogy siekeres volt a teszt vagy sem. Két teszt eredményéről csatolok képet az alábbiakban:
Ez két gomban a tesztelése, az alkalmazás egyik oldalára lépés , majd onnan vissza a menübe. A teszt sikeresen lefutott.
Itt a keybord inputot tesztelem, a program beírja azt az értéket amit én megadok neki, ennek sikerességét ellenőrzi(i guess)
Ez is tartalmaz parametrizálási lehetőéséget, ezt még én nem próbáltam ki.
Travis CI
Az e-mailben linkelt oldal alapján kezdtem neki, mely során az első lépés a regisztrálás volt az oldalra a github-os felhasználómmal, majd a témalaboros repo-m szinkronizáltam. Már az első git push előtt hozzááadtam a projektem gyökérkönyvtárához egy .travis.yml file-t melynek egyetlen egy sora volt, a 'language: java'.
Az első git push parancs után a failed lett az eredmény, 'Your build exited with 1' error-ral. A hiba az volt, hogy nem volt build.xml file-om. Ezt az eclipse felületén egy pár kattintással létre is hoztam. Egy git push után már minden sikeres volt.
Ezek után már csak annyit csináltam, hogy a .travi.yml file-om egy sorral mág kiegészítettem, azt olvastam, hogy ez még ajánlott:
language: java
script: ant build
Az ezek utáni buildek is mind sikeresek voltak.
Jenkins
A Jenkinst először is letöltöttem, regisztráltam. Ezután a Dockert töltöttem le és telepítettem, itt is szükség volt regisztrációra. A docker beállításához egy hello world-öt kellet megadni , ezután volt teljes mértékben használható.
Majd docker-ből terveztem futtatni a Jenkinst. Az alábbi parancsra mindig error-t kaptam:
docker run -d -p 8080:8080 jenkins/jenkins:lts
Az volt a probléma talán, ebben azért nem vagyok teljesen biztos, hogy a port, amit én használni akarok, foglalt. Ez lehet azért volt, mert mikor én telepítettem a jenkins-t, már a dockeres futtatás előtt futtattam, azzal a password-el, amit ő a saját mappájába írt, és talán az a verzó használta azt a portot, vagy más. Ha már , akkor sem tudtam sehogy szabaddá tenni, nem tudtam ugyanis mi használja, így én nem a 8080-as portot, hanem a 800-asat használtam, ezzel pedig semmi gond nem volt.
Ez után hoztam létre a Jenkinsen belül a projektem Freestyle Project-ként. Itt az első feladat docker log-jában megtalálható auth secret megadása.
Beállítottam a git-es repo-m a project url-em megadásával, verziókezelőnek is a git-et válaszottam. Az én projektem mivel Gradle-t használ a Jenkinsen belül a Global Tool Configuraton-ban a Gradle részél hozzáadtam egy gradle builder-t, ezek után a projektem beállításánál kiválasztottam a Invoke Gradle Script-t, majd ezen belül az előbb létrehozott builder-t adtam meg. Post Build Actionnál egyelőre még nm állítottam be semmit.
Ahhoz, hogy minden git push után automatizáltan induljon el a CI folyamat még pár teendő hátra volt. Először is egy Git Webhookot kellett beállítani. Először payload URL-ként a localhost-ot használtam, ami nem működött:
A megoldás az volt, hogy a router-emben be kellett állítani a port forwardingot, Jenkins-en belül a Build trigger-nél pedig a GitHub hook trigger for GITScm polling-t kellett kiválasztanom.
Az első három git push után rendre faild lett a build, ezek azért voltak, mert a gradle beállításai nem voltak tökéletesek. Ennek javítása után, már sikerrel futott a build: