10.4. Adatbázis tesztelési segédprogramok

10.4.1. DBUnit tesztkörnyezet használata

A DBUnit rendszer az elterjedt JUnit tesztrendszerre épülő adatbázis műveletek tesztelésére alkalmas ingyenes keretrendszer. A DBUnit rendszer a tesztelésben elsődlegesen arra használható, hogy segítségével az adatbázist, annak tartalmát egy megadott állapotba hozzuk. Ezáltal biztosítható, hogy a tesztek konzisztensen futathatók, gyorsan és egyszerűen rekonstruálhatók a teszthez szükséges környezetek. Az igényelt adatbázis tartalmat egy XML állományban lehet megadni, ahol több tesztállapotot is nyilván lehet tartani. A teszt indítása előtt a DBUnittal betölthető az igényelt állapot az adatbázisba. A DBUnit rendszer előnyei a következő pontokban foglalhatók össze:

  • A tesztekhez igényelt adatbázis tartalom hatékony kezelése

  • Támogatás az adatbázis tartalom XML állományba történő kimentéséhez illetve az XML állományból történő visszatöltésére

  • Lehetőséget ad a letárolt adattartalmakban történő keresésre, az különböző adatbázis állapotok összehasonlítására

A DBUnit keretrendszer használata, a tesztelés során az alábbi lépéseket kell megtenni:

  1. Adatbázis állapotot tartalmazó XML állomány előkészítése

  2. Adatbázis aktuális állapotának kitörlése

  3. A lementett állapotokból a kiválasztott állapot betöltése XML-ből az adatbázisba.

  4. Tesztek futattása

  5. Tesztek kiértékelése

Az XML-ben tárolt adatok betöltését a keretrendszer által tartalmazott DatabaseTestCase osztályon keresztül, annak setUp() metódusával végezhetjük el.

A következőkben egy mintát mutatunk be a DBUnit használatára. Az első lépés az adatokat leíró XML állomány (pl. input.xml) előállítása. Az XML állomány szerkezete az adatbázis szerkezetét tükrözi. Az XML a konkrét adatmező tartalmakat is tárolja amint az alábbi példa is mutatja

    
    <?xml version='1.0' encoding='UTF-8'?>
    <dataset>
        <login id="1" empcode="E005" loginname="chandan" 
              password="chandan" loginenabled="y"/>
        <login id="2" empcode="E006" loginname="deepak" 
              password="deepak" loginenabled="n"/>
        </dataset>
    
    

A következő lépésben a keretrendszer getConnection metódusán keresztül kapcsolatot építünk ki a céladatbázishoz:

        
    // Provide a connection to the database
     
    protected IDatabaseConnection getConnection() throws Exception{
       Class driverClass = Class.forName("com.mysql.jdbc.Driver");
       Connection jdbcConnection = 
         DriverManager.getConnection("jdbc:mysql://localhost:
         3306/hrapptest", "root", "root");
       return new DatabaseConnection(jdbcConnection);
    }
    

Az XML-ben tárolt adatokat betöltjük az adatbázisba:

    // Load the data which will be inserted for the test
     
     protected IDataSet getDataSet() throws Exception{
       loadedDataSet = 
         new FlatXmlDataSet(this.getClass().getClassLoader().
           getResourceAsStream("input.xml"));
       return loadedDataSet;
    }
    

Ezt követően elindíthatók a betöltött tartalomhoz kapcsolódó adatbázis tesztek.

10.4.2. TestComplete rendszer

A TestComplete keretrendszer egy összetett tesztkörnyezetet biztosít az adatbázis teszteléshez. A fizetős termék több különböző tesztfeladatot is támogat

  • Funkcionális teszt: Az alkalmazások GUI felületén keresztül célja annak ellenőrzése, hogy a kért funkciók valóban jól működnek-e. A teszt támogatására a TestComplete rendszer lehetőséget ad a felhasználói kezelő parancsok (egér, billentyűzet) feljegyzésére és későbbi visszajátszására. A lejegyzett tevékenységek később közvetlenül is szerkeszthetők és bővíthetők. A tesztekhez ellenőrzési pontok köthetők, ahol a kijelölt objektumok értéke összehasonlítható a bázisként kijelölt értékekkel.

    10.3. ábra - Felhasználói GUI tevékenységek naplózása

    Felhasználói GUI tevékenységek naplózása

  • Parancsorientált teszt: Ezen teszt típus arra szolgál, hogy a felépítsük a felhasználó által elvégzendő kezelési tevékenységek műveletsorát. A tevékenység kijelölése történhet grafikusan, egy eszközlistából választva a tevékenység elemet; illetve használhatunk egy script nyelvet is. A tesztekhez ellenőrzési pontok köthetők, ahol a kijelölt objektumok értéke összehasonlítható a bázisként kijelölt értékekkel.

  • Egység teszt: Az egyes osztályok tesztelését szolgáló modul

  • Regressziós teszt: A modul a regressziós tesztek menedzselést, azok ütemezését végzi. A keretrendszer lehetőséget ad az egyes tesztek eredményének naplózására és az eredményeknek a bázisadatokkal történő összehasonlítására.

  • Terhelés teszt: A keretrendszer egy kifinomult, hangolható környezetet biztosít a terhelési tesztek elvégzésére. A tesztekhez szimulálható a terhelés mértéke és jellege. Többek között beállítható a szimulált kliensek eloszlása, a működési paraméterük, a hálózati kapcsolataik jellege, sebessége. A tesztadatok naplózásán keresztül elemezhető a rendszer terhelési karakterisztikája.

  • Adat-orientált tesz: A keretrendszer lehetőséget ad a teszthez szükséges bemenő adatok hatékony generálására. Egyrészt biztosít egy vléletlen tesztadatsort generáló mechanizmust, másrészt rugalmas bemenő adatsor-forrás kijelő mechanizmusa is van.

10.4.3. DTM DB Stress rendszer

A DBSterss keretrendszer célja az adatbázis terhelési tesztek elvégzéésnek és kiértékelésének a támogatása. A teszt végrehajtás lépései a következő pontokból állnak:

  • Adatforrás kijelölése: az elterjedt adatbázis csatolók használatával az adtforrásokszéles köre elérhető

  • Új üres teszt létrehozása

  • a végrehajtandó SQL parancsok kijelölése

  • a végrehajtás paramétereinek megadása (pl. ismétlésszám, szálak darabszáma)

  • a tesztek futtatása: A futtatásnál több végrehajtási mód is elérhető. A támogatott üzemmódok: soros, párhuzamos és kötegekbe rendezett végrehajtás.

  • eredmények értékelése: a keretrendszer több teljesítmény paraméter is támogat, grafikus és táblázatos megjelenítést szolgáltat a futtatási adatokról. A mért paraméterek külön jegyzik az egyes végrehajtási lépések költségeit, mint például a kapcsolat kiépítés ideje vagy parancs előkészítés ideje.

A rendszer külön modulokat biztosít a tesztadatok előállításra is.

10.4. ábra - A DTM DBStress keretrendszer GUI elemei

A DTM DBStress keretrendszer GUI elemei