Loading…

Understanding and Improving Regression Test Selection in Continuous Integration

Developers rely on regression testing in their continuous integration (CI) environment to find changes that introduce regression faults. While regression testing is widely practiced, it can be costly. Regression test selection (RTS) reduces the cost of regression testing by not running the tests tha...

Full description

Saved in:
Bibliographic Details
Main Authors: Shi, August, Zhao, Peiyuan, Marinov, Darko
Format: Conference Proceeding
Language:English
Subjects:
Online Access:Request full text
Tags: Add Tag
No Tags, Be the first to tag this record!
cited_by
cites
container_end_page 238
container_issue
container_start_page 228
container_title
container_volume
creator Shi, August
Zhao, Peiyuan
Marinov, Darko
description Developers rely on regression testing in their continuous integration (CI) environment to find changes that introduce regression faults. While regression testing is widely practiced, it can be costly. Regression test selection (RTS) reduces the cost of regression testing by not running the tests that are unaffected by the changes. Industry has adopted module-level RTS for their CI environment, while researchers have proposed class-level RTS. In this paper, we compare module-and class-level RTS techniques in a cloud-based CI environment, Travis. We also develop and evaluate a hybrid RTS technique that combines aspects of the module-and class-level RTS techniques. We evaluate all the techniques on real Travis builds. We find that the RTS techniques do save testing time compared to running all tests (RetestAll), but the percentage of time for a full build using RTS (76.0%) is not as low as found in previous work, due to the extra overhead in a cloud-based CI environment. Moreover, we inspect test failures from RetestAll builds, and although we find that RTS techniques can miss to select failed tests, these test failures are almost all flaky test failures. As such, RTS techniques provide additional value in helping developers avoid wasting time debugging failures not related to the recent code changes. Overall, our results show that RTS can be beneficial for the developers in the CI environment, and RTS not only saves time but also avoids misleading developers by flaky test failures.
doi_str_mv 10.1109/ISSRE.2019.00031
format conference_proceeding
fullrecord <record><control><sourceid>ieee_CHZPO</sourceid><recordid>TN_cdi_ieee_primary_8987498</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><ieee_id>8987498</ieee_id><sourcerecordid>8987498</sourcerecordid><originalsourceid>FETCH-LOGICAL-i203t-2e1ac2ab2253dc3c3ffc29ad3fb2392daf515d5424f26d661e5fc11e78ed111e3</originalsourceid><addsrcrecordid>eNotj1FLwzAUhaMguE3fBV_6B1pzb5q2eZQytTAYrNvzyJKbEdnS0XSC_94W9_TxcQ4HDmMvwDMArt6att0sM-SgMs65gDs2hxIryFWF5T2boRCYFjJXj2we4zfnyHPAGVvvgqU-DjpYH47JiKQ5X_ruZ7INHXuK0Xch2VIckpZOZIZJfUjqLgw-XLtrTJowjE09JU_swelTpOcbF2z3sdzWX-lq_dnU76vUIxdDigTaoD4gSmGNMMI5g0pb4Q4oFFrtJEgrc8wdFrYogKQzAFRWZGGkWLDX_11PRPtL78-6_91XqirHx-IP8c9PrA</addsrcrecordid><sourcetype>Publisher</sourcetype><iscdi>true</iscdi><recordtype>conference_proceeding</recordtype></control><display><type>conference_proceeding</type><title>Understanding and Improving Regression Test Selection in Continuous Integration</title><source>IEEE Xplore All Conference Series</source><creator>Shi, August ; Zhao, Peiyuan ; Marinov, Darko</creator><creatorcontrib>Shi, August ; Zhao, Peiyuan ; Marinov, Darko</creatorcontrib><description>Developers rely on regression testing in their continuous integration (CI) environment to find changes that introduce regression faults. While regression testing is widely practiced, it can be costly. Regression test selection (RTS) reduces the cost of regression testing by not running the tests that are unaffected by the changes. Industry has adopted module-level RTS for their CI environment, while researchers have proposed class-level RTS. In this paper, we compare module-and class-level RTS techniques in a cloud-based CI environment, Travis. We also develop and evaluate a hybrid RTS technique that combines aspects of the module-and class-level RTS techniques. We evaluate all the techniques on real Travis builds. We find that the RTS techniques do save testing time compared to running all tests (RetestAll), but the percentage of time for a full build using RTS (76.0%) is not as low as found in previous work, due to the extra overhead in a cloud-based CI environment. Moreover, we inspect test failures from RetestAll builds, and although we find that RTS techniques can miss to select failed tests, these test failures are almost all flaky test failures. As such, RTS techniques provide additional value in helping developers avoid wasting time debugging failures not related to the recent code changes. Overall, our results show that RTS can be beneficial for the developers in the CI environment, and RTS not only saves time but also avoids misleading developers by flaky test failures.</description><identifier>EISSN: 2332-6549</identifier><identifier>EISBN: 1728149827</identifier><identifier>EISBN: 9781728149820</identifier><identifier>DOI: 10.1109/ISSRE.2019.00031</identifier><identifier>CODEN: IEEPAD</identifier><language>eng</language><publisher>IEEE</publisher><subject>continuous integration ; flaky tests ; regression test selection</subject><ispartof>2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE), 2019, p.228-238</ispartof><woscitedreferencessubscribed>false</woscitedreferencessubscribed></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktohtml>$$Uhttps://ieeexplore.ieee.org/document/8987498$$EHTML$$P50$$Gieee$$H</linktohtml><link.rule.ids>309,310,780,784,789,790,23929,23930,25139,27924,54554,54931</link.rule.ids><linktorsrc>$$Uhttps://ieeexplore.ieee.org/document/8987498$$EView_record_in_IEEE$$FView_record_in_$$GIEEE</linktorsrc></links><search><creatorcontrib>Shi, August</creatorcontrib><creatorcontrib>Zhao, Peiyuan</creatorcontrib><creatorcontrib>Marinov, Darko</creatorcontrib><title>Understanding and Improving Regression Test Selection in Continuous Integration</title><title>2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE)</title><addtitle>ISSRE</addtitle><description>Developers rely on regression testing in their continuous integration (CI) environment to find changes that introduce regression faults. While regression testing is widely practiced, it can be costly. Regression test selection (RTS) reduces the cost of regression testing by not running the tests that are unaffected by the changes. Industry has adopted module-level RTS for their CI environment, while researchers have proposed class-level RTS. In this paper, we compare module-and class-level RTS techniques in a cloud-based CI environment, Travis. We also develop and evaluate a hybrid RTS technique that combines aspects of the module-and class-level RTS techniques. We evaluate all the techniques on real Travis builds. We find that the RTS techniques do save testing time compared to running all tests (RetestAll), but the percentage of time for a full build using RTS (76.0%) is not as low as found in previous work, due to the extra overhead in a cloud-based CI environment. Moreover, we inspect test failures from RetestAll builds, and although we find that RTS techniques can miss to select failed tests, these test failures are almost all flaky test failures. As such, RTS techniques provide additional value in helping developers avoid wasting time debugging failures not related to the recent code changes. Overall, our results show that RTS can be beneficial for the developers in the CI environment, and RTS not only saves time but also avoids misleading developers by flaky test failures.</description><subject>continuous integration</subject><subject>flaky tests</subject><subject>regression test selection</subject><issn>2332-6549</issn><isbn>1728149827</isbn><isbn>9781728149820</isbn><fulltext>true</fulltext><rsrctype>conference_proceeding</rsrctype><creationdate>2019</creationdate><recordtype>conference_proceeding</recordtype><sourceid>6IE</sourceid><recordid>eNotj1FLwzAUhaMguE3fBV_6B1pzb5q2eZQytTAYrNvzyJKbEdnS0XSC_94W9_TxcQ4HDmMvwDMArt6att0sM-SgMs65gDs2hxIryFWF5T2boRCYFjJXj2we4zfnyHPAGVvvgqU-DjpYH47JiKQ5X_ruZ7INHXuK0Xch2VIckpZOZIZJfUjqLgw-XLtrTJowjE09JU_swelTpOcbF2z3sdzWX-lq_dnU76vUIxdDigTaoD4gSmGNMMI5g0pb4Q4oFFrtJEgrc8wdFrYogKQzAFRWZGGkWLDX_11PRPtL78-6_91XqirHx-IP8c9PrA</recordid><startdate>201910</startdate><enddate>201910</enddate><creator>Shi, August</creator><creator>Zhao, Peiyuan</creator><creator>Marinov, Darko</creator><general>IEEE</general><scope>6IE</scope><scope>6IL</scope><scope>CBEJK</scope><scope>RIE</scope><scope>RIL</scope></search><sort><creationdate>201910</creationdate><title>Understanding and Improving Regression Test Selection in Continuous Integration</title><author>Shi, August ; Zhao, Peiyuan ; Marinov, Darko</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-i203t-2e1ac2ab2253dc3c3ffc29ad3fb2392daf515d5424f26d661e5fc11e78ed111e3</frbrgroupid><rsrctype>conference_proceedings</rsrctype><prefilter>conference_proceedings</prefilter><language>eng</language><creationdate>2019</creationdate><topic>continuous integration</topic><topic>flaky tests</topic><topic>regression test selection</topic><toplevel>online_resources</toplevel><creatorcontrib>Shi, August</creatorcontrib><creatorcontrib>Zhao, Peiyuan</creatorcontrib><creatorcontrib>Marinov, Darko</creatorcontrib><collection>IEEE Electronic Library (IEL) Conference Proceedings</collection><collection>IEEE Proceedings Order Plan All Online (POP All Online) 1998-present by volume</collection><collection>IEEE Xplore All Conference Proceedings</collection><collection>IEEE Electronic Library (IEL)</collection><collection>IEEE Proceedings Order Plans (POP All) 1998-Present</collection></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext_linktorsrc</fulltext></delivery><addata><au>Shi, August</au><au>Zhao, Peiyuan</au><au>Marinov, Darko</au><format>book</format><genre>proceeding</genre><ristype>CONF</ristype><atitle>Understanding and Improving Regression Test Selection in Continuous Integration</atitle><btitle>2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE)</btitle><stitle>ISSRE</stitle><date>2019-10</date><risdate>2019</risdate><spage>228</spage><epage>238</epage><pages>228-238</pages><eissn>2332-6549</eissn><eisbn>1728149827</eisbn><eisbn>9781728149820</eisbn><coden>IEEPAD</coden><abstract>Developers rely on regression testing in their continuous integration (CI) environment to find changes that introduce regression faults. While regression testing is widely practiced, it can be costly. Regression test selection (RTS) reduces the cost of regression testing by not running the tests that are unaffected by the changes. Industry has adopted module-level RTS for their CI environment, while researchers have proposed class-level RTS. In this paper, we compare module-and class-level RTS techniques in a cloud-based CI environment, Travis. We also develop and evaluate a hybrid RTS technique that combines aspects of the module-and class-level RTS techniques. We evaluate all the techniques on real Travis builds. We find that the RTS techniques do save testing time compared to running all tests (RetestAll), but the percentage of time for a full build using RTS (76.0%) is not as low as found in previous work, due to the extra overhead in a cloud-based CI environment. Moreover, we inspect test failures from RetestAll builds, and although we find that RTS techniques can miss to select failed tests, these test failures are almost all flaky test failures. As such, RTS techniques provide additional value in helping developers avoid wasting time debugging failures not related to the recent code changes. Overall, our results show that RTS can be beneficial for the developers in the CI environment, and RTS not only saves time but also avoids misleading developers by flaky test failures.</abstract><pub>IEEE</pub><doi>10.1109/ISSRE.2019.00031</doi><tpages>11</tpages></addata></record>
fulltext fulltext_linktorsrc
identifier EISSN: 2332-6549
ispartof 2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE), 2019, p.228-238
issn 2332-6549
language eng
recordid cdi_ieee_primary_8987498
source IEEE Xplore All Conference Series
subjects continuous integration
flaky tests
regression test selection
title Understanding and Improving Regression Test Selection in Continuous Integration
url http://sfxeu10.hosted.exlibrisgroup.com/loughborough?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-12T00%3A19%3A39IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-ieee_CHZPO&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft.genre=proceeding&rft.atitle=Understanding%20and%20Improving%20Regression%20Test%20Selection%20in%20Continuous%20Integration&rft.btitle=2019%20IEEE%2030th%20International%20Symposium%20on%20Software%20Reliability%20Engineering%20(ISSRE)&rft.au=Shi,%20August&rft.date=2019-10&rft.spage=228&rft.epage=238&rft.pages=228-238&rft.eissn=2332-6549&rft.coden=IEEPAD&rft_id=info:doi/10.1109/ISSRE.2019.00031&rft.eisbn=1728149827&rft.eisbn_list=9781728149820&rft_dat=%3Cieee_CHZPO%3E8987498%3C/ieee_CHZPO%3E%3Cgrp_id%3Ecdi_FETCH-LOGICAL-i203t-2e1ac2ab2253dc3c3ffc29ad3fb2392daf515d5424f26d661e5fc11e78ed111e3%3C/grp_id%3E%3Coa%3E%3C/oa%3E%3Curl%3E%3C/url%3E&rft_id=info:oai/&rft_id=info:pmid/&rft_ieee_id=8987498&rfr_iscdi=true