Az agilis szoftvertesztelés alapjai
Az agilis szoftvertesztelés sokat használt kifejezés IT körökben. De vajon mit takar a fogalom? Ebben a cikkben megismerheted a legfontosabb tudnivalókat!
Bevezető
Agilis, agile, agilis módszertan: sokszor halljuk ezeket a kifejezéseket a mindennapokban. De mit jelentenek pontosan? Valójában nem egy módszertanról van szó, helyesebb lenne agilis módszertanokról beszélni. 2001. februárja óta, amikor 17 amerikai fejlesztő először megfogalmazta az Agile alapjait az agilis kiáltványban, az alapelvek figyelembevételével sok-sok módszertan fejlődött ki, és honosodott meg a gyakorlatban. Változatosságuk ellenére azonban mindegyik azonos célokat tűz ki maga elé: a lehető legmagasabb ügyfélélmény elérése, gyakori, vagy folyamatos közvetlen kommunikációval, minél hatékonyabb – lehetőleg rövid iterációkban – megvalósítva. Legyen tehát szó kanban, scrum, vagy egyéb megvalósulásáról, az agilis fejlesztés fő célja egy gyakran változtatható, piaci- és ügyféligényekre azonnal reagáló megoldás kialakítása. Ilyen módon a csapat mindig a legfontosabbnak számító feladatokkal foglalkozik.
Az agilis szoftvertesztelés fogalma és előnyei
Amikor szoftvertesztelésről beszélünk, sok esetben az a szituáció juthat eszünkbe, hogy a fejlesztési feladatok lezárultával, mintegy következő projekt feladatként kezdetét veszi az adott alkalmazás implementációjának következő, tesztelési fázisa. Ezt tapasztalhatjuk egy vízesés módszertan szerint haladó projekt esetében. Agilis környezetben azonban azt látjuk, hogy ez a megközelítés nem működőképes. Helyesebb tehát önmagában tesztelés helyett minőségbiztosításról beszélni, ami a szoftver fejlesztéssel egy időben kezdődik. Az agilis szoftvertesztelés ezáltal a fejlesztők és a tesztelők folyamatos együttműködésén alapulva képes rugalmas és hatékony környezetet biztosítani arra, hogy a hibákat minél hamarabb kiszűrjük. Időigényes dokumentációs feladatok helyett csak a lényeget rögzítve készüljünk fel a gyakori iterációk – és ezáltal változások – által támasztott kihívásokra.
Melyek az agilis szoftvertesztelés alapelvei?
Bár az agilis tesztelésnek köszönhetően rengeteget profitálhatunk annak bevezetésén, a megvalósítás sokszor nem könnyű, és számos nehézséggel találkozhatunk a gyakorlatban. Van azonban néhány alapelv, amelyek megértése gördülékenyebbé teszi az áttérést. A továbbiakban ezeket vesszük sorra. Fontos megjegyezni, hogy egy agilis szoftver fejlesztése során sok-sok módszertannal dolgozhatunk. A továbbiakban most a leggyakoribbat vesszük adottnak: a scrum alapján haladunk a tesztelés bemutatásakor.
A visszacsatolási idő lerövidítése
A vízesés módszertannal megvalósított projektben sokszor hónapok, vagy félévekben mérhető idő telik el a követelmények megfogalmazása, a fejlesztés valamint a tesztelés között. Nem is beszélve arról az időpontról, amikor a megrendelő először láthatja az igényére adott megoldást. Ezzel szemben az agilis tesztelés alkalmazása lehetővé teszi, hogy a visszajelzés már egy-két hetenként megtörténhessen. Ennek előnyei rögtön megmutatkoznak: minél hamarabb történik visszacsatolás, annál könnyebben tud a csapat alkalmazkodni az esetleges változásokhoz, annál hamarabb kiderül, ha nem a megfelelő irányban indultunk el.
A fejlesztés és a tesztelés szimultán történik
Mindannyian szembesülhettünk azzal a helyzettel, hogy a projekt egymást követő fázisainak esetleges időbeli csúszása mindig a projekt későbbi szakaszaiban bosszulja meg magát. Egy vártnál jobban elhúzódó fejlesztést követően a tesztelési szakaszban feltorlódnak a feladatok, ami sokszor a minőség rovására tud menni. Az egymásra épülő fázisokat eleve nehéz megvalósítani egy kéthetes iterációban, az agilis módszertan azonban más okokból is eltérő megközelítést alkalmaz. A tesztelő és a fejlesztő szorosan együttműködik már a fejlesztés kezdetétől fogva, az egységtesztektől egészen a felületi és üzleti tesztekig. Ennek köszönhetően a fejlesztési ciklus végére nem a tesztelés kezdetéig tudunk eljutni, hanem a minőségi szoftver közös leszállításáig.
A tesztelői és fejlesztői csapat szoros kollaborációja
Láthattuk az előző szakaszban, hogy a teljes csapat egyszerre dolgozik, egy cél, az értékteremtés érdekében. De hogyan tud ez megvalósulni a gyakorlatban? Fontos, hogy a tesztelők a fejlesztési ciklus legelső, tervezési feladataitól kezdve be legyenek vonva a közös munkába. Így már a tesztesetek megtervezése is közösen, a sprint célok figyelembevételével történhet. A csapatnak napi szinten, kölcsönösen tisztában kell lennie, ki mivel dolgozik, hogy az akadályozó tényezők elhárításában a legkompetensebb szereplő tudjon azonnali segítséget nyújtani.
Egyszerűsített dokumentáció
Gyakran találkozunk azzal a reflexszel, hogy egy vízesés projektben a tesztelési szakasz feladatait lehetőleg minél pontosabban megtervezve olyan módon dokumentáljuk, hogy abból akár utólag is reprodukálható legyen az adott fázis. Természetesen ennek is megvannak a maga előnyei, de az tagadhatatlan, hogy egy időigényes megközelítés. Innen nézve sokszor elhangozhat az a vád az agilis teszteléssel szemben, hogy elhagyja a dokumentációt. Erről azonban szó sincs. Arról van inkább szó – az agile egyik alapelve szerint – hogy az elvégzett munka fontosabb, mint a részletes dokumentáció. Dokumentáljuk azt, ami hasznos, ami célszerű, azt is lényegre törően. De ezt meg kell tennie mindenkinek, aki a teszteléssel összefüggő információval dolgozik: legyen az fejlesztő, vagy tesztelő.
Megrendelői visszajelzés a fejlesztési folyamat közben
Az agilis szoftvertesztelés egyik fő előnye ugyanaz, mint magának a módszertannak: a megrendelő a fejlesztési folyamat lehető legkorábbi pontján, vagy akár folyamatosan jelen van. Így már a tervezési feladatokhoz közeli időpontban láthatja az ügyféligény megvalósítását. Ezáltal azonnal visszacsatolást tud adni, mielőtt túl sok erőforrást fordítanánk egy esetleges rossz elképzelésbe.
Az agilis szoftvertesztelés folyamata
Az agilis szoftvertesztelés elvei és gyakorlata egyaránt eltér a hagyományos teszteléstől. Az elméleti oldalát megvizsgáltuk az előző fejezetben. Most lássuk mi mindent kell figyelembe venni a gyakorlatban, ha sikeresen szeretnénk bevezetni. Vannak olyan feladatok, amelyek nélkülözhetetlenek az eredményes teszteléshez, másrészt sokszor a munka során a tesztelő jut az adott információnak leginkább birtokába, így ő tudja az adott feladatot a leghatékonyabban ellátni.
- Hatáselemzés: a szoftverrel kapcsolatos üzleti gondolkodás kialakítása; a peremfeltételek, kockázatok beazonosítása; architekturális megfontolások.
- Teszttervezés: meg kell határozni, hogy milyen tesztelési szinteket alkalmazunk, és azokat hogyan valósítjuk meg. Az egység- és komponenstesztelés; a folyamati és prototípus tesztelés; az üzleti és használhatósági tesztek, valamint a nem-funkcionális követelmények ellenőrzése mind a kiadható szoftver elengedhetetlen minőségbiztosítási kritériumai. Ezekre mindenképpen tekintettel kell lennünk.
- Napi eligazítás: a tesztelő ugyanúgy része a csapatnak, mint bárki más, ezért a napi kommunikációban ő is részt vesz. Rövid, kötött idejű és tematikájú napindító eligazítással elejét vehetjük annak, hogy üresjáratok vagy blokkoló tényezők tartósan kialakuljanak.
- Visszacsatolás: triviális, de nem lehet eléggé hangsúlyozni – azért tesztelünk, hogy hibát találjunk. Legyen az egy nem megfelelő implementáció, vagy egy félreértett üzleti igény, minél hamarabb javítani kell, lehetőleg addig amíg a fejlesztői csapat még ugyanazzal a feladattal foglalkozik, mint a tesztelők.
- Ellenőrzés: Mielőtt a termék készen áll arra, hogy a felhasználók birtokba vegyék, minden elvégzendő feladatnak és dokumentációnak a végére kell érni. Sokszor a tesztelők azok, akik a leginkább tisztában vannak a szoftver működésével, ezért a kiadáshoz kapcsolódóan célszerű nekik kiképezni vagy oktatni azokat, akik a szoftvert támogatni, vagy használni fogják.
Gyakran ismételt kérdések
Mit jelent az agilis?
Egy szoftverfejlesztési módszertan, amely rövid iterációkban megvalósítva, folyamatos ügyfélbevonás mellett a legnagyobb érték leszállítását célozza.
Mi az az agilis szoftvertesztelés?
A hagyományos teszteléssel szemben az agilis szoftvertesztelés a fejlesztőkkel közös munkával, a lényegi dokumentációval, és a rugalmas munkaszervezéssel válik a módszertan részévé.
Mik az agilis szoftvertesztelés előnyei?
Bevezetésének és alkalmazásának legfőbb előnye, hogy a tesztelési csapat üresjáratait kiiktatva, a fejlesztő csapattal folyamatosan együttműködve biztosítja azt, hogy minél hamarabb adhassunk ki az ügyfél számára értékkel bíró szoftvert.
Milyen lépésekből áll?
Az agilis tesztelés lépései a hatáselemzés, a teszttervezés, a napi eligazítás, a visszacsatolás és az ellenőrzés.
Konklúzió
A fentiekben láthattuk tehát, hogy pontosan mi az agilis szoftverfejlesztési módszertan, ezen belül hol a tesztelés helye, valamint mik ez utóbbinak az alapelvei és főbb gyakorlati megfontolásai. Ha szeretnél támogatást kapni az egyik leghatékonyabb tesztelési módszertan bevezetéséhez vagy támogatásához, akkor írj nekünk az oldal alján található kapcsolatfelvételi formon keresztül.