Ajoneuvojen mittausjärjestelmän toiminnallinen ohjelmistotestaus
Karhula, Veli-Matti (2022)
Karhula, Veli-Matti
2022
Tietotekniikan DI-ohjelma - Master's Programme in Information Technology
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2022-10-27
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202209267255
https://urn.fi/URN:NBN:fi:tuni-202209267255
Tiivistelmä
Jatkuva ohjelmistotestaus on tärkeä osa nykyistä ketterää ohjelmistokehitystä ja sen toteuttaminen yksikkötestaustasolla on hyvin tunnettu prosessi. Kokonaisen numeerisen mittausjärjestelmän tulosten ja mittauslaadun testaus on kuitenkin huomattavasti vähemmän tunnettu prosessi ja sisältää paljon tilannekohtaista soveltamista.
Visy Oy:n kehittämä Visy Measurement Portal -mittausportaali mittaa sen läpi ajavien ajoneuvojen nopeutta, pituutta, leveyttä ja korkeutta laserskannerien avulla. Tämänkaltaisen järjestelmän testaamiseen liittyy monenlaisia haasteita. Testidataa ei voida generoida vaivatta, eikä mittaustulos ole aina yksiselitteisen oikein tai väärin. Lisäksi ohjelmisto toimii reaaliaikaisesti useamman rinnakkaisen datalähteen pohjalta, eikä tulos ole kokonaan deterministinen näiden lähteiden epäsynkronoidun toteutuksen vuoksi.
Tämän diplomityön päätavoitteena on vastata kysymykseen: Miten kehittää automatisoitu testausjärjestelmä epädeterministiselle mittausdataa tuottavalle ohjelmistolle? Järjestelmän tulisi varmentaa ohjelman mittauslaadun säilyminen edellisiin ohjelmistoversioihin verrattuna ja taata laatukriteerien täyttyminen mittausolosuhteista ja -kohteista riippumatta.
Testijärjestelmän kehittämiseen liittyi useampia haastavia yksityiskohtia. Visy Measurement Portal on suunniteltu toimimaan osana kokonaisuutta muiden ohjelmistojen ja skannerilaitteiden kanssa, joten sen testausrajapintojen muodostaminen vaatii huomattavaa harkintaa. Mittausjärjestelmän ympärille oli muodostettava testausjärjestelmä, joka kykenee jäjittelemään oikean mittaustilanteen asetelmaa mahdollisimman tarkasti niin skannerien toiminnan kuin muiden ohjelmistojen lähettämän kommunikaationkin osalta.
Testirajapintojen lisäksi erityisenä haasteena oli muodostaa sääntöjä, joilla testien mittaustulokset voidaan hyväksyä tai hylätä. Tämä prosessi tunnetaan testioraakkelien muodostamisena. Usein oraakkelja voidaan yrittää etsiä ohjelmiston dokumentaation tai spesifikaation pohjalta, mutta tämän diplomityön kohteessa oraakkelien muodostamiselle ei ollut yhtä selkeää ja yksiselitteistä lähtökohtaa. Epädeterministisen järjestelmän vuoksi yksittäisen testiajon tulos ei myöskään aina ollut riittävä peruste tuloksen hyväksymiselle tai hylkäämiselle, vaan mittausjärjestelmän toimintaa oli arvioitava useiden mittauskertojen aikana saatujen tulosten jakaumien, raja-arvojen ja keskiarvojen valossa.
Muun toiminnallisuuden lisäksi testijärjestelmän tuli toimia pystyä toimimaan osana Visy Oy:n ketterän kehityksen periaatteita noudattavaa automasioitua kehitysympäristöä, jossa jokainen uusi ohjelmistoversio läpäisee halut testit ja täyttää asetetut laatuvaatimukset.
Diplomityössä muodostettiin ja dokumentoitiin testijärjestelmä, joka syöttää testidatan Visy Measurement Portal-järjestelmään, vastaanottaa ja tallentaa siltä saadut tulokset ja tämän jälkeen arvioi mittaustulosten oikeellisuutta ja laatua. Koko testijärjestelmä liitetään osaksi Visy Oy:n ketterää kehitysprosessia ja sille asetetaan testimateriaalin pohjalta laatukriteerit. Tehtyjen havaintojen perusteella voidaan muodostaa arvio eri testioraakkelien käyttökelpoisuudesta.
Testijärjestelmä toteutettiin yhdistelmällä C++, Python ja PowerShell-kieliä. Niiden avulla muodostettiin testiympäristö, joka käyttää Python-kielen PyTest-testikirjastoa lopullisten testien suorittamiseen ja raportointiin. Lopullinen järjestelmä täytti työlle asetetut minimivaatimukset, mutta myös hienosäädölle ja jatkokehitykselle jäi huomattavasti tilaa. The continuous software testing is an essential part of modern agile software development and there are well established practices on how to implement testing on unit testing level. However, developing a test system for a whole numeric measurement system is much less documented process and requires flexibility and context specific solutions.
Visy Oy’s Visy Measurement Portal is a measurement system designed to measure length, height, width, and speed of vehicles driving through it. Testing software of such system has many challenges. The test data availability is limited and the correct solution for the given data isn’t always obvious or easily determined. The existing measurement system also operates concurrently with multiple data streams and has indeterministic results depending on timing and order of the data received.
This thesis aims to answer the question of how a testing system can be created for a nondeterministic measurement system? The testing system had to ensure that the system under test retains its measurement quality both when compared to its former versions and when specified with quality and precision requirements.
The development of the test system had multitude of interesting challenges. There was not any pre-existing or predesigned test interface for the software and determining one required careful planning. The test environment had to encompass the system under test and provide it with both the scanner input and communication from other software operating together with the measurement system itself.
Another challenging aspect of testing environment was establishing the rules that decide how to pass or fail the tests. Such rules – known as software testing oracles – are in many cases based on documentation or software specification. The test system at hand, however, didn’t have any readily available resources to guide in generating the oracles and they had to be derived from other sources. The indeterministic nature of the system also required the tests to not only accept a single result, but to operate on probability distributions, numeric bounds and means of results from multiple runs on the input data.
In addition to the other requirements, the test system also needed to act as a part of Visy Oy’s agile development principles and its automated software development pipeline. Every new version of the software had to pass both the comparison to older versions and also to static quality requirements expected from the system.
In this thesis we develop and document the test system that inputs the test data, observes and records the measurement system’s responses it, and then finally analyzes the data and either accepts or disqualifies the test results. We also integrate the test system into the Visy Oy’s continuous development pipeline. In addition, we will test various kind of test oracles and estimate their effectiveness in testing the system.
The test system was implemented as a combination of C++, Python and PowerShell languages. The final implementation utilizes PyTest Python framework to pass or fail the tests and to further generate formulated reports of the performed test suite. The implemented test system fulfills the minimum requirements for the system but also leaves a lot of room for refinement and further development.
Visy Oy:n kehittämä Visy Measurement Portal -mittausportaali mittaa sen läpi ajavien ajoneuvojen nopeutta, pituutta, leveyttä ja korkeutta laserskannerien avulla. Tämänkaltaisen järjestelmän testaamiseen liittyy monenlaisia haasteita. Testidataa ei voida generoida vaivatta, eikä mittaustulos ole aina yksiselitteisen oikein tai väärin. Lisäksi ohjelmisto toimii reaaliaikaisesti useamman rinnakkaisen datalähteen pohjalta, eikä tulos ole kokonaan deterministinen näiden lähteiden epäsynkronoidun toteutuksen vuoksi.
Tämän diplomityön päätavoitteena on vastata kysymykseen: Miten kehittää automatisoitu testausjärjestelmä epädeterministiselle mittausdataa tuottavalle ohjelmistolle? Järjestelmän tulisi varmentaa ohjelman mittauslaadun säilyminen edellisiin ohjelmistoversioihin verrattuna ja taata laatukriteerien täyttyminen mittausolosuhteista ja -kohteista riippumatta.
Testijärjestelmän kehittämiseen liittyi useampia haastavia yksityiskohtia. Visy Measurement Portal on suunniteltu toimimaan osana kokonaisuutta muiden ohjelmistojen ja skannerilaitteiden kanssa, joten sen testausrajapintojen muodostaminen vaatii huomattavaa harkintaa. Mittausjärjestelmän ympärille oli muodostettava testausjärjestelmä, joka kykenee jäjittelemään oikean mittaustilanteen asetelmaa mahdollisimman tarkasti niin skannerien toiminnan kuin muiden ohjelmistojen lähettämän kommunikaationkin osalta.
Testirajapintojen lisäksi erityisenä haasteena oli muodostaa sääntöjä, joilla testien mittaustulokset voidaan hyväksyä tai hylätä. Tämä prosessi tunnetaan testioraakkelien muodostamisena. Usein oraakkelja voidaan yrittää etsiä ohjelmiston dokumentaation tai spesifikaation pohjalta, mutta tämän diplomityön kohteessa oraakkelien muodostamiselle ei ollut yhtä selkeää ja yksiselitteistä lähtökohtaa. Epädeterministisen järjestelmän vuoksi yksittäisen testiajon tulos ei myöskään aina ollut riittävä peruste tuloksen hyväksymiselle tai hylkäämiselle, vaan mittausjärjestelmän toimintaa oli arvioitava useiden mittauskertojen aikana saatujen tulosten jakaumien, raja-arvojen ja keskiarvojen valossa.
Muun toiminnallisuuden lisäksi testijärjestelmän tuli toimia pystyä toimimaan osana Visy Oy:n ketterän kehityksen periaatteita noudattavaa automasioitua kehitysympäristöä, jossa jokainen uusi ohjelmistoversio läpäisee halut testit ja täyttää asetetut laatuvaatimukset.
Diplomityössä muodostettiin ja dokumentoitiin testijärjestelmä, joka syöttää testidatan Visy Measurement Portal-järjestelmään, vastaanottaa ja tallentaa siltä saadut tulokset ja tämän jälkeen arvioi mittaustulosten oikeellisuutta ja laatua. Koko testijärjestelmä liitetään osaksi Visy Oy:n ketterää kehitysprosessia ja sille asetetaan testimateriaalin pohjalta laatukriteerit. Tehtyjen havaintojen perusteella voidaan muodostaa arvio eri testioraakkelien käyttökelpoisuudesta.
Testijärjestelmä toteutettiin yhdistelmällä C++, Python ja PowerShell-kieliä. Niiden avulla muodostettiin testiympäristö, joka käyttää Python-kielen PyTest-testikirjastoa lopullisten testien suorittamiseen ja raportointiin. Lopullinen järjestelmä täytti työlle asetetut minimivaatimukset, mutta myös hienosäädölle ja jatkokehitykselle jäi huomattavasti tilaa.
Visy Oy’s Visy Measurement Portal is a measurement system designed to measure length, height, width, and speed of vehicles driving through it. Testing software of such system has many challenges. The test data availability is limited and the correct solution for the given data isn’t always obvious or easily determined. The existing measurement system also operates concurrently with multiple data streams and has indeterministic results depending on timing and order of the data received.
This thesis aims to answer the question of how a testing system can be created for a nondeterministic measurement system? The testing system had to ensure that the system under test retains its measurement quality both when compared to its former versions and when specified with quality and precision requirements.
The development of the test system had multitude of interesting challenges. There was not any pre-existing or predesigned test interface for the software and determining one required careful planning. The test environment had to encompass the system under test and provide it with both the scanner input and communication from other software operating together with the measurement system itself.
Another challenging aspect of testing environment was establishing the rules that decide how to pass or fail the tests. Such rules – known as software testing oracles – are in many cases based on documentation or software specification. The test system at hand, however, didn’t have any readily available resources to guide in generating the oracles and they had to be derived from other sources. The indeterministic nature of the system also required the tests to not only accept a single result, but to operate on probability distributions, numeric bounds and means of results from multiple runs on the input data.
In addition to the other requirements, the test system also needed to act as a part of Visy Oy’s agile development principles and its automated software development pipeline. Every new version of the software had to pass both the comparison to older versions and also to static quality requirements expected from the system.
In this thesis we develop and document the test system that inputs the test data, observes and records the measurement system’s responses it, and then finally analyzes the data and either accepts or disqualifies the test results. We also integrate the test system into the Visy Oy’s continuous development pipeline. In addition, we will test various kind of test oracles and estimate their effectiveness in testing the system.
The test system was implemented as a combination of C++, Python and PowerShell languages. The final implementation utilizes PyTest Python framework to pass or fail the tests and to further generate formulated reports of the performed test suite. The implemented test system fulfills the minimum requirements for the system but also leaves a lot of room for refinement and further development.