A napokban szembejött egy figyelemfelkeltő cikk(LINK), amit átolvasva gondolatébresztő állásfoglalásokkal találkoztam, de számos esetben nem tudtam azonosulni vele. A címben szereplő kérdésekben foglalt állást a szerző, vagyis összevetette a szoftvertesztelés és a minőségbiztosítás kifejezéseket.
Egyre gyakrabban hallhatjuk, hogy a minőségbiztosítás kifejezés alatt a szoftvertesztelést értik az IT világában, holott a kettő közötti különbség nem elhanyagolható. Annak érdekében, hogy mindenki számára világos legyen, tisztázzuk a tévhiteket arról, hogy mi a szoftvertesztelés, mi a minőségbiztosítás, és mi a különbség és az átfedés a kettő között.
Szoftvertesztelés
A cikk szerzője szerint a szoftvertesztelést leggyakrabban a következőképpen fogalmazzuk meg:
“A szoftvertesztelés egy olyan módszer, amellyel ellenőrizhető, hogy a tényleges szoftvertermék megfelel-e az elvárt követelményeknek, és amellyel biztosítható, hogy a szoftvertermék hibamentes legyen . Magában foglalja a szoftver/rendszerelemek tesztjeinek manuális vagy automatizált eszközökkel történő futtatását egy vagy több tulajdonság kiértékelése céljából. A szoftvertesztelés elsődleges célja a hibák, hiányosságok vagy hiányzó követelmények azonosítása a szoftver tényleges viselkedésének a meghatározott követelményekkel való összehasonlítása révén.” (LINK)
Több kifogásom is van a fenti meghatározással. Ami a leginkább zavar, hogy egy nem elvárható tulajdonságot határoz meg, miszerint a teszteléssel biztosítani lehet a szoftver hibamentességét. A tesztelők általában már az oktatásuk elején találkoznak azzal a gondolattal, hogy nincs hibamentes szoftver, vagyis a szoftvertesztelés a legjobb esetben is csak törekedhet a hibamentesség elérésére, de a módszer soha nem fogja azt biztosítani.
Másik, talán kisebb problémám, hogy a már meghatározott követelmények fényében a hiányzó követelmények azonosítását is a szoftvertesztelés nyakába varja. A tesztelőnek a korábban kialakított dokumentumok alapján kell dolgoznia, amiből a követelmények egyértelműen összeállíthatók. Természetesen a tesztelői gondolkozás segítségül hívható bármilyen igény, üzleti dokumentum megfogalmazásánál, de felelőssége ebben az esetben nem teljeskörű.
Ha már ennyire szétszedtem a fenti fogalommeghatározást, álljon itt egy elfogadhatóbb definíció: A szoftvertesztelés egy folyamat, amelynek során egy alkalmazást vagy rendszert értékelnek a minőségi elvárásoknak való megfelelés érdekében. Ennek célja a szoftverhibák, működési hibák, vagy hiányosságok minél korábbi azonosítása és javítása.
Hangsúlyos, hogy a szoftvert a kiadás előtt teszteljék, mivel a megfelelő módon és alaposan ellenőrzött szoftverek hozzájárulnak a jó működéshez, miközben minimalizálják a végfelhasználók termékkel kapcsolatos problémáit. A felhasználói frusztráció végső soron a számuk csökkenését eredményezi, ami rossz hírnevet, pénzügyi veszteséget és esetleges jogi problémákat okoz a vállalkozásoknak.
Kijelenthetjük, hogy a szoftvertesztelés csak a szoftverre összpontosít, és nem a körülötte zajló folyamatok egészére. Elsősorban a szoftver minőségére és az elvárt működésére koncentrál.
Minőségbiztosítás
A minőségbiztosítás(LINK), vagyis a QA (Quality Assurance) nem csak az informatikában található meg. A feldolgozóiparban született, majd számos más iparágban, például a vegyiparban, az élelmiszeriparban, az építőiparban is gyökeret vert, és idővel megjelent az informatikában. Eredetileg a minőségbiztosítási gyakorlat ISO szabványok szerint működik, amiből jól látszik, hogy a folyamatok meghatározása a legfontosabb eszköze. Vagyis a minőségbiztosításnak biztosítana kell a követelmények precíz meghatározását és hiánytalanságát.
Gyakori feladatok közé tartozik a csapaton belüli magas szintű kommunikáció biztosítása, a folyamat, a módszertan, a szabványok és a legjobb gyakorlatok betartásának garantálása, vagy egyszerűen csak az eszközökre adott javaslatok összegyűjtése, illetve az ügyféllel való kommunikáció és együttműködés, valamint a dokumentáció megírása, szerkesztése és karbantartása.
A minőségbiztosítás fő célja, hogy segítse a csapatot az ügyfelek igényeinek és elvárásainak megfelelő termékek és szolgáltatások létrehozásában, miközben kiterjed a teljesítménymérésre és az adatok elemzésére, hogy azonosítsa a tendenciákat, problémákat és javítandó területeket, valamint figyelemmel kíséri az érdekelt felek elégedettségét és visszajelzéseit.
Különbségek a szoftvertesztelés és a minőségbiztosítás között
A költség nem a legfontosabb különbség a kettő között, de a projekt kontextusától függően általában a minőségbiztosítás olcsóbb. Alapesetben a hibák megelőzése kevesebbe kerül, mint a felderítésük, dokumentálásuk és javításuk. Ettől függetlenül még a legjobb minőségbiztosítási gyakorlatok mellett is elengedhetetlen az alapos szoftvertesztelés. Ha egy vállalat kezdetben befektet a jó minőségbiztosítási gyakorlatokba, az hosszú távon jelentős megtakarításokat eredményezhet. Ez a megközelítés optimalizálja a folyamatokat, bevezet olyan intézkedéseket, amelyek megelőzik a problémák felmerülését, és növeli a hatékonyságot az egész projekt során.
A szoftvertesztelési folyamat viszont több költséggel jár az erőforrásokra, eszközökre, berendezésekre és egyebekre vonatkozó ráfordítások miatt. A kezdeti befektetés után a tesztelők készségeinek és tudásának fejlesztésére, a tesztelési környezetek karbantartására és a tesztelési eszközök frissítésére fordítandó költségeket kell fedezni.
Bár a minőségbiztosítók és a szoftvertesztelők egyaránt a minőségi termékek biztosítására összpontosítanak, a tevékenységi körük jelentősen eltérhet, ami befolyásolja a szükséges munkafolyamatokat. A minőségbiztosítók általában a teljes folyamatokra és az azokból kialakított rendszerekre koncentrálnak, hogy biztosítsák az előírt szabványok és gyakorlatok betartását. Ezzel szemben a szoftvertesztelők közvetlenül a szoftvertermék hibáinak felderítésére és javítására összpontosítanak.
Ha a napi szinten ismétlődő folyamatokat automatizálják, mint például a regressziós tesztelést vagy más, a szoftvertesztelés során alkalmazott gyakori feladatot, kezdetben jelentős erőfeszítéseket kell tenni az automatizálási keretrendszer kialakítására. Azonban a kezdeti beruházás után az automatizálás jelentős előnyöket hozhat, mivel a tesztek futtatása gyorsabbá és megbízhatóbbá válik, és sokkal kevesebb emberi beavatkozást igényel. A későbbi szakaszokban mindez minimális erőfeszítéssel jár, mivel a feladatok egyszerűen, egy gombnyomással elvégezhetők.
A regressziós tesztelés(LINK) során számos esetben a szoftvertesztelőknek csak a hibajelentéseket kell megírniuk egy nyomkövető eszközben. Ugyanakkor a szoftvertesztelés magában foglalja a teszttervek(LINK), tesztriportok(LINK) elkészítését, illetve egyéb dokumentumok, például a tesztstratégia(LINK) létrehozását is. A minőségbiztosítók munkája szintén magában foglalja a dokumentáció készítését, de ők inkább arra összpontosítanak, hogy biztosítsák az összes folyamat minőségi lefedettségét és megfelelő feljegyzését.
Az eredeti cikk gondolatmenetét követve ugyancsak egy ellentmondást véltem felfedezni a következő részben. A szerző szerint a szoftvertesztelés magasabb kockázatot jelent a problémák és hibák felderítése miatt, ami további erőfeszítéseket igényel. Ezzel szemben a minőségbiztosítási folyamatok célja a kockázatok előzetes kiküszöbölése, ezért ez valamivel kevésbé kockázatos, mint a szoftvertesztelés, mivel a jól beállított minőségbiztosítási folyamatok általában megelőző és proaktív, nem pedig reaktív jellegűek, lehetővé téve olyan hibák kijavítását, amelyek nem feltétlenül a legegyszerűbbek.
Ezt a gondolatot olvasva eszembe jut, hogy a szoftvertesztelés fontos részét képezi a statikus tesztelés is, amikor a fejlesztői dokumentumokat átolvasva már a szoftverfejlesztés megkezdése előtt a tesztelők felfedezhetnek olyan logikai ellentmondásokat, amik a későbbiek során hibákhoz vezethetnének. Ez azonban ellent mond a szerző sorainak, ugyanis a statikus tesztelésnek köszönhetően a szoftvertesztelés proaktívnak is nevezhető, ami a hasonlóságok közé emeli az említett különbséget.
A szoftvertesztelés általában több időt vesz igénybe, mint a bevált gyakorlatok folyamatainak kialakítása és követése. De természetesen a minőségbiztosítási folyamatok felállítása sem mindig a legegyszerűbb feladat, ezért azt mondhatjuk, hogy mindkettő elég időigényes lehet.
A szoftvertesztelés és a minőségbiztosítás átfedési területei
Mindkét megközelítés biztosítja a kiváló minőségű termékek létrehozását, és arra törekszik, hogy a hibák száma minimálisra csökkenjen. A felhasználói élmény javítása is jellemzi mindkét megközelítést azáltal, hogy a terméket a lehető legtöbb felhasználó számára igyekszik vonzóbbá tenni.
A tervezés és stratégiaalkotás terén ugyancsak átfedés van közöttük: mind a szoftvertesztelés, mind a minőségbiztosítás esetében elengedhetetlen a jól megtervezett folyamat és stratégia a termék gyenge pontjainak azonosításához és hibáinak kijavításához, ami növeli az érdekelt felek elégedettségét.
Összegzés
Minden projekt vagy termék egyedi megközelítést igényel, amelyet az elérhető erőforrások és pénzügyi keretek alapján választunk. Még a legjobban beállított minőségbiztosítási folyamatban is szükség van szoftvertesztelésre, hogy minden hibalehetőséget kizárhassunk. Ez a kombinált megközelítés – a szoftvertesztelés és minőségbiztosítás együttes alkalmazása – javítja a termék és a folyamatok általános minőségét . A megelőzés és alapos hibafelderítés együttesen csökkenti a későbbi hibákat és problémákat, így a termék karbantartása(LINK) egyszerűbb lesz, hiszen jobb kódminőséggel és stabilabb működéssel rendelkezik. Az erőforrások korai bevonása mindkét megközelítésben gyorsan feltárja a gyenge pontokat. Mivel a szoftvertesztelés és a minőségbiztosítás szorosan összekapcsolódnak, mindig együtt kell alkalmazni őket a minőségi termékek létrehozása érdekében.
Ennek során megtanultuk, hogyan különböztessük meg a kettőt.
Forrás: https://www.testdevlab.com/blog/software-testing-vs-quality-assurance