Testidatan generointi Anu Ahonen Kevät 2008 Tämä työ on tehty Creative Commons -lisenssin alla Työn tarkasti 9.4.2008 Jouni Huotari (JAMK/IT)
1 SISÄLTÖ 1 TYÖN LÄHTÖKOHDAT JA TOTEUTUS...2 2 TESTIDATAN GENEROINTI OHJELMALLISESTI...2 2.1 EMS Data Generator for SQL Server 2.3...3 2.2 Data Generator...3 3 TESTIDATAN GENEROINTI...4 3.1 Generointi EMS Data Generatorin avulla...4 3.2 Generointi online Data Generatorin avulla...7 4 YHTEENVETO...9 LÄHTEET...10
2 1 TYÖN LÄHTÖKOHDAT JA TOTEUTUS Tämä selvitysraportti on osa Jyväskylän ammattikorkeakoulun Tietokannan hallintaopintojaksoa. Opintojakso on osa laajempaa tietokantoihin liittyvää kokonaisuutta, jonka puitteissa suunnitellaan ja toteutetaan tietokanta prototyypiksi asti. Raportin tarkoituksena on keskittyä jonkin tietokannan toteutukseen tai hallintaan liittyvän teeman tarkasteluun ja esitellä se pääpiirteissään. Tehdessäni tietokantaa Tietokannat-opintokokonaisuuteen, esiin nousi käytännön ongelma, joka liittyi testidatan generoimiseen tekeillä olevaan tietokantaan. Koska olin jo aiemmin saanut selvitysraportin aiheeksi tietokannan testauksen, päätin rajata sitä käsittämään nimenomaan testidatan generoinnin tietokantaan ohjelmallisesti. Tutkimus suoritettiin generoimalla dataa MS SQL Server -tietokantaan kahdella eri ohjelmalla. Toinen ohjelmista oli Open Source -pohjaisen Data Generatorin (www.generatedata.com) online-demo ja toinen EMS Data Generator for SQL Server 2.3 (http://wareseeker.com/download/ems-data-generator-for-sql-server- 2.3.rar/269710), josta oli käytössä 30 päivän ilmainen kokeiluversio. Molemmissa käytetyissä generaattoiressa oli kerralla generoitavan datan maksimimäärä rajattu täydestä versiosta. 2 TESTIDATAN GENEROINTI OHJELMALLISESTI Tietokannan testaus on prosessi, jota tehdään koko prosessin ajan aina suunnitteluputken alusta sovelluksen käyttöönottoon. Testaus testidatan avulla tulee aiheelliseksi siinä vaiheessa, kun halutaan saada nopeasti tietoa tietokantaan esimerkiksi prototyypin testaamista varten tai kun halutaan generoida suuret määrät dataa tietokannan suorituskyvyn testaamiseksi. Useimmissa tapauksissa riittää, että tietokantaan syötetään tietoja manuaalisesti. Tämä on kuitenkin hidasta ja aikaa vievää, varsinkin jos tauluja ja niiden ominaisuuksia on
3 paljon, ja syntyvän datan määrä suhteessa käytettyyn aikaan on vähäinen. Tällainen manuaalinen tiedon syöttö on perusteltua silloin, kun halutaan sovellusta hyvin karkealla tasolla tai kun tiedetään, ettei tietokannan todellisista tietomääristä puhuttaessa puhuta kuin muutamista sadoista tai korkeintaan tuhansista tiedoista. Kymmenien tuhansien tai miljoonien tietojen syöttäminen ohjelmaan käsin on mahdotonta. Jos halutaan esimerkiksi testata tietokannan suorituskykyä suurilla käyttäjämäärillä, on tietokantaan syötettävä tietoa paljon ja nopeasti. Tällöin testidatan generoiminen ohjelmallisesti on perusteltua ja oikeastaan ainoa mahdollinen järkevä ratkaisu. 2.1 EMS Data Generator for SQL Server 2.3 EMS Data Generator on väline, jolla voidaan generoida dataa useampaan SQL Server -tietokannan tauluun kerralla. Ohjelman julkaisija on EMS Software Development ja se on saatavilla 30 päivän kokeiluversiona esimerkiksi osoitteesta: http://wareseeker.com/download/ems-data-generator-for-sql-server-2.3.rar/269710. Ohjelmasta on saatavana myös täysi versio hintaan $65. Kokeiluversion ominaisuuksia on rajoitettu siten, että kerralla generoitavan datan maksimimäärä on 100 riviä. 2.2 Data Generator Data Generator on Black Sheep Web Softwaren Open Source -pohjainen datageneraattori, jonka käyttöön on kolme eri mahdollisuutta. Käyttäjä voi joko a) käyttää online-demoa, jonka avulla on mahdollista generoida HTML, Exel XML, CSV tai SQL (MySQL) -skripti, joka luo maksimissaan 200 riviä yhteen tauluun kerrallaan. b) ladata täysillä ominaisuuksilla varustettu versio itselleen. Vaatimuksina on MySQL 4+, PHP 4+ ja mikä tahansa Java Scriptiä tukeva selain.
4 c) lahjoittaa $20 ja saada itselleen käyttäjätili. Tililliset käyttäjät saavat generoida online-generaattorilla kerralla jopa 5000 tietuetta ja mahdollisuuden tallettaa asetuksiaan yhdeksi vuodeksi. 3 TESTIDATAN GENEROINTI 3.1 Generointi EMS Data Generatorin avulla EMS Data Generatorin avulla datan generointi tehdään neljän vaiheen kautta. Ensimmäisessä vaiheessa (Kuvio 1) määritellään käytettävä SQL Server-yhteys ja autentikointi. Tools-valikon alta saadaan näkyviin Preferences-välilehti, jolla on generointiin liittyvät asetukset. Tällaisia asetuksia ovat muun muassa generoitavien rivien määrän valinta ja tyhjennetäänkö tietokannan taulut ennen generointia. Kuvio 1 SQL Server -yhteyden määritys
5 Yhteyden määrittämisen jälkeen valitaan käytettävä tietokanta ja taulut, joihin dataa halutaan generoida (Kuvio 2). Ohjelma lukee tietokannan kuvauksen ja kertoo, missä järjestykset tiedot tulee tauluihin generoida, jotta tietojen kirjoittaminen tietokantaan onnistuu. Kuvio 2 Tietokannan ja taulujen valinta Kolmannessa vaiheessa (Kuvio 3) valitaan tauluista ne kentät, joihin halutaan tuottaa tietoja ja valitaan kenttäkohtaisesti generointia ohjaavat asetukset halutunlaisiksi. Generointitapa voi olla sattumanvarainen, inkrementaalinen, generoitava data voidaan lukea SQL-kyselyn avulla tai voidaan syöttää halutut arvot listaan, josta ne edelleen luetaan tietokantaan joko sattumanvaraisessa tai listan mukaisessa järjestyksessä. Kenttään saadaan generoitua myös null-arvo siten, että esimerkiksi 30 % tietyn ominaisuuden kentistä jää vaille arvoa. Generoitavan datan muotoa voidaan ohjata erilaisilla parametreilla. Generoitavalle tiedolle voi määrittää generointitavasta riippuen minimi- ja maksimipituudet sekä aloittava ja lopettava merkki. Tieto voidaan myös muodostaa maskin avulla, jolloin
6 voidaan määrittää esimerkiksi char(5)-tyyppinen Postinumero-kenttä koostumaan pelkästään numeroista. Kuvio 3 Kenttien valinta ja käytettävien parametrien asetukset Neljännessä vaiheessa tieto generoidaan tietokantaan annettujen sääntöjen mukaisesti (Kuvio 4). Jos generoinnin aikana tulee virheitä, siitä tuli selkeä ilmoitus Generation Logiin.
7 Kuvio 4 Tietojen generointi tietokantaan 3.2 Generointi online Data Generatorin avulla Data Generaattorin online demo toimii selaimessa (Kuvio 5). Tietojen generointi sillä on yksivaiheinen. Vaihtoehdoista valitaan missä muodossa(html, XML, SQL jne.) tulos halutaan ja montako riviä generoidaan. Generaattorille syötetään tietokannan taulun nimi, datatyyppi, valitaan valmiista esimerkeistä minkä näköistä tietoa halutaan (Kuvio 6) ja otetaan kantaa mahdollisiin lisävalintoihin. Lisäksi skriptiin voidaan sisällyttää taulujen perustamiskäsky, kunhan annetaan perustettavan taulun nimi. Lopuksi painetaan Generate.
8 Kuvio 5 Tietojen syöttäminen Data Generatoriiin Kuvio 6 Generoitavan datan muotoilu Lopputuloksena saadaan SQL-skripti, joka voidaan sitten ajaa tietokantaan komentorivin tai graafisen tietokannan hallintajärjestelmän (esim. SQL Server Management Studio) kautta. Huomioitavaa on, että SQL-skripti on tehty MySQL:lle. Tällä tosin on merkitystä vain, jos generoidaan myös taulujen perustamiskäskyjä pelkkien INSERT INTO lauseiden lisäksi.
9 Kuvio 7 Data Generatorin tekemä SQL-skripti (MySQL) 4 YHTEENVETO EMS Data Generator on monipuolinen ja helppokäyttöinen ohjelma. Suurin haitta on lähinnä se, että generaattorin avulla syntyvät tiedot kuten nimi tai osoite ovat kaikki samanlaista kirjainmerkkien sekamelskaa ellei tietoja muodosteta käyttäjän itse syöttämästä listasta tai lueta esim. jostain toisesta taulusta. Tosin tämäkin ongelma on lähinnä vain kosmeettinen sillä tiedot ovat valmiita haettavaksi esimerkiksi SELECTlauseilla. EMS Data Generator on erinomainen jos generoitavan tiedon määrä on tärkeämpää kuin sen laatu. Data Generaattorin online demolla saadaan helpommin oikean näköistä dataa eli nimet näyttävät nimiltä ja osoitteet osoitteilta. Sovelluksessa ei ole yhtä paljon erilaisia säätömahdollisuuksia, mutta sillä saadaan helposti aikaiseksi yleisimmät tarvittavat tiedot (nimi- ja osoitetiedot, päivämäärät jne.) ja ne näyttävät oikealta. Suurin puute on se, ettei demoversiolla voi generoida kuin 100 riviä kerrallaan, mutta pienimuotoiseen testaukseen sovellus on mitä loistavin.
10 LÄHTEET EMS Data Generator For SQL Server. Viitattu 3.4.2008. http://wareseeker.com/download/ems-data-generator-for-sql-server-2.3.rar/269710. The Data Generator. Online demo. Viitattu 3.4.2008. http://www.generatedata.com/.