Szoftvertesztelés tesztközelből
Egy nagyon jó összefoglaló a tesztelésről. Azoknak ajánlanám, akik most kezdik kialakítani a tervezett tesztelést a fejlesztési projektekben. Választ kapunk arra, hogy milyen részletekre kell figyelnünk a szoftvertesztelés tervezése és végrehajtása alatt.
A szoftverfejlesztési projektek egyik kulcskérdése a tesztelés, mégis, súlyához képest általában kevés figyelmet és erőforrást szentelnek neki. A következmények komolyak lehetnek. Nem feltétlenül kell nagy méretekben gondolkodni, kisebb projektek esetén is alapvető fontosságú eleme a fejlesztésnek a megfelelően megtervezett, megfelelő kontroll alatt tartott és persze megfelelő minőségben és alapossággal végzett tesztelés.
Sokszor még nem világos az érintetteknek, hogy pontosan mit is kell érteni tesztelés alatt. Sokan hiszik azt, hogy a tesztelés a fejlesztési folyamat végén sorra kerülő, átadás/átvételi ellenőrzés, ahol a funkciók működését vizsgálják és azt, hogy a végeredmény többé-kevésbé megfelel-e a megrendelő által elvártaknak.
Valójában a tesztelésre, illetve a különböző célú (kódelemző, teljesítmény, funkcionális, regressziós stb.) teszteljárásokra elejétől kezdve, a fejlesztés teljes folyamatában szükség van. Ezzel elkerülhető, hogy a projekt végén szembesüljünk olyan problémákkal, amelyek már nem, vagy csak nagyon nagy ráfordítással orvosolhatók.
Vegyük sorra azokat a szempontokat, amelyekre mindenképpen ügyelni kell, ha egy szoftverfejlesztési projektbe fogunk, és a tesztelést a helyén szeretnénk kezelni.
Szakember
A tesztelést tesztelésben jártas szakemberekre kell bízni. Egy komolyabb szoftver tesztelése rendkívül komplex feladat, a különböző fázisok különböző feladatai eltérő kompetenciákat követelnek meg, tehát nem elegendő, ha mondjuk kódtesztelő szakemberre bízzuk az egész folyamatot.
Menedzsment, dokumentáltság
Nagyon fontos, hogy legyen valaki, aki a tesztelési folyamatot, a szerteágazó feladatokat összefogja, menedzseli, és aki nagyobb léptékű rátekintéssel bír a projektre. Erre a pozícióra is teszteléshez értő szakember kell, pusztán projektmenedzsment tapasztalatoknál többre van szükség.
Megfelelő időt szükséges szánni a tesztelési terv elkészítésére, amely részletesen tartalmazza, hogy mely fázisban, mikor, melyik teszteljárást kell alkalmazni, milyen eszközökkel, milyen erőforrásokkal. A megfelelő tesztelési terv sok időt és energiát spórol meg a későbbiekben. Ugyanilyen fontos a teszteredmények jegyzőkönyvekkel történő dokumentálása és az eredmények visszavezetése a projektbe.
Átgondolt, kimerítő tesztelés
Általában elvárható lenne, hogy a projekt legelejétől folyamatosan fusson az elkészült kódok, részek tesztelése (ezt biztosítja például a KÜRT szoftverfejlesztés-minőségbiztosítási módszertana, amely a FrontEndArt valós statikus forráskód-elemzését is tartalmazza), de ez többnyire elmarad. Ennél is nagyobb hiba szokott lenni azonban, hogy egyáltalán nincs definiálva, a projekt mely pontján kell elkezdeni a tesztelést.
Legalább ilyen lényeges a tesztelés „mennyisége”. A tesztelési tervben előírtak szerint kell minden fázisban az adekvát teszt-metódust alkalmazni, és ezekkel minél átfogóbb, a készülő termék minél nagyobb keresztmetszetét górcső alá vevő vizsgálatot végezni.
Már egy nem túl komplex szoftver esetén is szinte végtelen számú tesztesetet, vagyis szcenáriót kellene megvizsgálni, ha le akarjuk fedni a szoftver teljes funkcionalitását, környezeti összefüggéseit. Mivel ez lehetetlen, különböző megoldások állnak rendelkezésre a feladatot könnyítendő. Ilyenek például az automatizált tesztelő eszközök, nagy létszámú tesztelői csapat alkalmazása, teszt-optimalizáló módszerek, de meg kell említeni, hogy sokat segítene az is, ha szakszerűen lennének meghatározva a feltétlenül tesztelendő tesztesetek.
Lényegesek a teljesítménytesztek, amelyeknél ügyelni kell arra, hogy a terheléses tesztet végző eszközöket hol helyezzük el az informatikai rendszerben. Például olyan szoftver esetén, amelyhez internetes hozzáféréssel csatlakozhatnak a felhasználók, nem lehet az internet és a fejlesztett rendszer közé pozicionálni a tesztet végző eszközöket, mert így a teszt hamis eredményt adhat.
A tesztek egy harmadik fontos csoportját alkotják a regressziós tesztek, amelyek azt vizsgálják, hogy egy újonnan kifejlesztett modul hogyan működik együtt a korábban fejlesztett modulokkal, illetve a meglévő rendszerekkel. Bonyolultsága és költségessége miatt ez a tesztfajta is gyakran mellőzve van. A költségek csökkentése érdekében itt is hatékony megoldás lehet a reprezentatív esetek, illetve lényeges szoftverelemek tesztelése.
Infrastruktúra (futtató környezet, tesztelő eszközök, tesztelési menedzsment eszközök stb.)
Szoftverek tesztelésénél ez mindig kardinális kérdés, éles rendszeren nem szabad tesztelni, a megfelelő infrastruktúra általában nem nagyon áll rendelkezésre, időszakosan van csak szükség rá, könnyen változtathatónak kéne lennie és drága.
Ezekre a problémákra megoldást jelenthet egy felhő alapú tesztkörnyezet bérbevétele, ami gyakorlatilag az összes kérdésre választ ad.
Ha nem lehetséges tesztelni
Vannak rendszerek, amelyeknél a folyamatos, gyors fejlesztések mellett nem megvalósítható a tesztelés. Az ilyen projekteknél együtt kell élni a várható hibákkal, az üzemeltetésnek kell felkészülnie a gyakoribb telefonhívásokra, szükség esetén mentésekből való visszaállításra, régebbi szoftververziók gyors visszaállítására. Az ilyen szoftverek esetén költségesebb lehet az üzemeltetés, mert olyan üzemeltetési folyamatokat kell kialakítani, működtetni és tesztelni, melyek az átlagosnál jobb incidenskezelést, mentést-visszatöltést, vagy akár katasztrófahelyzet-kezelést biztosítanak. Külső szakértő bevonása nélkül számos szervezet nem képes ilyen folyamatok megfelelő szintű kialakítására.
Szerző: Fabiányi Gábor
[simple-author-box]