VHDL-ohjelman testaaminen geneettisellä algoritmilla
Laasanen, Juhani (2023)
Laasanen, Juhani
2023
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi-fe2023042839545
https://urn.fi/URN:NBN:fi-fe2023042839545
Tiivistelmä
Tämä diplomityö käsittelee geneettisten algoritmien soveltamista ohjelmistotestauksessa. Työn tavoitteena oli tuottaa VHDL-ohjelman testaukseen testitapauksia ja tutkia geneettisen algoritmin soveltuvuutta testitapauksien tuottamisessa Intelin SoC FPGA -ympäristössä.
Geneettisen algoritmin soveltuvuus ohjelmistotestaukseen riippuu pitkälti siitä, mitä halutaan testata ja millä laajuudella. Työssä pohdittiin eri testausvaihtoehtoja ja niiden käyttämistä SoC FPGA:ssa. Tutkimukseen valittiin haarakattavuusmenetelmä, sillä se on riittävän kattava luotettavan testaustuloksen saamiseksi. Tässä työssä geneettisen algoritmin tehtävänä oli etsiä minimimäärä testitapauksia, joilla ohjelman kaikki haarat saatiin käytyä läpi. Lisäksi haarakattavuusmenetelmässä testitapauksen kulkua ohjelmassa on yksinkertainen seurata ja siitä saatiin helposti palaute geneettisen algoritmin hyvyysfunktioon.
Työssä ohjelmoitiin C-kielellä geneettinen algoritmi, jolla voidaan testata erinäisiä VHDL-prosesseja alustan logiikkapuolella. Työssä testattiin viittä eri ohjelmaa sekä geneettisellä algoritmilla että satunnaisgeneraattorilla. Molempien tulosten tutkimisen jälkeen havaittiin, että useimmissa testattavissa ohjelmissa geneettinen algoritmi löysi pienellä vaivalla minimimäärän testitapauksia, joilla kaikki haarat saatiin käytyä läpi. Esimerkiksi viidennessä testattavassa ohjelmassa satunnaisgeneraattorin tulokset vaihtelivat 27:n ja 93:n testitapauksen välillä. Samassa tapauksessa geneettinen algoritmi löysi aina minimimäärän eli viisi testitapausta. Poikkeuksena geneettisen algoritmin tehokkuudelle oli yksinkertaisin testattava ohjelma, jossa haaroja oli melko pieni määrä ja kromosomin pituus pieni, jolloin algoritmi joskus juuttui lokaaliin maksimiin. Satunnaisgeneraattorin tulokset vaihtelivat kolmen ja kuuden välillä, kun geneettinen algoritmi sai tuloksiksi vaihtelevasti kaksi ja kolme testitapausta.
Geneettisen algoritmin soveltuvuus ohjelmistotestaukseen riippuu pitkälti siitä, mitä halutaan testata ja millä laajuudella. Työssä pohdittiin eri testausvaihtoehtoja ja niiden käyttämistä SoC FPGA:ssa. Tutkimukseen valittiin haarakattavuusmenetelmä, sillä se on riittävän kattava luotettavan testaustuloksen saamiseksi. Tässä työssä geneettisen algoritmin tehtävänä oli etsiä minimimäärä testitapauksia, joilla ohjelman kaikki haarat saatiin käytyä läpi. Lisäksi haarakattavuusmenetelmässä testitapauksen kulkua ohjelmassa on yksinkertainen seurata ja siitä saatiin helposti palaute geneettisen algoritmin hyvyysfunktioon.
Työssä ohjelmoitiin C-kielellä geneettinen algoritmi, jolla voidaan testata erinäisiä VHDL-prosesseja alustan logiikkapuolella. Työssä testattiin viittä eri ohjelmaa sekä geneettisellä algoritmilla että satunnaisgeneraattorilla. Molempien tulosten tutkimisen jälkeen havaittiin, että useimmissa testattavissa ohjelmissa geneettinen algoritmi löysi pienellä vaivalla minimimäärän testitapauksia, joilla kaikki haarat saatiin käytyä läpi. Esimerkiksi viidennessä testattavassa ohjelmassa satunnaisgeneraattorin tulokset vaihtelivat 27:n ja 93:n testitapauksen välillä. Samassa tapauksessa geneettinen algoritmi löysi aina minimimäärän eli viisi testitapausta. Poikkeuksena geneettisen algoritmin tehokkuudelle oli yksinkertaisin testattava ohjelma, jossa haaroja oli melko pieni määrä ja kromosomin pituus pieni, jolloin algoritmi joskus juuttui lokaaliin maksimiin. Satunnaisgeneraattorin tulokset vaihtelivat kolmen ja kuuden välillä, kun geneettinen algoritmi sai tuloksiksi vaihtelevasti kaksi ja kolme testitapausta.