180 likes | 365 Views
Ohjelmiston testaus ja laatu. RASE 9.5.2006. Määritelmä. Testaus on systemaattinen lähestymistapa ohjelmistoissa esiintyvien virheiden löytämiseksi ohjelmaa suorittamalla.
E N D
Ohjelmiston testaus ja laatu RASE 9.5.2006
Määritelmä • Testaus on systemaattinen lähestymistapa ohjelmistoissa esiintyvien virheiden löytämiseksi ohjelmaa suorittamalla. • Testattaessa pyritään luomaan kattavia testitapausjoukkoja, joilla ohjelmissa esiintyvät virheet saadaan selvitettyä taloudellisesti ja ohjelman toiminta mahdollisimman luotettavaksi. • Testaamiseen on käytössä erilaisia välineitä (käytettävyys, tehokkuus, luotettavuus…) • Testauksen tarkoituksena periaatteessa on osoittaa, että ohjelma toimii tai toisin päin, että ohjelma ei toimi, kuten sen pitäisi. • Testausta suoritettaessa on hyväksyttävä se tosiasia, että kaikkia ohjelmistossa esiintyviä virheitä ei kyetä saamaan esiin, johtuen ohjelmistojen laajuudesta ja suorituspolkujen moninaisuudesta. • Ohjelman toiminta voidaan todistaa oikeelliseksi vain äärimmäisen triviaaleissa tapauksissa. • Kysymyksiä • Toimiiko ohjelma väärin suhteessa määrittelyynsä? • Toimiiko ohjelma eri ympäristöissä? • Tekeekö ohjelma sitä, mitä sen pitäisi? • Tekeekö ohjelma sitä mitä sen ei pitäisi tehdä?
Käsitteitä • virhe • Havaittu eroavaisuus ohjelmiston toiminnassa ja sille tuotetuissa määrityksissä. • Testauksen vaihemallin mukaan virheet voidaan jakaa virheelliseen vaatimusten määrittelyyn, suunnitteluvirheisiin ja ohjelmointivirheisiin • verifiointi • Tarkoittaa ohjelman oikeellisuuden ja oikean toiminnan todentamista. • validointi • Tarkoittaa varmennusta, että toteutettava järjestelmä vastaa loppukäyttäjän tarpeita. • virheidenpoisto l. debuggaus • Prosessi, jonka tarkoituksena on löytää ja poistaa virheiden syitä ja aiheuttajia ohjelmakoodista.
Käsitteitä • staattinen testaus • Ohjelmiston testausta ilman, että ohjelmakoodia suoritetaan. • Koodin analysointi voidaan suorittaa joko käsin tai automaattisesti staattisen analyysin työkalulla. • Menettelyllä pyritään löytämään tutkittavasta ohjelmakoodista loogisia-, suunnittelu- ja koodausvirheitä. • Tapahtuu koodin tarkastuksessa (inspection), katselmuksessa (review) ja läpikäyntitilaisuuksissa (walkthrough) tai ohjelmoijan itse suorittamissa pöytätestauksissa (desk checking) • dynaaminen testaus • Komponentin tai ohjelmiston testausta itse ohjelman tai sen osan suorituksen aikana ja perusteella • Apuvälineinä olevat dynaamiset virheenjäljitysohjelmat, kuten debuggerit • testattavuus • Ohjelmiston testattavuudella mitataan ohjelmiston kykyä paljastaa omat virheensä ohjelmakoodissa, komponenteissa tai vaatimuksissa
Testi tapausten tuottaminen testitapaukset testaus Testi tapausten ajo testausvaiheiden tehtävät virheet / virheen oireet Virheen paikan- taminen virheen poistaminen debuggaus Virheen korjaus Korjausten testaus Testausvaiheet ja tehtävät
Testauksen käytännön olettamuksia • täydellinen testaus vaatii kaikkien ohjelmarivien ja kaikkien eri toimintojen kombinaatioiden testaamisen vie aikaa ja on kallista mahdotonta • testaus on vaihtokauppaa luotettavuus vs. kustannukset & aikataulu • testauksessa ”silmä näkee, mitä se haluaa” miten tehdään ja kuka tekee luotettavaa testausta • ohjelman tekijä ei saisi olla ainoa testaaja • systeemin tehnyt ryhmä ei saisi olla ainoa testaajaryhmä • testistä saatavat tulokset tulee tutkia tarkkaan, jotta ei jää huomaamatta virheitä • testitapauksissa tulee olla kelvollisia ja kelvottomia syötteitä • ”ei riitä, että ohjelma tekee sitä, mitä sen pitääkin tehdä. Se ei saa tehdä sitä, mitä sen ei pitäisikään tehdä” • testaukselle varattava aikaa, jotta dokumentointi ja korjaus onnistuu
Katselmointi • Vaatimus-, määrittely- ja suunnitteludokumenttien teon jälkeen katselmukset • Katselmuskäytäntö kuvataan projektisuunnitelmassa tai projektitasoisessa testaussuunnitelmassa (mitä, kuka, milloin ja miten?) • Testauksen kannalta oleellisia ovat määrittely- ja suunnitteludokumenttien sekä testaussuunnitelman ja testitapausten katselmoinnit • katselmuspalaveri • puheenjohtaja ja sihteeri • pysytään asiassa • tarkastuslistojen käyttö lisää tehokkuutta • päätökset kirjataan ylös (hyväksyminen, ehdollinen hyväksyminen (havaitut virheet korjattava), uusintakatselmus • Kestää enintään 2 tuntia
Onnistunut testaus vaatii • Testausmenetelmien ja –välineiden asiantuntemuksen • Selkeät tavoitteet • Testaussuunnitteluun panostamisen • Tarvittavien henkilöresurssien olemassa olon • Testausprojektin tuloksien seurannan ja toteuttamisen • Testausprojektin hyvän vaiheistuksen ja välietapit • Sovittujen pelisääntöjen tiedottamisen • Suunnitellun ja toimivan muutos- ja virhehallinnan
Testausmenetelmiä • Testauksen menetelmien päälähestymistapoina ovat • black-box testi • testaaja ei voi tutkia lähdekoodia testaus perustuu sovellukselle suunnitteluvaiheessa tehtyihin määrityksiin ja laadittuihin ohjeisiin • Menetelmän käyttö edellyttää ohjelman suunnittelussa tehdyiltä määrittelyiltä täsmällisyyttä ja oikeaa toteutusta. • testattavalle sovellukselle annetaan haluttu syöte, jonka jälkeen sovelluksen toimintaa tutkitaan sen tuottaman tulosteen perusteella. • testaus käyttöliittymän kautta • testaajana ei mielellään tekijä tai sovelluksen tuntija, vaan täysin ulkopuolinen henkilö testitapaukset todennäköisesti paljastavampia
Testausmenetelmiä • white-box (glass-box, clear box, structural) testi • testi perustuu lähdekoodin ja toiminnallisen määrittelyn olemassaoloon testitapaukset suunnitellaan lähdekoodin toiminnallisuuden perusteella • testaajalla tietoa järjestelmän sisäisestä rakenteesta • mahdollisimman täydelliseen lausekattavuuteen = testitapauksien tulisi käydä jokainen järjestelmän sisäisen rakenteen haara läpi • grey-box testi (gray-box am.) • yhdistelmä white box ja black box testeistä • testitapaukset luodaan ohjelmakoodi ja toiminnallisuus tuntien • toiminnallisesti orientoitunut, hyödyntää koodia ja toteutusratkaisujen tuntemusta • varmentaa, paikkaa, täydentää edellisiä testejä
Hyväksymis- koe Tarpeet / sopimus Järjestelmä- testaus Määrittely testauksen suunnittelu ja tulosten verifiointi Integrointi- testaus Arkkitehtuuri- suunnittelu Moduuli- testaus Moduuli- suunnittelu Ohjelmointi Testauksen vaihejako -Moduulitestauksen paljastamat virheet ovat ohjelmointivirheitä -Integrointitestauksessa esiin tulevat virheet johtuvat suunnitteluvirheistä -Järjestelmätestaus vaiheessa paljastuvat virheet, voivat pahimmassa tapauksessa johtaa koko prosessin alkuun eli virheellisesti suoritettuun määrittelyvaiheeseen
Hyväksymiskoe • kyseessä ei ole testi virheitä ei saisi olla enää tässä vaiheessa • hyväksymiskokeen tekee asiakas • hyväksymiskokeen jälkeen asiakas saa sovelluksen käyttöönsä ja toimittajalle jää takuuajan mukainen korjausvelvoite
Testaustyökaluja • käsitestaus (vähän) – automatisoitu testaus (mahd. paljon) • staattinen virheenjäljitys – ilman ohjelman ajoa • kääntäjä (varoitukset, virheet) • dynaaminen virheenjäljitys – ohjelman ajon avulla • debuggeri, keskeytyskohdat, muuttujien seurannat, koodissa eteneminen • automatisoitu testaus • testauksen suoritus- ja vertailutyökalut • periaatteeltaan testityökalut ovat yksinkertaisesti ohjelmia, jotka suorittavat testin käyttämällä testattavaa sovellusta - simuloivat tavallista testaajaa ja testaajan testattavalle sovellukselle manuaalisesti suorittamia toimintoja • Käytettävyystestissä eri välineet kuin toiminnan testaamisessa
yleistestaus- suunnitelma moduulitestaus- suunnitelmat testi ympäristön luonti testitapausten kuvaus testausraportti testin suoritus testilogi Testauksen dokumentointi
Käytettävyys • Käytettävyys on osa tuotteen laatuominaisuutta • Käytettävyys on mittari, jolla mitataan tuotteen käytön tuottavuutta, tehokkuutta ja miellyttävyyttä. Nämä arvioidaan aina suhteessa käyttäjiin sekä työhön ja käyttöympäristöön, joille ja joihin tuote on tarkoitettu. (ISO 9241-11 -standardi) • Tuottavuus - tehtävät tulevat tehdyksi täydellisesti ja virheettömästi. • Tehokkuus - paljonko resursseja tuotteen käytössä tarvitaan henkilöinä, rahana ja aikana. • Miellyttävyys - kuinka miellyttävä tuotetta on käyttäjien mielestä käyttää.
Käytettävyys Jakob Nielsen antaa käytettävyydelle seuraavat viisi laatukomponenttia: • Opittavuus:Kuinka helppoa käyttäjien on tehdä tuotteen avulla perusasiat ensimmäisellä käyttökerralla? • Tehokkuus: Kun asia on opittu, kuinka nopeasti käyttäjät pystyvät tekemään tehtävät? • Muistettavuus: Kun käyttäjät palaavat tuotteen ääreen oltuaan käyttämättä sitä jonkin aikaa, kuinka kauan heiltä menee saman tuottavuuden saavuttamiseen uudelleen? • Virheettömyys:Kuinka paljon käyttäjät tekevät virheitä, kuinka vakavia ne ovat ja kuinka helppoa niistä on toipua? • Miellyttävyys: Kuinka miellyttävä tuote on käyttää? • Hyödyllisyys: Kuinka hyvin tuote sopii työhön, johon se on tarkoitettu?
Käytettävyys • Käytettävyys-käsitteellä on joukko rinnakkaiskäsitteitä: • Palvelevuus: Aiemmin käytettävyys, esimerkiksi onko verkko toiminnassa 24 tuntia vuorokaudessa • Houkuttelevuus:Tuote houkuttelee ostamaan, käyttämään. Esimerkiksi Webissä tämä tarkoittaa sitä, että käyttäjä selaa etusivua syvemmälle. • Helppokäyttöisyys: Suunnitteluperiaate, jonka mukaan käyttäjä saavuttaa tavoitteensa tehokkaasti on hän millä osaamistasolla tahansa. • Esteettömyys: Kaikki pystyvät käyttämään tuotetta mukaan lukien vammaiset ja ikääntyvät käyttäjät. • Käyttökokemus: Käyttöön liittyvät tunneaspektit.
Käytettävyys • Käytettävyystestaus on menetelmä, jolla saadaan tuotteen käytöstä monenlaista tietoa. • Käytetään hyvin erilaisten tuotteiden testaamiseen (laitteet, ohjelmat, komponentit, työkalut,jne…) • Käytettävyystestin tarkoitus on tehdä tuotteen käyttölaadusta parempi seuraamalla käyttäjän mentaalimalleja tilanteessa, joka muistuttaa aitoa tilannetta • Käytettävyystestejä käytetään kahdella tavalla: - osana kehitystyötä ja tuotteen käytettävyyden mittarit ennen tuotteen jakoa • Käytettävyystestin tarkoitus riippuu tuotekehityksen vaiheesta • Kehitystestien tarkoituksena on käytettävyydeltään mahdollisimman hyvän käyttöliittymäratkaisun löytäminen. • Hyväksymistestin tarkoituksena on tarkastaa, että tuote täyttää sille asetetut käytettävyysvaatimukset (esim. käyttöliittymän toimivuus suunnitelmiin nähden, käyttöongelmat, tuotteen koulutusnäkökulmat, myyntivalttien etsintä)