Code change based selective testing in continuous integration environment
Wilén, Juhani (2018-06-04)
Wilén, Juhani
J. Wilén
04.06.2018
© 2018 Juhani Wilén. Tämä Kohde on tekijänoikeuden ja/tai lähioikeuksien suojaama. Voit käyttää Kohdetta käyttöösi sovellettavan tekijänoikeutta ja lähioikeuksia koskevan lainsäädännön sallimilla tavoilla. Muunlaista käyttöä varten tarvitset oikeudenhaltijoiden luvan.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:oulu-201806062460
https://urn.fi/URN:NBN:fi:oulu-201806062460
Tiivistelmä
Continuous integration (CI) is a software engineering practice in which new code is integrated to existing codebase continuously. Integration testing ensures that the changes in code function as intended together with the other parts of the code. The number of tests tend to grow and at some point performing them all becomes infeasible due to limited time between consecutive test executions. Therefore, the traditional retest-all approach becomes inoperative and test optimization techniques are required. Test selection is one of those techniques and it encompasses selecting tests which are relevant to recent changes in the code.
The purpose of this thesis is to analyze existing test selection methods, and to implement an initial continuous test selection method in CI environment that reduces duration of integration testing stage and provides faster feedback. The method is aimed to be safe that no additional faults are let through the testing. The test selection is based on changes submitted to version control system (VCS), which are compared with source code file coverages of different hardware variants reported by compilers. In addition, other possible dependencies between variants and code changes are investigated. Those are related to test codes and interfaces. Now the testing of change independent variants can be ignored, and only testing change dependent variants is conducted.
At the beginning the implemented test selection method was used in a single software development branch for testing purposes. The results indicate that utilizing the method accomplished slight but statistically significant reduction of integration testing duration with significance level of 0.05. The mean of the testing duration was decreased by 15.2% and the median by 22.2%. However, the implementation still has some inaccuracies in dependency detection, and further improvements are needed to make the test selection method more efficient. Jatkuva integraatio on ohjelmistotuotannon käytäntö, jossa muutokset ohjelmakoodiin integroidaan osaksi jo olemassa olevaa ohjelmistoa jatkuvasti. Integraatiotestauksella varmistetaan, että muutokset koodiin toimivat sen muiden osien kanssa kuten on tarkoitettu. Suoritettavien testien määrä usein kasvaa ajan mittaan, ja jossakin vaiheessa niiden kaikkien suorittaminen ei ole enää järkevää, koska perättäisten testiajojen välinen aika on rajallinen. Siksi perinteinen kaikkien testien uudelleenajaminen tulee haastavaksi ja tarvitaan testien optimointitekniikoita. Testien valinta on yksi näistä tekniikoista. Se sisältää sellaisten testien valinnan, jotka ovat oleellisia testaamaan viimeaikaisia muutoksia koodiin.
Tämän diplomityön tarkoituksena on analysoida olemassa olevia testien valintamenetelmiä ja luoda alustava toteutus jatkuvasta testien valintamenetelmästä jatkuvan integraation ympäristössä, millä vähennetään testien kestoaikaa integraatiotestausvaiheessa ja nopeutetaan palautteen saamista. Tavoitteena on, ettei testauksen läpäisseiden vikojen määrä kuitenkaan kasva. Testien valinta perustuu versionhallintajärjestelmään toimitettuihin muutoksiin, joita verrataan kääntäjien raportoimiin lähdekoodikattavuuksiin eri laiteversioille. Lisäksi laiteversioiden riippuvuus testikoodien ja rajapintojen muutoksiin tutkitaan. Ne laiteversiot, jotka eivät ole riippuvaisia mistään muutoksista, jätetään testaamatta, ja ainoastaan muutoksista riippuvaisten laiteversioiden ohjelmakoodit testataan.
Testien valintaan toteutettu menetelmä otettiin käyttöön aluksi yhdessä ohjelmistokehityshaarassa sen toiminnan testaamiseksi. Saadut tulokset näyttävät, että menetelmän hyödyntämisellä saavutettiin vähäinen mutta tilastollisesti merkittävä integraatiotestauksen kestoajan lyheneminen merkitsevyystasolla 0,05. Testauksen keston keskiarvo laski 15,2 % ja mediaani 22,2 %. Toteutuksessa on vielä epätarkkuuksia riippuvuuksien havaitsemisessa, ja sitä pitää kehittää paremman tehokkuuden saavuttamiseksi.
The purpose of this thesis is to analyze existing test selection methods, and to implement an initial continuous test selection method in CI environment that reduces duration of integration testing stage and provides faster feedback. The method is aimed to be safe that no additional faults are let through the testing. The test selection is based on changes submitted to version control system (VCS), which are compared with source code file coverages of different hardware variants reported by compilers. In addition, other possible dependencies between variants and code changes are investigated. Those are related to test codes and interfaces. Now the testing of change independent variants can be ignored, and only testing change dependent variants is conducted.
At the beginning the implemented test selection method was used in a single software development branch for testing purposes. The results indicate that utilizing the method accomplished slight but statistically significant reduction of integration testing duration with significance level of 0.05. The mean of the testing duration was decreased by 15.2% and the median by 22.2%. However, the implementation still has some inaccuracies in dependency detection, and further improvements are needed to make the test selection method more efficient.
Tämän diplomityön tarkoituksena on analysoida olemassa olevia testien valintamenetelmiä ja luoda alustava toteutus jatkuvasta testien valintamenetelmästä jatkuvan integraation ympäristössä, millä vähennetään testien kestoaikaa integraatiotestausvaiheessa ja nopeutetaan palautteen saamista. Tavoitteena on, ettei testauksen läpäisseiden vikojen määrä kuitenkaan kasva. Testien valinta perustuu versionhallintajärjestelmään toimitettuihin muutoksiin, joita verrataan kääntäjien raportoimiin lähdekoodikattavuuksiin eri laiteversioille. Lisäksi laiteversioiden riippuvuus testikoodien ja rajapintojen muutoksiin tutkitaan. Ne laiteversiot, jotka eivät ole riippuvaisia mistään muutoksista, jätetään testaamatta, ja ainoastaan muutoksista riippuvaisten laiteversioiden ohjelmakoodit testataan.
Testien valintaan toteutettu menetelmä otettiin käyttöön aluksi yhdessä ohjelmistokehityshaarassa sen toiminnan testaamiseksi. Saadut tulokset näyttävät, että menetelmän hyödyntämisellä saavutettiin vähäinen mutta tilastollisesti merkittävä integraatiotestauksen kestoajan lyheneminen merkitsevyystasolla 0,05. Testauksen keston keskiarvo laski 15,2 % ja mediaani 22,2 %. Toteutuksessa on vielä epätarkkuuksia riippuvuuksien havaitsemisessa, ja sitä pitää kehittää paremman tehokkuuden saavuttamiseksi.
Kokoelmat
- Avoin saatavuus [29929]