Házi feladat

A kötelező házi feladat a tantárgy második, ellenőrzési technikákkal kapcsolatos részéhez kapcsolódik.

Áttekintés

A megismert technikák (pl. kódanalízis, tesztelés, folytonos integráció) gyakorlása egy valós projekten.

  • A házi feladat teljesítése szükséges feltétele az aláírásnak. A házi feladat megoldását azonban nem pontozzuk, csak elfogadva/nem elfogadva lesz az értékelés.
  • A házi feladatot 4 fős csapatokban kell majd megoldani.
    • Csapatokat a hallgatók alkotnak.
    • Nem szükséges, hogy az összes csapattag ugyanabban a gyakorlati kurzusban legyen.
    • Elvárás, hogy minden csapattag egyenlő módon vegyen részt a feladat megoldásában.
    • Alapesetben a teljes csapat ugyanazt az értékelést kapja a házi feladatra, kivéve, ha a csapat jelzi az oktatóknak, hogy valamelyik csapattag nem vett részt megfelelően a munkában

A feladat során egy GitHub-on elérhető nyílt forráskódú projekten kell előre megadott feladatokat elvégezni. A csapat a jelentkezés után kapni fog egy, a választott csapatnévnek megfelelő nevű tárhelyet a BME-MIT-IET GitHub szervezetben. A kiválasztott projekt master ágán lévő kód aktuális állapotát ide kell majd bemásolni, és ezen kell a feladatokat később megoldani. A csapat admin jogot fog kapni a tárhelyen, de tilos átnevezni a tárhelyet vagy megváltoztatni a tárhely hozzáférési jogait. [Megjegyzés: A gyakorlatban inkább egy fork lenne a javasolt megoldás ilyenkor, de azért nem fork-ot készítünk a kiválasztott projektről, hogy független legyen a két tárhely, és pl. a csapat pull requestjei ne az eredeti projektnél kössenek ki véletlenül.]

Lehetséges projektek

  • Vagy a hírben megadott listáról lehet választani.
  • Vagy lehet saját ötletet is hozni (pl. saját hobbi-projekt, érdekes nyílt forrású projekt). A feltétel annyi, hogy publikus GitHub projektként elérhető legyen. Ebben az esetben előtte Micskei Zoltánnal emailben egyeztessék.

Elvégzendő feladatok

Első lépésként a csapat ismerkedjen meg az alkalmazással:

  • Nézze meg a dokumentációt, tanulmányozza a projekt felépítését, próbálja ki, hajtson végre egyszerűbb kézi teszteket (UI felülettel rendelkező alkalmazás esetén) vagy írjon egy-két egyszerűbb példakódot (könyvtárként felhasználható projekt esetén).
  • A tárhely wikijének kezdőoldalára egy-két bekezdésben foglalja össze a csapat a saját szavaival, hogy mi a projekt célja, és nagyobb projekt esetén válasszon ki a funkcióknak egy részhalmazát, amivel később dolgozni fog majd.

A további feladatok két nagy csoportra bonthatók. Az egyes feladatok mellett megadtunk eszközöket, amik segíthetnek, de természetesen lehet bármi más, kapcsolódó eszközt használni.

CI és statikus ellenőrzés

  • Build keretrendszer beüzemelése, ha még nincs (Maven, Gradle...)
  • CI beüzemelése, ha még nincs (Travis, AppVeyor...)
  • Statikus analízis eszköz futtatása és jelzett hibák átnézése (SonarQube, FindBugs, VS Code Analyzer, Codacy, Coverity Scan...). Mivel az eszközök rengeteg hibát és figyelmeztetést találhatnak, ezért elég azok egy részét megvizsgálni és ha a csapat egyetért vele, akkor javítani. Törekedjetek arra, hogy különböző típusú, és lehetőleg nem triviális hibajelzéseket vizsgáljatok meg.
  • Manuális kód átvizsgálás elvégzése az alkalmazás egy részére (GitHub, Gerrit...)
  • Deployment segítése (Docker, Vagrant...)

Tesztelés

  • Egységtesztek készítése/kiegészítése (xUnit...)
  • Tesztek kódlefedettségének mérése és ez alapján tesztkészlet bővítése (JaCoCo, OpenCover, Coveralls, Codecov.io...)
  • UI tesztek készítése (Selenium, Sikuli, Appium...)
  • Integrációs/rendszertesztek készítése (Wiremock, Pact...)
  • BDD tesztek készítése (Cucumber, Specflow...)
  • Manuális tesztek megtervezése, végrehajtása és dokumentálása

Mindkét csoportból legalább 2-2 feladat elvégzése kötelező. A csapat eldöntheti, hogy melyik feladatokat akarja elvégezni (a projekt adottságait és az egyéni érdeklődéseket figyelembe véve). Javasolt, hogy egy-egy feladaton többen is dolgozzanak. A feladat elvégzése után kötelező, hogy legalább egy másik, a feladaton nem dolgozó csapattag ellenőrizze a munkát (review).

FONTOS A házi feladatra csapattagonként kb. 15 órát kell fordítani. Ezt az időt a csapat jól ossza be, és koncentráljatok azokra a feladatokra, amik az adott projekt szempontjából a hasznosak, és amivel a legtöbbet tudtok meg az adott szoftver minőségéről vagy nagy eséllyel tudntok javítani rajta.

Feladatok dokumementálása

  • Minden egyes kiválasztott feladathoz egy-egy issue-t kell felvenni, amiben nyomon lehet majd követni a feladat megoldásának alakulását. Az issue-ban egyeztessék a csapattagok, hogy ki mit csinál majd, és legyenek belinkelve a kapcsolódó főbb commit-ok vagy pull request-ek, és látszódjon, hogy ki ellenőrizte a végén az adott feladatot.
  • Az elvégzett munka rövid dokumentációját a saját GitHub tárhely wiki oldalára kell írni. Minden egyes kiválasztott feladatról legyen egy-egy külön wiki lap: egy-két bekezdés az elvégzett munkáról, képernyőkép (ha releváns), eredmények és tanulságok összefoglalása.

Értékelés

  • A házi feladatot a félév végén be kell majd mutatni. (Ennek pontos beosztását majd a 13. héten intézzük.)
  • Az értékelés nem mennyiségi, hanem minőségi alapon történik. Nem az a lényeg, hogy 15 vagy 20 teszt készült el, hanem, hogy mit tanult a feladatból a csapat, és sikerült-e a kiválasztott projekt minőségén javítani valamit. Hasonlóan figyeljetek arra, hogy hiába készít a csapat 20 egységtesztet, ha azok mind az egyszerű getter és setter metódusok működését ellenőrzik, akkor túl sok hasznuk nincs.
  • Törekedjen mindenki arra, hogy jó minőségű munkát végezzen (szép kód, értelmes commit üzenetek, rendezett repository, áttekinthető wiki oldal, követhető issue-k...). Tehát nem csak az elkészült kód, hanem minden egyéb termék része az értékelésnek.

Határidők

  • 2018. április 9. csapatok jelentkezése a hírben megadott űrlapon
  • 2018. május 6. CI és statikus ellenőrzés feladatok elvégzése és dokumentálása
  • 2018. május 20.  tesztelés feladatok elvégzése és dokumentálása

Kérdések

  • Technikai jellegű kérdéseket a Q2A oldalon lehet feltenni (így más is tud segíteni, és a válaszokat más is csapatok is láthatják).
  • Egyéb kérdésekkel Micskei Zoltánt keressék emailben vagy az előadásokon és gyakorlatokon.

Bemutatás

A munkát a félév végén a csapatnak be kell mutatni (az erre való jelentkezést majd egy hírben publikáljuk):

  • Ismertetni kell az elvégzett munkát, az egyes csapattagok hozzájárulását, az elért eredményeket, a kiválasztott projekt értékelését (mit tudtunk meg a végrehajtott ellenőrzési feladatok során a projekt állapotáról és minőségéről) és az elvégzett munka értékelését (mi sikerült, mit tanultak belőle, mi hiányzik még, mivel érdemes később bővíteni...).
  • A bemutatóra nem szükséges fóliasorozatot készíteni, egy saját laptopot érdemes hozni bekonfigurált környezettel, ahol az egyes részfeladatok élőben bemutathatók (tehát a tesztek lefuttathatók, statikus ellenőrző eszköz eredményei megnézhetők...).
  • A bemutató jellegében olyasmi, mintha a csapat a főnökének vagy megrendelőjének mutatná be a munkáját, tehát készüljetek fel rá adatokkal, összesítésekkel és érvekkel, hogy kellő információt tudjatok adni kérdések esetén, és meg tudjátok győzni az elvégzett munka minőségéről.
  • Alapesetben elvárt, hogy az összes csapattag megjelenjen. Ha bemutatási alkalom valakinek órarendi elfoglaltsággal ütközik, akkor neki nem kötelező megjelenni, de ezt is figyelembe véve a csapatnak olyan időpontot kell választani, amin legalább 2 csapattag részt vesz.
  • Egy-egy csapatra kb. 20 perc fog jutni.
  • A bemutatásra hozni kell egy kinyomtatott és minden csapattag által aláírt legfeljebb 2 oldalas dokumentumot, ami a végleges, részletes munkamegosztást tartalmazza (melyik csapattag pontosan milyen részfeladatokat végzett el, kb. mennyi időben). Figyelem, ennek konzisztensnek kell lennie a csapat GitHub tárhelyén lévő commit történettel! A dokumentum ezen kívül tartalmazza a tárgy nevét, a csapat nevét és a csapattagok nevét, NEPTUN-kódját és GitHub azonosítóját. Használható ez a sablon.

 

© 2010-2018 BME MIT | Hibajelentés | Használati útmutató