University of Oulu

Test case prioritization using build history and test distances : an approach for improving automotive regression testing in continuous integration environments

Saved in:
Author: Haghighatkhah, Alireza1,2
Organizations: 1University of Oulu Graduate School
2University of Oulu, Faculty of Information Technology and Electrical Engineering, Information Processing Science
Format: ebook
Version: published version
Access: open
Online Access: PDF Full Text (PDF, 1.4 MB)
Persistent link: http://urn.fi/urn:isbn:9789526224770
Language: English
Published: Oulu : University of Oulu, 2020
Publish Date: 2020-01-21
Thesis type: Doctoral Dissertation
Defence Note: Academic dissertation to be presented, with the assent of the Doctoral Training Committee of Information Technology and Electrical Engineering of the University of Oulu, for public defence in the Wetteri auditorium (IT115), Linnanmaa, on 31 January 2020, at 12 noon
Tutor: Professor Markku Oivo
Professor Pasi Kuvaja
Reviewer: Associate Professor Bram Adams
Professor Ville Leppänen
Opponent: Professor Per Runeson
Description:

Abstract

Agile software development has become a source of competitive advantage in many industrial sectors, including the automotive domain. Continuous integration (CI) is an agile practice and involves integrating software changes as often and as early as possible. CI in combination with regression testing is considered a good software development practice, because it ensures that recent changes have not negatively impacted the software’s functionality. The execution of a large test suite at each integration (also known as the build) cycle is not realistic. To detect regression faults earlier, one alternative is to permute the test cases within the regression test suite. This is known as test case prioritization (TCP).

This dissertation aims to shorten the build cycle in CI environments by detecting regression faults earlier, allowing software developers to integrate and verify their changes more frequently and continuously. The research was performed in three phases. In the 1st phase, the relevant literature was systematically surveyed to analyze the existing body of knowledge and identify research opportunities. In the 2nd phase, the TCP technique of history-based diversity was developed and subjected to several rounds of improvements and evaluations. In the 3rd phase, results from the previous two phases were synthesized in order to draw conclusions and outline implications.

Our results bring to mind the well-known adage “don’t put all your eggs in one basket”. For the initial stages, when no information about the system under test is available, one should spread the limited testing budget evenly across different parts of the system by running the most dissimilar test cases early in the process (i.e., maximizing diversity as early as possible). For the later stages, when historical build data are available, one should give higher priority to the test cases that have higher historical value (i.e., those that revealed the most failure in the most recent revisions) and that are most distant from those previously prioritized (i.e., cover different areas of the system).

One of the major contributions of this dissertation is the design, implementation, and experimental evaluation of a TCP technique using 12 open-source Java programs. Findings from the experiments provide empirical evidence in support of two previously proposed TCP heuristics — failure recurrence and test diversity — and their combination in CI development environments. Furthermore, results from the systematic mapping studies contribute to the literature by providing a synthesized and structured body of knowledge and a basis for future studies. We conclude that TCP can be performed in CI environments with negligible investment using build history and test distances.

see all

Tiivistelmä

Ketterä ohjelmistokehitys tarjoaa kilpailuetua monella teollisen tuotannon alalla 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 tieota 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ä.

see all

Osajulkaisut / Original papers

Osajulkaisut eivät sisälly väitöskirjan elektroniseen versioon / Original papers are not included in the electronic version of the dissertation.

  1. Rodríguez, P., Haghighatkhah, A., Lwakatare, L. E., Teppola, S., Suomalainen, T., Eskeli, J., … Oivo, M. (2017). Continuous deployment of software intensive products and services: A systematic mapping study. Journal of Systems and Software, 123, 263–291. https://doi.org/10.1016/j.jss.2015.12.015

    Rinnakkaistallennettu versio / Self-archived version

  2. Haghighatkhah, A., Banijamali, A., Pakanen, O.-P., Oivo, M., & Kuvaja, P. (2017). Automotive software engineering: A systematic mapping study. Journal of Systems and Software, 128, 25–55. https://doi.org/10.1016/j.jss.2017.03.005

  3. Haghighatkhah, A., Oivo, M., Banijamali, A., & Kuvaja, P. (2017). Improving the State of Automotive Software Engineering. IEEE Software, 34(5), 82–86. https://doi.org/10.1109/ms.2017.3571571

  4. Haghighatkhah, A., Mäntylä, M., Oivo, M., & Kuvaja, P. (2018). Test prioritization in continuous integration environments. Journal of Systems and Software, 146, 80–98. https://doi.org/10.1016/j.jss.2018.08.061

    Rinnakkaistallennettu versio / Self-archived version

  5. Haghighatkhah, A., Mäntylä, M., Oivo, M., & Kuvaja, P. (2018). Test Case Prioritization Using Test Similarities. Lecture Notes in Computer Science, 11271, 243-259. https://doi.org/10.1007/978-3-030-03673-7_18

    Rinnakkaistallennettu versio / Self-archived version

see all

Series: Acta Universitatis Ouluensis. A, Scientiae rerum naturalium
ISSN: 0355-3191
ISSN-E: 1796-220X
ISSN-L: 0355-3191
ISBN: 978-952-62-2477-0
ISBN Print: 978-952-62-2476-3
Issue: 739
Type of Publication: G5 Doctoral dissertation (articles)
Field of Science: 113 Computer and information sciences
Subjects:
Copyright information: © University of Oulu, 2020. This publication is copyrighted. You may download, display and print it for your own personal use. Commercial use is prohibited.