Tietokannat ja testaaminen 24.4.2007 Mitro Kivinen Aihealueet Kehittämiseen liittyvä tietokantaorientoitunut testaus Tietokantalähtöisiä testausnäkökulmia Tietokanta suorituskykytestaajan näkökulmasta Asiaa testidatasta Testausautomaatioon liittyviä asioita Mitä apua testaajat tarvitsevat tietokantaammattilaisilta? 2 1
Johtava laadunvarmistuksen osaaja Ohjelmistojen laadunvarmistus ja testaus Keskittynyt ja riippumaton asiantuntijaorganisaatio Työllistää 50 ammattilaista Kannattavaa kasvua vuodesta 2002 Yksityisomistuksessa Toimisto Espoossa Autamme asiakkaitamme turvaamaan IT-investointien onnistumisen. 3 Ohjelmiston laatu on asiakkaillemme tärkeä menestystekijä 4 2
Mitro Kivinen Johtava konsultti, Qentinelissä yli 3 vuotta MBA 2001 (HKKK) IT tuotekehityksen johtaminen 1. Helian kokopäiväisesti opiskellut IT Tradenomi Tietokantasuunnittelu Takana paljon erilaisia alan töitä Sytyke Ry:n puheenjohtaja Mukana OUGF:n hallituksessa 1998-1999 5 Kehittämiseen liittyvä tietokantaorientoitunut testaus 3
Millainen on kehittäjä ja testaaja? Kehittäjät ovat keskenään hyvin erilaisia Näkökulmat ja osaaminen vaihtelee suuresti mm. koulutuksen, käytettyjen kielten, paradigmojen ja sovellusalueen mukaan Testaaja on kehittäjän pari ja testaajatkin osaavat keskenään hyvin erilaisia asioita Koodiorientoitunut testaaja, suorituskykytestaaja, käytettävyystestaaja, järjestelmätestaaja, integroija Tietokantaosaaminen ei ole oletusarvoista! 7 Mitä testaaja miettii, missä voi mennä vikaan? Transaktion ACID-periaate Olioiden persistenssi Suorituskykyasiat Scheman rakenne ei normalisoitu Ohjelmien omat olio-cachet Ketterästi kehittämällä TK asiat voivat unohtua Keskitytään tekemään nopeasti toimivaa Entäpä eheä tietokannan kokonaisratkaisu? TK näkökulma tarvitaan mukaan tiimiin! 8 4
Asetukset ja data samassa kannassa Useat varsinkin webbisovellukset tallentavat ohjelmien toimintaan vaikuttavat tiedot kantaan Vaihtoehto konfigurointien tallentamiselle esim. XML:nä Testaajan (ja käyttäjän) kannalta on yhdentekevää, onko kyseessä ohjelmointivirhe vai vika asetusdatassa Ohjelmoija on hyvin tarkka siitä, että kyseessä ei ole ohjelmavirhe Onko data enää dataa? Pitäisikö asetusdataa ajatella ohjelman ominaisuutena? 9 Tietokantalähtöisiä testausnäkökulmia 5
Relaatiokannan erikoisuudet Dataan liittyvät rajoitteet Primary key, Foreign key Unique ja muut Constraintit Trigger Tietokantaan kätketty ohjelmoitu toiminnallisuus on myös testattava Talletetut proseduurit ja funktiot Näkymiä luovat kyselyt Tietokantakäyttäjien oikeudet Monet sovellukset hallinnoivat itse käyttäjäoikeuksia Onhan edes sovelluksilla eri käyttäjätunnukset? Eihän UID/PWD ole kovakoodattu ohjelmakoodiin? Tietokantaihmisille tuttuja, kehittäjille ja testaajille outoa ja uutta 11 Yhteinen kieli: helpottavia ajattelumalleja CRUD taulu Kuka tai mikä ohjelma saa tehdä mitäkin kutakin tietoa / taulua / schemaa / tietokantaa koskien Datan tilasiirtymäkaaviot Mitä tiloja eri tiedoilla voi olla Dokumentoitu datan ja muotoilujen merkitys Taulut ja sarakkeet kommentoituja Taulut ja sarakkeet nimetty selväkielisesti 12 6
Dataan liittyviä erikoisuuksia, joista kehittäjillä ei ehkä ole hajuakaan Kuka / mikä sovellus omistaa yhteiskäyttöisen datan? Jos sama data useammassa kannassa, kuka vastaa synkronoinnista? Missä eri tietomuodoissa sama data voi esiintyä? Varchar2, text, mikä on näiden vastine eri ohjelmointikielissä Kenen vastuulla on konversio? Entä datan piilotettu merkitys? Miten eri rajapinnat (API:t, SOAP, SOA) käsittelevät sen datan, joka aikanaan tulee kantaan saakka? Onko sovelluksen merkistö yhteensopiva tietokannan asennuksessa valitun merkistön kanssa? 13 Muuta tietokantaan liittyvää testattavaa Asennus Valittava merkistö Tiedostojen sijainti levyllä Lokitiedostot, datatiedostot, indeksitiedostot Tukeeko RAID taso kohteen liiketoiminnallisia tarpeita? Käyttäjäoikeudet Suoritussuunnitelmat kyselyille Varmuuskopiointi ja palautus Jatkuva pääsy 24/7 Montako ysiä laitetaan? 4? 5? Hajautus ja sen ongelmat 14 7
Tietokanta suorituskykytestaajan näkökulmasta Www-saitit, joissa paljon käyttäjiä: 30% suorituskykyongelmista tuotannossa johtuu tietokannasta (40% sovelluspalvelimen ongelmia) Standish Group Suorituskyvyn mittaus Suorituskykytestaajat kuormittavat koko järjestelmää Usein vain käyttöliittymästä Tietokanta on musta laatikko Testaaja näkee yleensä käyttöjärjestelmän mittarit (cpu,disk,memory), mutta harvemmin kannan sisäistä toimintaa Roolit testaaja näkee että kannassa mättää jokin, mutta ei mikä DBA:n täytyy laittaa trace päälle oikeaan aikaan ajon aikana, jotta näkee ongelman Auttaa oikean tulkinnan tekemisessä 16 8
Normaalia ongelmatilanteessa... Kaikki syyttelevät toisiaan kuka saa mustan pekan tällä kertaa DBA:t ovat usein herkkänahkaisia kannassa se vika ei ole ainakaan Kuitenkin! Kuormitustestit ovat paras tapa poistaa suorituskykyongelmia ennen tuotantoon menoa Ainoa helppo tapa saadaan kannan/os parametrit kuntoon on kuormittaa kantaa realistisesti Ei siis väliä kenen vika! Kaikkien pitäisi hyötyä! 17 Tyypillisiä kantaongelmia suorituskykytesteissä Testiympäristön kantakone on mopo verrattuna tuotantorautaan täysi tuotantokanta täytyy kuitenkin asentaa Jos vielä laitetaan dataa vain 5% todellisesta, ei tuloksista ole paljoa iloa harvoin käytettävät rankat haut jää testaamatta kunnolla, kun keskitytään volyymihakuihin Yksittäinen kysely harvoin käytettävästä työkalusta lukitsee taulun ja kaikki 1000 käyttäjää odottelee parempia aikoja Alussa 3 sekuntia kestävä haku kertautuu 30 sekuntiin kun käyttäjämäärää nostetaan maksimimäärään levy tai cpu pullonkaulana. 18 9
Asiaa testidatasta Kuinka luoda testausaineisto Otetaan kopio tuotantokannasta Kokonaan tai osittain Tehdään erityiset poimintasäännöt Ei ehkä kata kaikkia testauksen kannalta tärkeää Rakennettu Ei ehkä ymmärretä kaikkea todellisen elämän monimutkaisuutta Populointi ohjelmilla, skripteillä, kopioimalla toisesta taulusta Vie aikaa Myös populointi pitää testata Automaation tarpeet 20 10
Testiaineiston käsittely Populointi Skripteillä vai ohjelmalla Virkistäminen Jokaisen testiajon jälkeen? Voiko testejä ketjuttaa? Suorituskykyasiat Pieni aineisto Suuri aineisto Varmistus ja palautus Kallista seisottaa testausta Riippuu automatisoinnin tasosta! Jos ketjutetaan ja eka testitapaus epäonnistuu, missä tilassa muut testit ovat? Testidatan pulaaminen edestakaisin syö paljon aikaa ja resursseja. 21 Testausautomaatioon liittyviä asioita 11
Mitä automatisoida? Tietokanta muodostaa hyvin luonnollisen kohteen testausautomaatiolle Helpot kohteet Testidatan asettaminen Testien tulosten automaattinen vertailu Testien siivoaminen Taustakuorman generoiminen Haasteelliset alueet Laajat testiautomaatiojärjestelmät Korkean käytettävyyden ja saatavuuden testit 23 Kuinka automatisoida Yksittäisten testien tarpeisiin Suorat SQL-skriptit Asettamiseen ja tulosten tutkimiseen Sovelluksen API:en kautta Koko kannan asettamiseen ja populointiin API ei riitä, teho ei ehkä riitä Poistetaanko indeksit? Erikoistyökaluja voi hyödyntää, mutta yksinkertaiset työkalut voivat auttaa pitkälle Excel? 24 12
Mitä apua testaajat tarvitsevat tietokanta-ammattilaisilta? Avuntarve pääasiassa teknistä Varmistukset ja palauttamiset Kantojen / Schemojen luonti Suoritussuunnitelmien analysointi TK Prof voi olla testaajalle kryptinen Tietokantakuvausten toimittaminen ER-mallin reverse engineering Lokitasojen asettaminen 26 13
Mitä apua voisi tarjota Osaaminen tietokantaelementtien merkityksestä Testimateriaalien generointi ja populointi Tietokannan fyysisen asentamisen järkevyyden analysointi Tietokannan mitoittaminen (tilanvarauslaskenta) Arkkitehtuurinen näkemys Mitä kaikkea kanta voisi tehdä sovelluksille Vaatia yhteiskäyttöisyyttä Testaussuunnitelmien katselmointia 27 Keskustelua ja kysymyksiä? 14
Yhteenveto Kehittäjät ja testaajat eivät välttämättä tunne tietokantoja Ohjelmistojen testaamisessa on paljon tietokantaa koskevia asioita Tietokantalähtöinen testaus on aivan oma näkökulmansa testaukselle Tietokannat tarjoavat hyvän luonnollisen testausautomaation liittymäkohdan Tietokantaihmiset voivat auttaa testausta ja toisinpäin 29 Yhteystiedot: info@qentinel.com Qentinel Oy Tekniikantie 14, 02150 Espoo www.qentinel.com LET THERE BE QUALITY 30 15