10 tipp egy komoly adatbázisteszthez

Rengeteg (de nem mindegyik) alkalmazás használ adatbázist. Az adatbázis használatának fő célja hogy hosszútávon tárolja az adatokat rendezett és hozzáférhető módon. Sok embernek csak halvány sejtése van az adatbázisok teszteléséről. Ha tanulni szeretnél erről egy-két dolgot, akkor olvass tovább …

Először is, meg kell értenünk, mit is jelent az adatbázis tesztelése. Mint azt valószínűleg tudod, az adatbázisnak 2 fő része van – az adatszerkezet (séma), ami tárolja az adatokat és maga az adat. Nézzük ezeket egyesével.

Az adatokat táblákban tárolja az adatbázis, azonban nem csak a táblák lehetnek objektumok az adatbázisban. Más objektumok is lehetnek, mint például a nézet, tárolt eljárások és függvények. Ezek segítenek a felhasználóknak, hogy a megfelelő formában hozzáférjenek az adatbázisban tárolt adataikhoz. Az adatbázis tesztelés a következőkre keresi a választ:

Kérdések az adatbázis szerkezetével kapcsolatban:

  • Az adatok logikusan, jól vannak elrendezve?
  • Az adatbázis jól működik?
  • Az adatbázis objektumok, mint a nézetek, triggerek, tárolt eljárások jól működnek?
  • Az adatbázis csak helyes adatokat enged tárolni?
  • Az adatok védettek az illetéktelen behatolások ellen?

Kérdések az adatokkal kapcsolatban:

  • Minden adat teljes, megfelelő?
  • Minden adat tényszerűen korrekt, egyezik a beviteli forrással pl.: a felhasználói interfészen bevitt adatokkal?
  • Vannak szükségtelen adatok?
 A kérdéseink mellett, fontos megismernünk az 5 leggyakoribb kihívást, amivel találkozhatunk az adatbázis tesztelése alatt:
 

Széleskörű tesztelés

Fontos, hogy kijelöljük a tesztelendő elemeket az adatbázisban, különben nem látnánk tisztán ,hogy mit kell tesztelnünk és mit nem. Ráadásul kifutnánk az időből is, mielőtt az adatbázis teszt a végére érne.

Ha megvan a tesztelendő elemek listája, akkor fel kell mérnünk, meddig tart megtervezni és végrehajtani a tesztet, természetesen minden egyes tesztelendő elemre lebontva. A tervtől és az adatok nagyságától függően némelyik teszt sokáig eltarthat. A terveknél vegyük figyelembe, hogy mennyi idő áll rendelkezésünkre. Ha nincs elegendő idő akkor csak a legfontosabbakat hajtsuk végre, vagy szűkítsük a tesztelendő elemek listáját, esetleg a teszt hatókörét.

Helytelen / csökkentett adatbázis tesztelése

Előfordulhat, hogy a fejlesztői adatbázist kapjuk meg a teszteléshez. Ez sokszor túl kevés adatot tartalmaz (csak annyit, amennyi a futtatáshoz kell, és néhány példát, ami bemutatja a felhasználói interfészt). A fejlesztői adatbázis vagy a csak részeredményeket tartalmazó adatbázis tesztelése nem elégséges, nem fog megfelelő végeredményt adni számunkra. A végső adatbázis tesztelése is szükséges.

Változások az adatbázis szerkezetében vagy az adatokban

Ez egy különlegesen nehéz feladat. Lehet, hogy miután megterveztük a tesztet (vagy már le is futtattuk), az adatbázis szerkezetét megváltoztatják. Ez azt jelenti, hogy tudatában kell lennünk, mit változtattak a tesztelendő adatbázisban. Miután a szerkezet megváltozott, ki kell elemezni a változtatások hatását, és módosítani kell a teszt érintett részeit.

Ha a teszt adatbázisunkat más felhasználók is használják, akkor a teszteredményekben nem bízhatunk. Ezért bizonyosodjunk meg, hogy az adatbázist csak a mi tesztelésünk használja.

Problémát okozhat, ha egyszerre több tesztet futtatunk. Törekedjünk arra, hogy egy időben csak egy tesztet futtassunk. A teljesítmény teszteknél mindenképpen így járjunk el. Nem várhatjuk el, hogy helyes végeredményt kapjunk, ha az adatbázison egyszerre több tesztet is futtatunk, miközben mérjük annak teljesítményét.

Zavaros tesztelés

Egyes adatbázisok tesztelése bonyolult lehet. Nem szabad a teszteket részlegesen lefuttatni, vagy szükségtelenül megismételni. Készítsünk egy tesztelési tervet és haladjunk aszerint, miközben feljegyezzük az eredményeket.

Hiányos ismeretek

A szükséges ismeretek hiánya nagyon lelassíthatja a tesztelést. Ha hatékonyan akarjuk az adatbázistesztet végrehajtani, akkor fontos, hogy jól ismerjük az SQL-parancsokat és az adatbáziskezelő alkalmazásokat.

Nézzük, hogyan láthatunk neki az adatbázistesztelésnek. Mindig tartsuk szem előtt a tesztelés célját, amikor megtervezzük azt. Használjuk az alábbi 10 tippet:

  • Soroljuk fel, mit várunk az adatbázistól. Gyűjtsünk össze minden forrást, főleg a technikai elvárásokat. Lehet, hogy némelyik követelmény nagyon összetett, ilyenkor ezeket bontsuk kisebb, tesztelhető darabokra.

  • Készítsünk teszt szcenáriót (forgatókönyvet) mindegyik követelményhez.
  • Hogy ellenőrizni tudjuk a logikus felépítést, fontos, hogy minden elem (entitás), rendszer konfiguráció benne legyen az adatbázisunkban. Egy elem több táblában is előfordulhat.

  • Az adatbázis teljesítményének ellenőrzéséhez koncentráljunk az átbocsátóképességre és a válaszidőre. Például, ha egy adatbázisnak 1000 rekordot kell teljesíteni egy perc alatt, akkor tervezzünk egy ilyen lekérdezést, és nyomtassuk vagy tároljuk a kapott időt. Ha az adatbázisnak 5 másodperc alatt kell végrehajtania egy műveletet, akkor egy olyan lekérdezést készítsünk ami minta adatokkal többször végrehajtja a feladatot és mindegyik időt eltárolja.

  • Ha az adatbázis objektumokat akarjuk tesztelni (pl.: tárolt eljárások), akkor úgy tekintsünk ezekre, mint egyszerű programokra, melyek csak bizonyos inputokat fogadnak el és egy előre meghatározott folyamat szerint ad valamilyen végeredményt. Olyan tesztadatokat kell terveznünk, melyek minél változatosabb módon teszik próbára a tárolt eljárásokat.

  • Ha az adatbázis szabályait (constraints) akarjuk tesztelni, akkor próbáljunk meg érvénytelen adatokat bevinni. Például nem létező vásárlóval akarunk rendelni, vagy a vásárló irányítószámát helytelenül adjuk meg.

  • Amennyiben az adatbázis biztonságát teszteljük, akkor készítsünk olyan teszteseteket, amelyek megpróbálnak valamilyen magasabb jogosultságú hozzáférést szimulálni. Például belép, mint korlátozott jogú felhasználó, és próbál megnézni/módosítani/törölni fontos adatokat, melyhez nincs jogosultsága. Nagyon fontos, hogy a futtatás előtt mindig készítsünk biztonsági másolatot, mert előfordulhat, hogy használhatatlanná tesszük az adatbázisunkat. Ellenőrizzük le azt is, hogy a bizalmas adatok pl.: hitelkártyaszámok, jelszavak titkosítva, vagy maszkolva vannak.

  • Ha az adatbázis integritását teszteljük, akkor érvényes adatokat illesszünk be, vagy frissítsünk (pl.: vevő adatai), majd ellenőrizzük le, hogy az adatokat a megfelelő táblá(k)ba és a jó oszlopba tárolta-e el. Minden egyes adattal végre kell hajtani ezt a feladatot. Egy tesztadatot csak egyszer vigyünk be és törekedjünk arra, hogy más adatban ne történjen változás.

  • Mivel a teszt tervezése SQL-lekérdezéseket igényel, próbáljunk meg egyszerű parancsokat írni, hogy elkerüljük a hibákat. Érdemes valakit megkérni, hogy nézze át az elkészített parancsokat. Dinamikusan is tesztelhetjük a lekérdezéseinket. Egyik módja, hogy úgy módosítjuk a lekérdezést, hogy csak mutassa, de ne hajtsa végre a műveletet (pl.: beillesztés, törlés). Egy másik módja, hogy a lekérdezést többször futtatjuk és összehasonlítjuk az eredményeket.

  • Ha nagy számú tesztet kell lefuttatnunk, akkor különösen oda kell figyelni, hogyan rendezzük sorba őket. Ilyenkor segíthet, ha részben csoportosítjuk és automatizáljuk a gyakran futtatott teszteket.

Az imént kaptál pár tippet az adatbázis-teszteléshez. Láthatod, hogy milyen problémákba, hibákba ütközhetsz a tesztelés alatt. Miért nem teszteled le a saját alkalmazásod adatbázisát?

Szerző:
Inder P. Singh

<< Vissza