Väitöstilaisuus Oulun yliopistossa

Väittelijä

Filosofian maisteri Alireza Haghighatkhah

Tiedekunta ja yksikkö

Oulun yliopiston tutkijakoulu, Tieto- ja sähkötekniikan tiedekunta, Empiirinen ohjelmistotuotanto ohjelmistoissa, järjestelmissä ja palveluissa (M3S)

Oppiaine

Tietojenkäsittelytiede

Väitöstilaisuus

31.1.2020 12:00

Väitöstilaisuuden paikka

Linnanmaa, IT115

Aihe

Testitapausten priorisointi käyttäen ohjelmiston koonnin historiaa ja testietäisyyttä: Menetelmä regressiotestauksen parantamiseen jatkuvan integroinnin ohjelmistokehitysympäristössä autoteollisuudessa

Vastaväittäjä

Professori Per Runeson, Lund University

Kustos

Professori Markku Oivo, Oulun yliopisto

Testitapausten priorisointi käyttäen ohjelmiston koonnin historiaa ja testietäisyyttä: Menetelmä regressiotestauksen parantamiseen jatkuvan integroinnin ohjelmistokehitysympäristössä autoteollisuudessa

Ketterä ohjelmistokehitys tarjoaa kilpailuetua monelle teollisen tuotannon alalle mukaan lukien autoteollisuus. Jatkuva integrointi on ketterän ohjelmistokehityksen käytäntö, jossa muutoksia integroidaan mahdollisimman varhain ja tiheään. Jatkuvan integroinnin ja regressiotestauksen yhdistäminen on hyväksi havaittu käytäntö, koska näin voidaan varmistaa, että viimeisimmät muutokset eivät vaikuta ohjelmiston toiminnallisuuteen haitallisesti. Suuren testisarjan suorittaminen jokaisen integraation (eli koonnin) jälkeen ei ole realistista. Jotta virheitä havaittaisiin aiemmin, testisarjan testitapaukset voidaan permutoida. Tätä kutsutaan testitapausten priorisoinniksi.

Tämä väitöstutkimus pyrkii lyhentämään jatkuvan integroinnin koontisykliä nopeamman virheiden löytämisen avulla, jotta muutokset voidaan integroida ja varmistaa entistä tiheämmin ja jatkuvasti. Tutkimus tehtiin kolmessa vaiheessa. Ensimmäisessä vaiheessa kartoitettiin olemassa oleva tutkimus ja tunnistettiin tarve uudelle tutkimukselle systemaattisella kirjallisuuskatsauksella. Toisessa vaiheessa historia- ja etäisyysperustaista testitapausten priorisointitekniikkaa kehitettiin useamman parannus- ja evaluointi-iteraation kautta. Kolmannessa vaiheessa syntetisoitiin kahden edellisen vaiheen tulokset ja hahmoteltiin johtopäätökset. Tulokset osoittavat, että ei kannata ”laittaa kaikkia munia samaan koriin”. Testaamisen alkuvaiheessa, kun tietoa on vain vähän, tulisi testauksen rajallinen budjetti jakaa mahdollisimman erilaisten testitapausten kesken siten, että testaus kohdistuu järjestelmän eri osa-alueisiin (ts. maksimoidaan testauksen monimuotoisuus mahdollisimman aikaisin). Myöhemmissä vaiheissa, kun koontihistoriaa on saatavilla, tulisi priorisoida niitä testitapauksia, joilla on suurempi arvo historiassa (eli ne testitapaukset, joilla löydettiin eniten virheitä viimeisimmässä versiossa) ja jotka ovat mahdollisimman etäisiä verrattuna niihin testitapauksiin, joita priorisoitiin viimeksi (ts. kattaa ohjelmiston eri osa-alueita).

Tämän väitöksen yksi keskeisimmistä kontribuutioista on testitapauspriorisointitekniikan suunnittelu, toteutus ja kokeellinen evaluointi käyttäen kahdentoista avoimen lähdekoodin Java-ohjelman viallisia koonteja. Kokeellisen tutkimuksen tulokset tukevat kahta aiemmin ehdotettua testitapauspriorisointiheuristiikkaa – virheiden toistuminen ja testien monimuotoisuus – sekä näiden yhdistämistä jatkuvan integroinnin ohjelmistokehityksessä. Lisäksi, systemaattisen kirjallisuuskatsauksen tulos tarjoaa ajantasaisen tietämyksen esitys strukturoidusti ja perustan tulevalle tutkimukselle. Tulimme siihen johtopäätökseen, että testitapausten priorisointi voidaan tehdä pienillä investoinneilla jatkuvan integroinnin ympäristössä hyödyntäen testihistoriaa ja testietäisyyttä.

Väitöskirja

Viimeksi päivitetty: 20.1.2020