Ohjelmistojen virheistä Muutama sana ohjelmistojen virheistä mistä niitä syntyy? Matti Vuori, www.mattivuori.net 2013-09-02 1(8)
Sisällysluettelo Ohjelmistojen virheitä: varautumattomuus ongelmiin 3 Ohjelmistojen virheitä: viat, "bugit" 4 Vikojen esiintymiseen vaikuttavia asioita projekteissa 5 Vian ja virheen ero 6
Ohjelmistojen virheiden syistä: varautumattomuus ongelmiin Nettiyhteys katkeaa Levytila täyttyy Tiedostoa ei löydy Häiriöt Ohjelmiston väärinkäyttö Väärä tarkoitus Käyttäjän tavat toimia Erilaiset käyttäjät Virhesyötteet Kirjoitusvirheet Väärinkäsitykset Puuttuva data Varautumattomuus Sabotaasi Käyttöympäristö Sisäiset hyökkäykset Ulkoiset hyökkäykset Murtautuminen Denial of service 3(8)
Ohjelmistojen virheiden lähteitä Väärä tiedonlähde (PO asiakkaan sijaan) Tieto muuttuu matkan varrella Erilainen konteksti Vanhaa tietoa Erilaiset laiteympäristöt Käyttöjärjestelmä Käyttäjän oikeudet Asennustapa Muut ohjelmistot / "DLL hell" Päivitykset Väärät käsitykset halutusta toiminnasta Ympäristötekijät Kääntäjien yms. viat Lähdekoodi kunnossa, mutta syntyy viallista konekoodia Puuttuva dokumentointi Väärät dokumentit Virheelliset dokumentit Ei-yksikäsitteiset dokumentit Epäselvät dokumentit Dokumentit eivät ajantasalla Virheet (bugit) Väärä käännösyksikkö Versionhallinta Konfiguraationhallinta Muutokset muussa ohjelmistossa Toteutusvirheet Huonolaatuiset moduulit Emo-ohjelman muutos (selain rikkoon pluginit) Muutoksenhallinta Muut moduulit Epäsopivat algoritmit Koodausvirheet Konfigurointivirheet Resurssien virheet Toisen tekemät muutokset Kolmansien osapuolten moduuleissa piileviä vikoja tai yhteensopimattomuuksia 4(8)
Vikojen esiintymiseen vaikuttavia asioita projekteissa Virheet ovat inhimillisiä. Ohjelmistot ovat erittäin kompleksisia. Ohjelmistot toimivat monimutkaisessa järjestelmässä, jonka kaikkia vuorovaikutuksia ei voida ennustaa luotettavasti. Järjestelmät ja teknologiat eivät aina toimi niin kuin on dokumentoitu. Myös ulkoiset häiriöt tuottavat virheitä laitteiston toiminnassa: säteily, magnetismi, sähkökentät, kemialliset ilmiöt, saasteet jne. Aikapaineet tuottavat ongelmia. Laatukulttuuri laadun tekeminen, vastuu omista tuotoksista. 5(8)
Vian ja virheen ero 1/3 Ohjelmiston ja järjestelmän tason ongelmat Vikaantuminen (failure, malfunction): Poikkeama tarkoitetusta/määritellystä oikeasta toiminnasta. "The command failed", "There has been a system malfunction". Häiriö on failuren arkisempi termi, joka kuvaa vikaantumista lievempiä ilmiöitä. Järjestelmässä on nähtävissä jokin ei-toivottu tapahtuma, joka johtuu sen viasta. Vika (defect, fault): Sellainen laitteen tai ohjelman tila, joka voi johtaa vikaantumiseen. ISTQB:n materiaaleissa puhutaan vikojen yhteydessä hyvin usein defecteistä. 6(8)
Vian ja virheen ero 2/3 Virhe (error): Laitteen tai ohjelman (moduulin) tuottama väärä vaste. Virhe indikoi että moduulissa on vika, moduuli on saanut virheellisen syötteen tai sitä on käytetty väärin. Johtaa vikaantumiseen, ellei systeemi siedä kyseistä vikaa. Vika voi olla olemassa ilman, että virheitä sattuu. => Tämän vuoksi testauksessa etsitään lopulta "vikoja". Ohjelmoija tekee koodausvirheen Ohjelmassa on vika Ohjelma / moduuli toimii virheellisesti, siinä ilmenee virhe Järjestelmä vikaantuu, ei toimi 7(8)
Vian ja virheen ero 3/3 Bugi (bug) on yleensä vian synonyymi. Koska ohjelmassa on vika (bugi), se toimii väärin (siinä ilmenee virhe) ja se ei siksi toimi oikein, vaan jopa kaatuu, mikä on selkeä vikaantumisen muoto. Insidenssi (incident). Yleisempi termi erilaisille negatiivisille havainnoille, poikkeamille, oletetuille virheille. ISTQB-dokumentit soveltavat paljon tätä termiä. Anomalia (anomaly). IEEE-standardien käyttämä yleistermi erilaisille havaituille poikkeamille. 8(8)