Kuva 1. Ohjelmiston turvallisuuden integroimis- ja kehityskaari
Turva-automaation ohjelmisto on koko turvallisen toiminnan aivot. Tämän vuoksi on myös todella tärkeää että ohjelmisto on varmasti toimiva ja täyttää kaikki vaatimukset. Ohjelmistokehityksen eri vaiheissa tarkastellaan ohjelmiston yhtenäisyyttä, vaatimusten täyttämistä ja turvallisuutta. Ohjelmistoa testataan useaan otteeseen eri menetelmillä
Testauksissa käytetään useita eri menetelmiä, analyysejä ja käyttökokemuksia täydentämään ohjelmiston toimivuutta. Myös ohjelmiston laatua tulee tarkastella eri näkökulmista, kuten suunnitteluprosessin ja tuotekohtaisen arvioinnin perusteella.
Ohjelmistoa voidaan testata staattisesti, jolloin arvioidaan ohjelmistoa ilman sen suorittamista. Koodia testataan eri näkökulmista, mm. tiimityönä. Testauksessa hyödynnetään staattisia analysaattoreita, ohjelmistometriikkaa sekä suunnittelu- ja toteutusprosessin arviointimenetelmiä. Dynaamisessa testauksessa suoritetaan ohjelmaa ja verrataan haluttuun lopputulokseen eri vaiheissa. Testejä suorittaessa ohjelmistokehityksen aikana aikaa on rajoitetusti, jolloin suunnittelu ja dokumentointi on tärkeää. Dynaamisen testauksen eri menetelmiä:
- Black box testaus:
- Testataan ohjelmiston vaatimusten toteutumista
- Ohjelmiston toteutus on monimutkaisempi
- White box testaus:
- Testataan ohjelmistototeutusta, eri käskyjä ja polkuja
- Kattavuus pienempi kuin Black box testissä
Tilastollinen testaus on satunnaistestauksen erikoistapaus, jossa käytetään satunnaista testitapausjoukkoa. Testejä suoritetaan satunnaisesti ja kirjataan ylös järjestelmän sisäänmenojen ulostulomäärä. Testien perusteella voidaan määrittää ohjelmiston luotettavuus.
Testien suunnittelu ja raportointi tulee toteuttaa huolella ohjelmistonkehitysvaiheessa. Perinpohjainen testisuunnitelma auttaa kehittämään ohjelmaa ilmi tulleiden virheiden ja poikkeuksien kannalta. Myös raportointi auttaa kehittämään ohjelmaa eri ohjelmistoversioiden toimivuuden kannalta.
Käyttökokemukset ovat testausraportointia parhaimmillaan. Mikäli mahdollista, on ohjelman eri versiot hyvä testauttaa ulkopuolisella testielimellä, joka käyttökokemuksien perusteella voi antaa uusia näkökulmia ohjelmiston rakenteeseen ja toimivuuteen.
Kun ohjelmistokehityksessä ollaan edetty pisteeseen, jossa laitteisto ja ohjelmisto voidaan yhdistää, siirrytään isompiin testeihin, niin sanottuihin integrointitesteihin.
Tehdastestaus
FAT-testi, eli Factory Acceptance Test, on ohjelmiston kokonaisvaltainen testaus asennettavan laitteiston kanssa. Nimensä mukaisesti testissä hyväksytään laitteisto ohjelmistoineen tehtaaseen (tai asiakkaan muuhun ympäristöön) asennettavaksi. FAT-testi on ohjelmiston ensimmäinen varsinainen integrointivaihe muuhun järjestelmään. Testauksessa luotu ohjelmisto liitetään toimitettavaan turvalaitteistoon ja yksityiskohtaisesti varmennetaan jokaisen osa-alueen toimivuus. Testaus tapahtuu yleensä laitteiston toimittajan tiloissa, jolloin lopullista järjestelmää ei voida ottaa testeissä huomioon. Loppulaitteisto tai järjestelmä kuitenkin luodaan simulaation avulla testin tueksi. Testin tarkoitus on todentaa ohjelmiston turvallisuus ohjelmapuolella sekä laitteiston toimivuus ohjelmiston kanssa.
Testissä tulee ottaa huomioon kaikki mahdolliset toimintavirheet, turvallisuuspoikkeamat sekä muut skenaariot, jotka aiheuttavat turva-automaation tilassa muutoksia. Ohjelmistoon luodaan usein erillisiä, lopullisesta ohjelmasta pois jätettäviä osia, joilla luodaan poikkeustilanteita. Myös ulkoisilla kytkimillä tai laitteilla, jotka ovat testijärjestelmään liitettynä, simuloidaan erinäisiä herätteitä ja poikkeamia. Näin saadaan varmistettua koko ohjelmiston kattava testaus, niin pitkälle kuin loppujärjestelmää simuloimalla vaan voi.
Mahdolliset puutteet ja virheet kirjataan ja muutetaan. Mikäli puutteita on useampi ja kaikki vaatimukset eivät täyty, korjataan virheet ja järjestetään uusi FAT-testi.
Laitteistontoimittajan suoritettua testit, on testidokumentit toimitettava valtuutetulle tarkastajalle. Vaihtoehtoisesti myös valtuutettu tarkastaja voi suorittaa kyseiset testit. Tarkastuksen kulku on tarkkaan ennalta määritelty, niin yleisten vaatimuksien kuin asiakkaan toiveiden mukaan.
Validaatiotestaus
SAT-testi, eli Site Acceptance Test, on asiakkaan lopullisessa toimitusympäristössä tapahtuva laitteiston ja ohjelmiston integrointitesti. Testissä tullaan hyväksyttämään koko järjestelmän toimivuus ja yhteensopivuus sekä ennen kaikkea turvallisuusvaatimusten täyttäminen. Toimittajan laitteisto integroidaan asiakkaan järjestelmään ja tämän vuoksi testauksen olisi hyvä suorittaa laitteiston käyttäjät, jotta mahdolliset toimintapuutokset ja -virheet tulisivat normaalikäytössä esiin. Käyttäjät usein myös osaavat tuoda kokemuksen kautta esiin asioita, joita välttämättä ohjelmoija ei ota huomioon.
Ennen testiä laaditaan tarkka suunnitelma, jossa tulee ilmi testauksen eri vaiheet niin normaalikäytössä kuin mahdollisissa vikatiloissa. Laitteiden ja ohjelmistojen keskinäiset ristiriidat tulee huomioida ja muuttaa yhteensopiviksi.
Ohjelmistoa päivittäessä tai muutoksia tehdessä tulee hyväksyttämistesti muutetuilta osa-alueilta suorittaa uudelleen. Testissä varmistetaan uusien osien tai ohjelmien yhteensopivuus vanhan pohjan kanssa. Kaikki mahdolliset eri skenaariot on käytävä läpi, jotta mahdolliset toimintavirheet nousisivat esiin.
Ohjelmiston käyttötestit ja määräaikaishuollot
Ohjelmiston toimivuuden kannalta tulee suorittaa erinäisiä määräaikaistestejä. Laitteiston muutokset, kuluminen ja epänormaali käyttö saattavat vaikuttaa ohjelmiston tilaan. Määräaikaistestejä varten tulee luoda testisuunnitelma, joka suoritetaan säännöllisin väliajoin. Usein myös ohjelmistoon luodaan testiajotila, jolloin voidaan suorittaa erinäisiä toimivuustestejä vaikuttamatta loppulaitteiston tilaan. Kuitenkin loppulaitteisto tulee myös testata, jotta saataisiin kokonaiskuva ohjelmiston toimivuudesta. Yleensä määräaikaistestin suorittavat laitteiston käyttäjät tai henkilökunta, ellei erillistä huoltosopimusta ole kirjoitettu laitteen toimittajan kanssa. Mahdolliset poikkeamat kirjataan ylös ja jatkotoimenpiteet niiden mukaan.
LÄHTEET
http://www.nxtbook.com/nxtbooks/cmp/esd-europe0607/index.php?startpage=32
http://virtual.vtt.fi/virtual/proj3/alarp/aineisto/luento-09-moduuli-02-x4a.pdf
https://jyx.jyu.fi/dspace/bitstream/handle/123456789/24657/Vesa.Vilkman.pdf?sequence=1