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...
Saved in:
Main Authors: | , , |
---|---|
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 |