200 likes | 345 Views
Ohjelmistotekniikka ja projektinhallinta, 4 op. OHJELMISTON Testaus ja laatu Seppo Räsänen Savonia-ammattikorkeakoulu Terveysala, kuopio 18.8.2008. Ohjelmiston testaus ja laatu….
E N D
Ohjelmistotekniikka ja projektinhallinta, 4 op OHJELMISTON Testaus ja laatu Seppo Räsänen Savonia-ammattikorkeakoulu Terveysala, kuopio 18.8.2008
Ohjelmiston testaus ja laatu… • Testaus on systemaattinen lähestymistapa ohjelmistoissa esiintyvien virheiden löytämiseksi ohjelmaa suorittamalla. • Testattaessa pyritään luomaan kattavia testitapausjoukkoja ja löytämään menetelmiä, joilla ohjelmissa esiintyvät virheet saadaan selvitettyä taloudellisesti ja ohjelman toiminta mahdollisimman luotettavaksi. • Ohjelmien testauksen kokonaisuuden hallintaan on tehty erilaisia apuvälineitä: testaustyökaluja ja testausprosessin hallintaohjelmistoja. • Testauksen tarkoituksena periaatteessa on osoittaa, että ohjelma toimii tai toisin päin, että ohjelma ei toimi, kuten sen pitäisi.
Ohjelmiston testaus ja laatu… • 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ä?
Ohjelmiston testaus ja laatu… • virhe • Havaittu eroavaisuus ohjelmiston toiminnassa ja sille tuotetuissa määrityksissä. • Virheet voidaan jakaa kääntäjän kannalta katsoen käännöksenaikaisiin (syntaksinen virhe), ajon-aikaisiin (semanttinen virhe) ja loogisiin virheisiin. • 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
Ohjelmiston testaus ja laatu… • virheidenpoisto l. debuggaus • Prosessi, jonka tarkoituksena on löytää ja poistaa virheiden syitä ja aiheuttajia ohjelmakoodista. • 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ä. • Ohjelmakoodin tarkastelu manuaalisesti tapahtuu koodin tarkastuksessa (inspection), katselmuksessa (review) ja läpikäyntitilaisuuksissa (walkthrough) tai ohjelmoijan itse suorittamissa pöytätestauksissa (desk checking)
Ohjelmiston testaus ja laatu… • esimerkkejä staattisesta testauksesta • funktiokutsussa parametrien tyypit • parametrien käyttö (esim. parametrien väärä lukumäärä) • funktion paluuarvon tyyppi • samannimiset muuttujat/muuttujan uudelleen määrittely • onko ohjelmakoodia, jota ei suoriteta koskaan • käytetäänkö esiteltyä muuttujaa • onko muuttujaa esitelty ennen käyttöä • käytetäänkö esiteltyä funktiota • muuttujaan sijoitettavan arvon tyyppi • osoittimien ja indeksien käyttö (esim. viittaukset määriteltyjen rajojen ulkopuolelle)
Ohjelmiston testaus ja laatu… • 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
Ohjelmiston testaus ja laatu… 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
Ohjelmiston testaus ja laatu… • 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
Ohjelmiston testaus ja laatu… • 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
Ohjelmiston testaus ja laatu… • 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
Ohjelmiston testaus ja laatu… • Testausmenetelmiä… • 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 • toimintopolut, kaikkien toimintopolkujen täydellinen läpikäynti
Ohjelmiston testaus ja laatu… • white-box (l. glass-box l clear box l. 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 • pyrkimys mahdollisimman kattaviin testituloksiin • mahdollisimman täydelliseen lausekattavuuteen = testitapauksien tulisi käydä jokainen järjestelmän sisäisen rakenteen haara läpi • Cs = Se / St * 100% missä Cs on lausekattavuus prosentteina, Se on suorittujen lauseiden määrä testitapauksessa, St on suoritettavien lauseiden kokonaismäärä • testauskohteita ovat ohjelman ohjausrakenteet ja niiden kombinaatiot • lauseet, lausekattavuus: kaikki lauseet suoritettava vähintään kerran • silmukat, jokaiselle silmukalle suoritetaan testi, jossa toisto suoritetaan: • nolla kertaa • yhden kerran • maksimiarvo kertaa • jokin arvo väliltä 0 – maksimi kertaa • suorituspolut, kaikki suorituspolut tulee suorittaa kerran
Ohjelmiston testaus ja laatu… • 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ä • hyviä testitapauksia ovat esim: • rakenteelliset raja-arvot • alivuoto • ylivuoto • nollalla jaot • pyöristykset • alku, loppu (esim. kuukausi) • jne…
Ohjelmiston testaus ja laatu… yleistestaus- suunnitelma • Testauksen dokumentointi moduulitestaus- suunnitelmat testi ympäristön luonti testitapausten kuvaus testausraportti testin suoritus testilogi
Ohjelmiston testaus ja laatu… • Käytettävyystestaus… • 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ää.
Ohjelmiston testaus ja laatu… • 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?
Ohjelmiston testaus ja laatu… • Muita käytettävyyteen liitettyjä ominaisuuksia ovat mm: johdonmukaisuus, hallittavuus, tehtäviin sopiva esitystapa, pieni muistettavien asioiden määrä ja joustavuus (johdettavissa tehokkuudesta) • 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.
Ohjelmiston testaus ja laatu… • Testivaiheet • suunnitellaan yleensä käytettävyystesti • päämäärät, osallistujat, tehtävien valinnat, käytettävyysmittari, testitiimin valmistelu, pilotin valmistelu • suunnitellaan todellinen käyttötilanne • kaikkia toimintoja ei voi testata, testataan kohdat joissa voi olla ongelmia ja/tai kohdat jotka ovat sovelluksen kannalta tärkeitä/oleellisia • tehdään pilottitestaus korjataan tarvittavat kohdat tulevasta testistä • valitaan koekäyttäjät, jotka tekevät lopullisen testin • koekäyttäjät tekevät tehtävän mukaisia toimintoja, nauhoitus • testikäyttäjät kuvaavat koko ajan omaa toimintaansa • testin jälkeen kerätty tieto (esim. videointi, äänittäminen, testaajien raportit) analysoidaan • määritellään käyttöliittymässä olevat ongelmat • korjataan tarvittavat kohdat
Ohjelmiston testaus ja laatu… • Kysymyksiä • Kommentteja