ohjelmiston testaus ja laatu -...
TRANSCRIPT
Ohjelmiston testaus ja laatu
Laatu
Määritelmiä
n ohjelmiston laatu = tuotteen kyky täyttää käyttäjänsä kohtuulliset toiveet ja odotuksetq subjektiivinen käsiteq käyttöympäristöstä riippuva
n laatu ei tarkoita huippulaatua, vaan erilaisia mitattavia ominaisuuksia
n tuotteen laatuun vaikutetaan parhaiten toiminnan laadun kauttaq hallittu prosessi à laadukas tuote
n laadunvarmistus = tavoitteena löytää virheitä ajamalla ohjelmaa tietokoneella (sukulaistermejä ovat mm. katselmointi, tarkastus,läpikäynti, laaduntarkastus)
n virhe = jos tuote ei täytä käyttäjänsä kohtuullisia odotuksia, tuote on virheellinen
Laatujärjestelmä - 1
n laatujärjestelmä = yrityksen toimintatapa eli prosessi tuotteen tekemiseksiq laatukäsikirja, ohjeistuksetq ohjelmistoyritysten laatujärjestelmät ovat yleensä väljiä
n tavoite: suunniteltua laatua aikataulun ja budjetin mukaisestiq ei huippulaatua, riittävän hyvää laatua
n todistettavuus ja jäljitettävyysq ulkopuolisen tahon tai sisäisen laadunvarmistuksen kyettävä
varmistamaan, että yritys toimii laatujärjestelmän mukaisestiq todisteita: tarkastuspöytäkirjat, virheraportit...
n laatujärjestelmä on sovellus jostakin laatustandardistan laatujärjestelmän sertifiointi (ISO 9001)
q määrittelee yleisellä tasolla perusasiat, jotka laatujärjestelmän tulee sisältää
Laatujärjestelmä - 2
n sertifiointi = ulkoisen arvioijan tekemä katselmus siitä, että toiminta on laatujärjestelmän mukaistaq sertifiointi ei todista laatujärjestelmän erinomaisuuttaq käytännössä sertifiointi vaaditaan (asiakaspaineet)
n laatujärjestelmämallejaq ISO 9001, CMM, SPICE
n laatujärjestelmän kehittäminen – lähtee aina nykytilastaq edetään pienin askelinq nykyisten toimintatapojen kirjaaminenq toimintatapojen hyvyyden analysointiq toimintatapojen kehittäminen ja muutosten vaikutusten
analysointi
Laadunvarmistus
n laatujärjestelmän olennaisin osan kohdistuu sekä tuotteen että toiminnan
laatuunn tuotteen laatuq vaihetuotteiden laadunvarmistus
n toiminnan laatuq laatujärjestelmän tai sen osien auditoinnitq ulkoinen, sisäinen, asiakas
Laadunvarmistuksen vaiheet - 1
tuottaminentuote
yleiskatsaus
valmistautuminen
tarkastusvirheet
korjaus
seuranta
Laadunvarmistuksen vaiheet - 2n 0) tuote valmistunut
q tekijä ilmoittaa projektipäällikölle tuotteen valmistumisenq valitaan tarkastuksen koordinaattoriq valitaan laaturyhmä ja kutsutaan yleiskatsaukseenq yleiskatsaukseen kopioidaan tuote ja liitteet
n 1) yleiskatsausq koko laaturyhmä osallistuuq tuotteen materiaalit jaetaan ryhmälleq esitellään lyhyt kuvaus tuotteesta
n 2) valmistautuminenq kukin ryhmän jäsen työskentelee itsekseenq huolellinen perehtyminen materiaaliinq tavoitteena ymmärtää tuote, kirjata virheet/puutteetq tarkastuslistan laadinta, positiivinen/negatiivinen kommentti
n 3) tarkastusistuntoq koko laaturyhmäq tavoitteena löytää virheet ja puutteet – ei korjata virheitä, arvioida tuotetta - ei tekijääq koordinaattori vastaa tavoitteiden saavuttamisen, istunnon laadukkuuden/tehokkuudenq istunnon kulku: aloitus – tuotteen läpikäynti – päätös
n 4) korjaaminenq tekijä korjaa virheet
n 5) seurantaq laaturyhmän valitsema henkilö tarkistaa, että virheet on korjattu oikein
Laadunvarmistuskeinoja
n Katselmuksetq Sopimuskatselmuksetq Projektin edistymiskatselmuksetq Lopputuotteeseen liittyvät katselmukset
n Testausn Auditoinnit
q Sisäisetq Ulkoiset
Virheanalyysi – eräs menetelmä laadunvarmistukseen
n ohjelmiston havaitut virheet ja oireet dokumentoidaan
n jokainen virhe analysoidaanq 1. mitä tehtiin väärinq 2. milloin virhe tehtiin ja missä vaiheessaq 3. miksi virhe tehtiin – perimmäinen syyq 4. miksi virhettä ei havaittu aiemminq 5. miten saman virheen teko estetään toistumastaq 6. miten sama virhe löydetään aikaisemmin, jos
se toistuu
Laadunvarmistuksen tavoitteet
n tavoite 1: virheiden estäminenq tarkastus (muodollinen), katselmus (epämuodollinen)q soveltuu kaikille dokumenteilleq tuotteen jäädytys projektin vaiheen katselmuksen jälkeenq paras tapa vähentää lopputuotteen vikoja!
n verifiointi eli todentaminen “Are we building the product right?”n validointi eli kelpoistaminen “Are we building the right product?”
n tavoite 2: virheiden etsiminenq testausq soveltuu vain ohjelmilleq kuuluu elinkaaren toimintoihinq testauksen suorittaminen helppoa, mutta suunnittelu vaikeaa
etenkin reaaliaikajärjestelmissäq automatisoitava
Laadunvarmistus ja projekti
n projektin seurantaq tekniset katselmukset (technical review)q vaiheen tuote käydään läpi ja hyväksytäänq todetaan vaihe päättyneeksi!
n projektin eteneminen saadaan näkyväksin katselmuspisteet välietappeja
Projektin katselmukset ja tarkastukset
Katselmusn Katselmointi/katselmus (review) = käsite, joka voi tarkoittaa esim.
hallinnollista johdon suorittamaa katselmointia tai teknistä katselmointia, jota tehdään tärkeimmissä projektin vaiheissa. Tällöin varmistetaan, että kaikki vaaditut vaiheet ja dokumentit on tehty.
n Tarkastus (inspection) = määritelty prosessi, jossa tarkastettava tuote tarkastetaan tiettyjen sääntöjen ja tarkistuslistojen avulla. (Mitä aikaisemman tarkistus tehdään vaiheen kuvaukseen, sitä tehokkaampaa)
n Läpikäynti (walk-through) = epämuodollinen ohjelmakoodin tarkastuksen muoto, missä tekijä selittää, mitä hän ”luulee ohjelmansa tekevän”
n Vertaiskatselmointi (peer review) = käsite katselmoinnille tai tarkastukselle, joka voi tarkoittaa tarkastusta, läpikäyntiä tai näiden välimuotoa
n katselmukseen piiriin kuuluvat osatq sopimusq määrittelydokumenttiq suunnitteludokumenttiq testaussuunnitelmaq koodiq käyttöohjeetq projektisuunnitelma
n katselmuksilla varmistetaan tuotteen eri vaiheiden henkilöriippumattomuusn katselmoinnin ajallinen kesto oltava lyhyt (esim. 2 tuntia)
Dokumentointi ja laatun ohjelmistotyö on dokumenttien tuottamista!
q dokumentit projektin keskeinen tuotosn dokumentaation vähimmäismäärä
q projektisuunnitelmaq määrittelydokumentti - toiminnallinen määrittely (IEEE830)q suunnitteludokumentti - tekninen määrittely (IEEE1016)q testaussuunnitelma
n hyvätasoisessa laatujärjestelmässä dokumentaatio on huomattavasti laajempi
n dokumentaation ylläpitoq ajallinen ylläpito (versiointi), sisäinen eheys, jäljitettävyys molempiin suuntiin
ja dokumenttien välillän dokumentaation luokittelu
q projektidokumentaatio ja tuotedokumentaatioq projektin aikainen ja projektin tuotos (projektin jälkeen jäävä)q tekninen ja yleinenq yrityksen dokumentaatio ja asiakasdokumentaatio
Garvin (1984) näkökulmat laatuun - 1
n Ihannenäkökulmaq näkee laadun sellaisena, joka voidaan havaita, mutta ei määritelläq pyritään sitä kohden, mutta ei välttämättä päästä
n Käyttäjän näkökulmaq näkee laadun sopivuutena haluttuun tarkoitukseen
n Tuotenäkökulmaq tuotteen sisäisillä laatuindikaattoreilla voidaan kertoa tuotteen
ulkoisesta laadusta, eli miltä tuote tuntuu asiakkaastaq ISO 9126-1 standardin ulkoiset ja sisäiset laatuindikaattorit
n Toiminnallisuus (Functionality)n Luotettavuus (Reliability)n Käytettävyys (Usability)n Tehokkuus (Efficiency)n Ylläpidettävyys (Maintainability)n Siirrettävyys (Portability)n à Missä määrin tiettyjen käyttäjien käyttämä tuote vastaa heidän asettamia
tavoitteita tehokkuuden, tuottavuuden, turvallisuuden, tyytyväisyyden suhteen
Garvin (1984) näkökulmat laatuun - 2
n Rakentamisnäkökulmaq Toimitaan määritellyn prosessin mukaan, ei niinkään tietylle
tuotteelle tehtyjen vaatimusmäärittelyjen mukaan.q kritiikkiä edellisen lauseen perusteella: ”ei tuoteta
välttämättä parasta tuotetta, vaan rutiiniluontoisesti käypä, joskus jopa huono tuote”
q Prosessin jatkuva parantaminen vaatii kohteen (prosessin) mittausta
n Arvonäkökulmaq näkee laadun rahana, jonka asiakas on valmis sijoittamaan
siihenq arvonäkökulman mukaisesti voidaan myös tehdä valintoja
hyötyjen, kustannusten ja laadun suhteenq asiakas voi hyväksyä käyttöönsä ”keskeneräisen” tuotteen,
jos sen tarjoamat uudet ominaisuudet ovat riittävän houkuttelevia
Ohjelmiston laatuongelmien aiheuttajian Ongelmat asiakkaan ja kehittäjän välisessä viestinnässä n Vaatimusmäärittelyjen virheet
q virheelliset, puutteelliset, ylimääräiset ominaisuudetn Poikkeamat vaatimuksista
q ohjelmistomoduulien uudelleenkäyttö, ajanpuutteesta johtuvat toteuttamattomat osat, kehittäjän omat lisäykset
n Suunnitteluvirheetq virheelliset algoritmit, prosessin virheet, järjestelmän tilan puuttuvat tarkastukset,
virhetilanteiden puuttuva käsittely n Koodausvirheetn Dokumentointiohjeista ja koodausohjeista poikkeaminen
q kehitystiimi saa puutteelliset kommentitn Testausprosessin puutteet
q testisuunnitelmat puutteelliset, havaittujen virheiden raportointi puutteellinen, virheen aiheuttaja epäselvä à ongelmia virheen korjaamiseen, korjaamiseen varattu aikaa liianvähän
n Dokumentointivirheetq toimintojen kuvaus puutteellinen, esitellään ylimääräisiä toimintoja, virheet
käyttöohjeissan Käyttöönottovaiheen ongelmat
q puutteellinen opastus, ympäristön puutteellisuudet, puutteellinen ylläpito
Tietojärjestelmän laatu
n oikea tuoteq oikeat tiedot ja palvelutq oikea käyttöliittymäq oikea luotettavuusq oikea ylläpidettävyys
n oikeaan aikaanq oikeat työmääräarviotq oikea aikatauluq oikea projektinhallinta
n oikeaan hintaanq oikeat työmääräarviotq oikea projektinohjausq oikea testattavuusq oikea ylläpidettävyysq oikeat määrittelyt
n laadun tasotq pohjana ”Täytyy olla” -laatuq kuorrutuksena ”Houkutteleva”
-laatu
Korjauskustannukset – arvio
n ”teoreemoja”q mitä aikaisemmin virhe tehdään, sitä myöhemmin se havaitaanq mitä myöhemmin virhe havaitaan, sitä kalliimpaa on sen korjaaminenq mitä myöhemmin virhe korjataan, sitä todennäköisempää on sen
korjaaminen väärin
x
30x
90x
270x
tarvemäärittely
toiminnallinen määrittely
tekninen suunnittelu
ohjelmointi moduulitestaus
integrointitestaus
järjestelmätestaus
käyttö
Mietittäväksi1. terveydenhoito
virheiden ennaltaehkäiseminen oikeilla työtavoilla – ennen ohjelmointia
2. terveystarkastuksetvirheiden etsiminen ja korjaaminen ennen ohjelmointia
3. sairaanhoitovirheiden etsiminen ja korjaaminen testausvaiheessa
4. ensiapuvirheiden korjaaminen käytönaikana
kustannusvaikutus
Laadun päälajit
n Tuotelaatu q liittyy kehitettävään ohjelmistotuotteeseen
n Resurssilaatuq liittyy ohjelmiston kehittäjiin
n Prosessilaatuq liittyy kehitysprosessiin
n Objektiivinen laatuq suoraan mitattavissa oleva (tekninen) laatu
n Subjektiivinen laatuq eri käyttäjien kokema laatu
Laadun alalajit - 1
n 1) Mitattavuusq Tuotosten, prosessin ja henkilöstön ominaisuuksien mitattavuus
(esim. laskemalla, keräämällä ja tallentamalla systemaattisesti mittaustietoja)
q Objektiiviset (esim. palkkataso) tai subjektiiviset määreet (esim. motivaatiotaso)
n 2) Toteutettavuusq Toteutettavuus nykyteknologialla tai tulevalla teknologialla (esim.
soveltuvuustutkimus, tekninen analyysi)n 3) Varmennettavuus
q Todennettavuus (esim. käyttäen formaaleja menetelmiä ja matemaattista todennusta)
q Testattavuus (esim. välttäen sellaisten kehitysratkaisujen käyttöä, jotka vähentävät mahdollisuutta käyttää tehokkaita testauksen apuvälineitä)
Laadun alalajit - 2
n 4) Tehokkuus (tuotteen)q Suorituskyky, nopeus (tarkoitukseen sopivan ohjelmointikielen käyttö,
mahdollisesti kriittisten osien toteuttaminen käyttäen assembleria)q Muistitilan ja muiden resurssien tehokas käyttöq Vasteaikavaatimusten täyttäminenq Ajoitustarkkuusq Korkea käyttöaste
n 5) Virheettömyys (tuotteen)q Loogisten virheiden vähäinen määräq Syntaktisten virheiden vähäinen määrä (syntaksin huomioivan editorin
käyttö)q Suunnitteluvirheiden vähäinen määräq Ohjelmointivirheiden vähäinen määrä (käyttäjäpalaute)q Ohjelman vakiotoiminta vakiosyötteelläq Virheettömyys julkistuksen aikana ja ”pitkässä juoksussa”q Laskennallinen tarkkuusq Toimintojen ajoituksien tarkkuus
Laadun alalajit - 3
n 6) Luotettavuusq Vakaus, toimintavarmuus, käyttövarmuus q Turvallisuus erityisesti kriittisissä tilanteissaq Vikasietoisuus, poikkeustilanteiden hallittu käsittelyq Toipumiskyky virhetilanteistaq Tietosuojan huomiointitaso
n 7) Käytettävyysq Käytön oppimisen helppous (dokumentaatio, koulutus)q Helppokäyttöisyys (huomioiden käyttäjäryhmän taitotason)q Subjektiivinen käyttötyytyväisyysq Toimintojen ennakoitavuus ja yhdenmukaisuus
n 8) Ymmärrettävyysq Lähdekoodin ja dokumenttien luettavuus ja tulkittavuusq Hyvän ohjelmointityylin noudattamisasteq Jäljitettävyys, “läpinäkyvyys”q Järjestelmän toimintatavan ymmärrettävyys ja sen tuki
Laadun alalajit - 4
n 9) Dokumentoinnin riittävyysq Käyttäjädokumenttien laatuq Teknisten raporttien ja referenssimanuaalien laatuq Lähdekoodin kommentoinnin yhdenmukaisuus, kattavuus ja oikea
kohdentuminenn 10 ) Ylläpidettävyys
q Joustavuus, muunnettavuus, muokattavuus, päivitettävyys, varioitavuus, “räätälöitävyys” (esim. panostamalla ehkäisevään ylläpitoon, spekulatiivinen suunnittelu, parametrointi, geneerisyys, redundanssin välttäminen)
q Lähdekoodin käytettävyys (käyttöoikeuksien varmistaminen)q Tarvittavien kehitysvälineiden (kääntäjät) käytettävyys pitkällä tähtäimellä
n 11) Standardinmukaisuusq Yleinen asianmukaisten vakiintuneiden menetelmien, kielten, rajapintojen
jne. käyttöq “Kohdealueen sääntöjen” noudattaminen (esim. ohjelmointityylit)q Lainsäädännön asettamien rajoitteiden (esim. henkilötietojen tallentaminen)
huomiointi suunnitelmallisuus ja järjestelmällisyys
Laadun alalajit - 5
n 12) Uudelleenkäytettävyysq Uudelleenkäytettävyys eri tasoilla: ohjelmat, funktiot, moduulit, komponentit,
suunnitelmat, data (esim. oliolähestymistavan, suunnittelumallien, uudelleenkäytettävien komponenttien ja sovelluskehysten käyttö).
q Yleiskäyttöisyys, monipuolisuus, geneerisyysq Yhteenliitettävyys, yhteensopivuusq Laajennettavuus, skaalautuvuus (käsiteltävät tietomäärät, käsiteltävät tietotyypit,
käyttäjien määrä, jne.)q Siirrettävyys eri ohjelmointikielille, käyttöjärjestelmiin, laitealustoille jne.
n 13) Toiminnallisten tuotevaatimusten täyttöasteq Vaatimusten täytön kattavuusq Toiminnallisuuksien oikea kohdentuminen, tarkoituksenmukaisuusq Soveltuvuus käyttötarkoitukseen
n 14) Kustannustehokkuusq Tuotteen hinnan sopivuus (käyttäjätutkimukset)q Projektin aikataulun pitävyysq Yleinen resurssien käytön tehokkuus/tarkoituksenmukaisuusq Mahdollinen saavutettava kilpailuetu (markkina-analyysit)
Laadun alalajit - 6
n 15) Tekninen laatuq Yksinkertaisuus, suoraviivaisuus (ei tarpeetonta
kompleksisuutta, joka ei johdu ongelmasta)q Tyylillinen yhdenmukaisuus (vähän “kirjavuutta” loogisten
osien sisällä)q Rakenteisuus, hierarkkisuus, asianmukainen osittaminen
(esim. modularisointi)q Tiedon kapselointiaste (esim. oliolähestymistapa)q Rajapintojen käyttöasteq Korkean tason rakenteellisten osien (moduulit tms.)
välisten kytkentöjen suhteellinen vähäinen määräq Abstraktioiden hyödyntäminenq Suunnittelu tai toteutustekninen laatu
Ohjelmistotuotteen laatukriteerit - 1n ISO 9126
q toiminnallisuusn Löytyykö ohjelmistosta siltä vaaditut toiminnot?n Sopivuus (Suitability)
q Miten hyvin toiminnot täyttävät niille määritellyt tehtävät?n Tarkkuus (Accurateness)
q Onko tulosten tarkkuus sovitulla tasolla?n Yhteensopivuus (Interoperability)
q Ohjelmiston kyvykkyys toimia muiden järjestelmien kanssan Mukautuvuus (Compliance)
q Ohjelmiston kyky noudattaa sovellusalueeseen liittyviä standardeja, sopimuksia tai lainsäädäntöä
n Turvallisuus (Security)q Miten ohjelmisto hoitaa tietoturva-asiat?
q tehokkuusn Kuinka tehokas ohjelmisto on?n Ajankäyttö (time behavior)
q Ohjelmiston vaste- ja suoritusajatn Resurssien käyttö (resource behavior)
q Miten ohjelmisto varaa ja käyttää resursseja?
Ohjelmistotuotteen laatukriteerit - 2n ISO 9126
q ylläpidettävyysn Kuinka helposti ohjelmistoa voi muuttaa ?n Analysoitavuus
q Kuinka voit paikallistaa muutoksen vaikutuksen?n Muunneltavuus
q Kuinka helposti voit muuttaa tai korjata ohjelmistoa? q Miten voit muokata ohjelmistoympäristöä?
n Stabiilisuusq Miten ohjelmisto kestää muutosten aiheuttamat yllättävät vaikutukset?
n Testattavuusq Miten muutetun ohjelmiston toimivuus voidaan testata?
q siirrettävyysn Miten helposti ohjelmiston voi siirtää toiseen ympäristöön?n Mukautuvuus
q Millä toimilla ohjelmisto saadaan siirrettyä toiseen toimintaympäristöön?n Asennettavuus
q Miten ohjelmisto asennetaan määriteltyyn ympäristöön?n Yhteensopivuus
q Miten ohjelmisto noudattaa siirrettävyyteen liittyviä standardeja ja sopimuksia?n Korvattavuus
q Millä toimenpiteillä ohjelmisto voi korvata toisen ennalta määritellyn
Ohjelmistotuotteen laatukriteerit - 3
n ISO 9126q käytettävyys
n Miten helppokäyttöinen ohjelmisto on?n Ymmärrettävyys
q Ohjelmiston toimintojen loogisuus käyttäjän näkökulmastan Opittavuus
q Miten helppoa ohjelman käytön oppiminen on käyttäjälle?n Käyttökelpoisuus
q Miten hyvin ohjelmisto sopii käyttäjän työhön?q luotettavuus
n Kuinka luotettava ohjelmisto on?n Ohjelmiston kypsyys
q Miten usein ohjelmistovirheet aiheuttavat häiriötilanteen?n Vikasietoisuus
q Ohjelmiston kyky sietää virhetilanteitan Palautumiskyky
q Miten ohjelmisto palautuu häiriötilanteesta?