Share to: share facebook share twitter share wa share telegram print page

Software regression

A software regression is a type of software bug where a feature that has worked before stops working. This may happen after changes are applied to the software's source code, including the addition of new features and bug fixes.[1] They may also be introduced by changes to the environment in which the software is running, such as system upgrades, system patching or a change to daylight saving time.[2] A software performance regression is a situation where the software still functions correctly, but performs more slowly or uses more memory or resources than before.[3] Various types of software regressions have been identified in practice, including the following:[4]

  • Local – a change introduces a new bug in the changed module or component.
  • Remote – a change in one part of the software breaks functionality in another module or component.
  • Unmasked – a change unmasks an already existing bug that had no effect before the change.

Regressions are often caused by encompassed bug fixes included in software patches. One approach to avoiding this kind of problem is regression testing. A properly designed test plan aims at preventing this possibility before releasing any software.[5] Automated testing and well-written test cases can reduce the likelihood of a regression.

Prevention and detection

Techniques have been proposed that try to prevent regressions from being introduced into software at various stages of development, as outlined below.

Prior to release

In order to avoid regressions being seen by the end-user after release, developers regularly run regression tests after changes are introduced to the software. These tests can include unit tests to catch local regressions as well as integration tests to catch remote regressions.[6] Regression testing techniques often leverage existing test cases to minimize the effort involved in creating them.[7] However, due to the volume of these existing tests, it is often necessary to select a representative subset, using techniques such as test-case prioritization.

For detecting performance regressions, software performance tests are run on a regular basis, to monitor the response time and resource usage metrics of the software after subsequent changes.[8] Unlike functional regression tests, the results of performance tests are subject to variance - that is, results can differ between tests due to variance in performance measurements; as a result, a decision must be made on whether a change in performance numbers constitutes a regression, based on experience and end-user demands. Approaches such as statistical significance testing and change point detection are sometimes used to aid in this decision.[9]

Prior to commit

Since debugging and localizing the root cause of a software regression can be expensive,[10][11] there also exist some methods that try to prevent regressions from being committed into the code repository in the first place. For example, Git Hooks enable developers to run test scripts before code changes are committed or pushed to the code repository.[12] In addition, change impact analysis has been applied to software to predict the impact of a code change on various components of the program, and to supplement test case selection and prioritization.[13][14] Software linters are also often added to commit hooks to ensure consistent coding style, thereby minimizing stylistic issues that can make the software prone to regressions.[15]

Localization

Many of the techniques used to find the root cause of non-regression software bugs can also be used to debug software regressions, including breakpoint debugging, print debugging, and program slicing. The techniques described below are often used specifically to debug software regressions.

Functional regressions

A common technique used to localize functional regressions is bisection, which takes both a buggy commit and a previously working commit as input, and tries to find the root cause by doing a binary search on the commits in between.[16] Version control systems such as Git and Mercurial provide built-in ways to perform bisection on a given pair of commits.[17][18]

Other options include directly associating the result of a regression test with code changes;[19] setting divergence breakpoints;[20] or using incremental data-flow analysis, which identifies test cases - including failing ones - that are relevant to a set of code changes,[21] among others.

Performance regressions

Profiling measures the performance and resource usage of various components of a program, and is used to generate data useful in debugging performance issues. In the context of software performance regressions, developers often compare the call trees (also known as "timelines") generated by profilers for both the buggy version and the previously working version, and mechanisms exist to simplify this comparison.[22] Web development tools typically provide developers the ability to record these performance profiles.[23][24]

Logging also helps with performance regression localization, and similar to call trees, developers can compare systematically-placed performance logs of multiple versions of the same software.[25] A tradeoff exists when adding these performance logs, as adding many logs can help developers pinpoint which portions of the software are regressing at smaller granularities, while adding only a few logs will also reduce overhead when executing the program.[26]

Additional approaches include writing performance-aware unit tests to help with localization,[27] and ranking subsystems based on performance counter deviations.[28] Bisection can also be repurposed for performance regressions by considering commits that perform below (or above) a certain baseline value as buggy, and taking either the left or the right side of the commits based on the results of this comparison.

See also

References

  1. ^ Wong, W. Eric; Horgan, J.R.; London, Saul; Agrawal, Hira (1997). "A Study of Effective Regression Testing in Practice". Proceedings of the Eighth International Symposium on Software Reliability Engineering (ISSRE 97). IEEE. doi:10.1109/ISSRE.1997.630875. ISBN 0-8186-8120-9. S2CID 2911517.
  2. ^ Yehudai, Amiram; Tyszberowicz, Shmuel; Nir, Dor (2007). Locating Regression Bugs. Haifa Verification Conference. doi:10.1007/978-3-540-77966-7_18. Retrieved 10 March 2018.
  3. ^ Shang, Weiyi; Hassan, Ahmed E.; Nasser, Mohamed; Flora, Parminder (11 December 2014). "Automated Detection of Performance Regressions Using Regression Models on Clustered Performance Counters" (PDF). Archived from the original (PDF) on 13 January 2021. Retrieved 22 December 2019. {{cite journal}}: Cite journal requires |journal= (help)
  4. ^ Henry, Jean-Jacques Pierre (2008). The Testing Network: An Integral Approach to Test Activities in Large Software Projects. Springer Science & Business Media. p. 74. ISBN 978-3540785040.
  5. ^ Richardson, Jared; Gwaltney, William Jr (2006). Ship It! A Practical Guide to Successful Software Projects. Raleigh, NC: The Pragmatic Bookshelf. pp. 32, 193. ISBN 978-0-9745140-4-8.
  6. ^ Leung, Hareton K.N.; White, Lee (November 1990). "A study of integration testing and software regression at the integration level". Proceedings of the International Conference on Software Maintenance. San Diego, CA, USA: IEEE. doi:10.1109/ICSM.1990.131377. ISBN 0-8186-2091-9. S2CID 62583582.
  7. ^ Rothermel, Gregg; Harrold, Mary Jean; Dedhia, Jeinay (2000). "Regression test selection for C++ software". Software Testing, Verification and Reliability. 10 (2): 77–109. doi:10.1002/1099-1689(200006)10:2<77::AID-STVR197>3.0.CO;2-E. ISSN 1099-1689.
  8. ^ Weyuker, E.J.; Vokolos, F.I. (December 2000). "Experience with performance testing of software systems: issues, an approach, and case study". IEEE Transactions on Software Engineering. 26 (12): 1147–1156. doi:10.1109/32.888628. ISSN 1939-3520.
  9. ^ Daly, David; Brown, William; Ingo, Henrik; O'Leary, Jim; Bradford, David (20 April 2020). "The Use of Change Point Detection to Identify Software Performance Regressions in a Continuous Integration System". Proceedings of the International Conference on Performance Engineering. Association for Computing Machinery. pp. 67–75. doi:10.1145/3358960.3375791. ISBN 978-1-4503-6991-6. S2CID 211677818.
  10. ^ Nistor, Adrian; Jiang, Tian; Tan, Lin (May 2013). "Discovering, reporting, and fixing performance bugs". Proceedings of the Working Conference on Mining Software Repositories (MSR). pp. 237–246. doi:10.1109/MSR.2013.6624035. ISBN 978-1-4673-2936-1. S2CID 12773088.
  11. ^ Agarwal, Pragya; Agrawal, Arun Prakash (17 September 2014). "Fault-localization techniques for software systems: a literature review". ACM SIGSOFT Software Engineering Notes. 39 (5): 1–8. doi:10.1145/2659118.2659125. ISSN 0163-5948. S2CID 12101263.
  12. ^ "Git - Git Hooks". git-scm.com. Retrieved 7 November 2021.
  13. ^ Orso, Alessandro; Apiwattanapong, Taweesup; Harrold, Mary Jean (1 September 2003). "Leveraging field data for impact analysis and regression testing". ACM SIGSOFT Software Engineering Notes. 28 (5): 128–137. doi:10.1145/949952.940089. ISSN 0163-5948.
  14. ^ Qu, Xiao; Acharya, Mithun; Robinson, Brian (September 2012). "Configuration selection using code change impact analysis for regression testing". Proceedings of the International Conference on Software Maintenance. pp. 129–138. doi:10.1109/ICSM.2012.6405263. ISBN 978-1-4673-2312-3. S2CID 14928793.
  15. ^ Tómasdóttir, Kristín Fjóla; Aniche, Mauricio; van Deursen, Arie (October 2017). "Why and how JavaScript developers use linters". Proceedings of the International Conference on Automated Software Engineering. pp. 578–589. doi:10.1109/ASE.2017.8115668. ISBN 978-1-5386-2684-9. S2CID 215750004.
  16. ^ Gross, Thomas (10 September 1997). "Bisection Debugging". Proceedings of the International Workshop on Automatic Debugging. Linkøping University Electronic Press. pp. 185–191.
  17. ^ "Git - git-bisect Documentation". git-scm.com. Retrieved 7 November 2021.
  18. ^ "hg - bisect". www.selenic.com. Mercurial. Retrieved 7 November 2021.
  19. ^ "Reading 11: Debugging". web.mit.edu. MIT.
  20. ^ Buhse, Ben; Wei, Thomas; Zang, Zhiqiang; Milicevic, Aleksandar; Gligoric, Milos (May 2019). "VeDebug: Regression Debugging Tool for Java". Proceedings of the International Conference on Software Engineering: Companion Proceedings (ICSE-Companion). pp. 15–18. doi:10.1109/ICSE-Companion.2019.00027. ISBN 978-1-7281-1764-5. S2CID 174799830.
  21. ^ Taha, A.-B.; Thebaut, S.M.; Liu, S.-S. (September 1989). "An approach to software fault localization and revalidation based on incremental data flow analysis". Proceedings of the Annual International Computer Software & Applications Conference. IEEE. pp. 527–534. doi:10.1109/CMPSAC.1989.65142. ISBN 0-8186-1964-3. S2CID 41978046.
  22. ^ Ocariza, Frolin S.; Zhao, Boyang (2021). "Localizing software performance regressions in web applications by comparing execution timelines". Software Testing, Verification and Reliability. 31 (5): e1750. doi:10.1002/stvr.1750. ISSN 1099-1689. S2CID 225416138.
  23. ^ "Analyze runtime performance". Chrome Developers. Google. Retrieved 7 November 2021.
  24. ^ "Performance analysis reference - Microsoft Edge Development". docs.microsoft.com. Microsoft. Retrieved 7 November 2021.
  25. ^ Yao, Kundi; B. de Pádua, Guilherme; Shang, Weiyi; Sporea, Steve; Toma, Andrei; Sajedi, Sarah (30 March 2018). "Log4Perf: Suggesting Logging Locations for Web-based Systems' Performance Monitoring". Proceedings of the International Conference on Performance Engineering. Association for Computing Machinery. pp. 127–138. doi:10.1145/3184407.3184416. ISBN 978-1-4503-5095-2. S2CID 4557038.
  26. ^ Li, Heng; Shang, Weiyi; Adams, Bram; Sayagh, Mohammed; Hassan, Ahmed E. (30 January 2020). "A Qualitative Study of the Benefits and Costs of Logging from Developers' Perspectives". IEEE Transactions on Software Engineering. 47 (12): 2858–2873. doi:10.1109/TSE.2020.2970422. S2CID 213679706.
  27. ^ Heger, Christoph; Happe, Jens; Farahbod, Roozbeh (21 April 2013). "Automated root cause isolation of performance regressions during software development". Proceedings of the International Conference on Performance Engineering. Association for Computing Machinery. pp. 27–38. doi:10.1145/2479871.2479879. ISBN 978-1-4503-1636-1. S2CID 2593603.
  28. ^ Malik, Haroon; Adams, Bram; Hassan, Ahmed E. (November 2010). "Pinpointing the Subsystems Responsible for the Performance Deviations in a Load Test". Proceedings of the International Symposium on Software Reliability Engineering. pp. 201–210. doi:10.1109/ISSRE.2010.43. ISBN 978-1-4244-9056-1. S2CID 17306870.

Read other articles:

Ilustrasi arus konveksi mantel. Konveksi mantel atau arus konveksi mantel adalah proses sirkulasi arus magma di bawah bumi saat mentransfer panas inti ke litosfer sehingga lapisan-lapisan di kerak bumi mengalami pergerakkan.[1][2] Mantel dipanaskan dari bawah, didinginkan di atas atas, dan suhu keseluruhannya menurun dalam jangka waktu yang lama. Gaya konveksi mantel ini ditimbulkan karena adanya tekanan panas yang diciptakan oleh peluruhan radioaktif pada inti Bumi serta pana...

MTV Video Music Awards 1991 Дата проведения 5 сентября 1991 года Страна США Место проведения Гибсон Амфитеатр, Лос-Анджелес Ведущие Arsenio Hall Канал вещания MTV Хронология 19901992 8-я церемония музыкальных наград MTV Video Music Awards 1991 прошла 5 сентября 1991 года в Лос-Анджелесе в Амфитеатре Гибсон. Ведущ

Đối với các định nghĩa khác, xem Trận Louvain. Lỗi Lua trong Mô_đun:Location_map tại dòng 495: Không có giá trị kinh độ. xtsTrận chiến nước PhápLuxembourg Hà LanMaastricht • Hague • Rotterdam • Grebbeberg • Afsluitdijk • Ném bom Rotterdam • Zeeland BỉEben-Emael • Hannut • Gembloux • Louvain • Lys PhápSedan • Dinant ...

Tsutomu SakumaLieutenant Tsutomu SakumaBorn13 September 1879Fukui, JapanDiedApril 15, 1910(1910-04-15) (aged 30)Inland Sea, JapanAllegianceEmpire of JapanService/branch Imperial Japanese NavyYears of service1901-1910RankLieutenantCommands heldNo.4 submarine Staff Officer 1st Fleet The destroyer Harukaze (春風) No.6 submarineBattles/warsRusso-Japanese War Tsutomu Sakuma (佐久間 勉, Sakuma Tsutomu, September 13, 1879 – April 15, 1910) was a career naval officer in the...

101–106 AD pair of Roman wars against Dacia This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Trajan's Dacian Wars – news · newspapers · books · scholar · JSTOR (February 2012) (Learn how and when to remove this template message) Trajan's Dacian WarsPart of the Dacian WarsDate101–102 and 105–106LocationA...

Kazimierz III of Gniewkowo's Seal. Kazimierz III of Gniewkowo (ca. 1280/84 – 22 August 1345/13 May 1350), was a Polish prince member of the House of Piast, Duke of Inowrocław during 1287-1314 (under the regency of his mother until 1294 and his brother during 1294–1296), since 1306 vassal of the Kingdom of Poland, Governor of the Duchy of Pomerelia (Gdańsk Pomerania) during 1306-1309 (on behalf of his uncle Władysław I the Elbow-high), after 1314 ruler over Gniewkowo (between 1332 and ...

Flocourt Flocourt (Frankreich) Staat Frankreich Region Grand Est Département (Nr.) Moselle (57) Arrondissement Metz Kanton Faulquemont Gemeindeverband Sud Messin Koordinaten 48° 58′ N, 6° 25′ O48.9730555555566.4111111111111Koordinaten: 48° 58′ N, 6° 25′ O Höhe 226–273 m Fläche 4,53 km² Einwohner 117 (1. Januar 2020) Bevölkerungsdichte 26 Einw./km² Postleitzahl 57580 INSEE-Code 57220 Flocourt Vorlage:Infobox Gemeinde in...

English writer For other people named Robert Nichols, see Robert Nichols (disambiguation). Robert NicholsRobert Nichols (Elliott & Fry, 1930)Born6 September 1893Died17 December 1944(1944-12-17) (aged 51)Resting placeSt Mary's Church, Lawford, EssexOccupationWar poet, playwrightEducationWinchester CollegeTrinity College, OxfordPeriodFirst World WarPartnerNorah Denny (1922–?)RelativesJohn Bowyer Buchanan Nichols (father) Robert Malise Bowyer Nichols (6 September 1893 – 17 December ...

Дівчинка на тлі перського килима Творець: Врубель Михайло ОлександровичЧас створення: 1886Розміри: 104×68 см.Техніка: полотно, олійні фарбиЖанр: портретЗберігається: Київ, УкраїнаМузей: Київська національна картинна галерея «Дівчинка на тлі перського килима» — ста...

Ini adalah nama Korea; marganya adalah Son. WendyWendy di Seoul Hoseo Technical College, Maret 2018.Nama asal손승완[1]LahirSon Seung-wan[2]21 Februari 1994 (umur 29)Seongbuk-gu, Seoul,  Korea Selatan[3]Nama lainWendyPekerjaan Penyanyi Karier musikGenreK-popInstrumenVokalTahun aktif2014–sekarangLabelS.M. EntertainmentArtis terkaitRed VelvetSM Town Nama KoreaHangul손승완 Alih AksaraSon Seung-wanMcCune–ReischauerSon Sŭng-wanNama panggungHang...

Massacre during WW2 This article relies largely or entirely on a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources.Find sources: Janowa Dolina massacre – news · newspapers · books · scholar · JSTOR (April 2023) Janowa Dolina in the 1930s Janowa DolinaŁuckBrześćLwówKrakówPoznańWarsawWilnoStanisławówclass=notpageimage| Location of Janowa Dolina massacr...

Japanese manga series ProphecyFirst tankōbon volume cover予告犯(Yokokuhan)GenreThriller[1] MangaWritten byTetsuya TsutsuiPublished byShueishaEnglish publisherNA: VerticalMagazineJump XDemographicSeinenOriginal runJuly 25, 2011 – August 10, 2013Volumes3 MangaYokokuhan: The CopycatWritten byTetsuya TsutsuiIllustrated byFumio ObataPublished byShueishaMagazineJump X(April 10–October 10, 2014)Weekly Young Jump(March 11–July 23, 2015)DemographicSeinenOrigi...

2009 studio album by Tracy LawrenceThe RockStudio album by Tracy LawrenceReleasedJune 9, 2009GenreCountry/ChristianLength34:16LabelRocky Comfort/CO5ProducerJulian King, Tracy LawrenceTracy Lawrence chronology All Wrapped Up in Christmas(2007) The Rock(2009) The Singer(2011) Professional ratingsReview scoresSourceRatingCountry Weekly[1] The Rock is the tenth studio album by American country music artist Tracy Lawrence. His first album of Christian music, it was released on June...

Former railway station in Northamptonshire, England GrettonRemains of the station in 1995General informationLocationEnglandPlatforms2Other informationStatusDisusedHistoryPre-groupingMidland RailwayPost-groupingLondon, Midland and Scottish RailwayKey dates1 March 1880Opened18 April 1966Closed[1][2] Gretton railway station was a railway station near Gretton, Northamptonshire. It was on the Nottingham direct line of the Midland Railway of the Midland Railway. The steps up to the ...

Montenegrin footballer Jasna Đoković Đoković playing for Montenegro in 2014Personal informationFull name Jasna ĐokovićDate of birth (1991-10-29) 29 October 1991 (age 32)Place of birth Titograd, SFR YugoslaviaPosition(s) MidfielderTeam informationCurrent team SplitYouth career0000–2011 PalmaSenior career*Years Team Apps (Gls)2011–2012 Palma 2012–2014 Ekonomist 2014– SFK 2000 2021- Split 37 (33)International career‡2012– Montenegro 67 (8) *Club domestic league appearances...

K.H. Ahmad MuwafiqLahir(1974-03-02)2 Maret 1974 LamonganKebangsaanIndonesiaPekerjaanUlamaK.H. Ahmad Muwafiq, S.Ag (Arab: كياي حاج أحمد موفق) atau lebih dikenal dengan Kyai Muwafiq atau Gus Muwafiq (lahir 02 Maret 1974) adalah salah satu ulama Nahdlatul Ulama' (NU) yang mencerminkan pola pikir PBNU saat ini, dan kini tinggal di Sleman Yogyakarta. Gus Muwafiq pernah menjabat sebagai asisten pribadi KH. Abdurrahman Wahid (Gus Dur), termasuk saat menjabat sebagai Presiden Repub...

This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: 2022 UK Open – news · newspapers · books · scholar · JSTOR (February 2022) (Learn how and when to remove this template message) 2022 Cazoo UK OpenTournament informationDates4–6 March 2022VenueButlin'sLocationMineheadCountry EnglandOrganization(s)PDCFormatLegsFinal – best of 21Prize fund£450,000Wi...

American painter (1925–2009) Robert ColescottBornAugust 26, 1925 (1925-08-26)Oakland, CaliforniaDiedJune 4, 2009 (aged 83)Tucson, ArizonaNationalityAmericanKnown forGenre worksMovementNeo-expressionism Robert H. Colescott (August 26, 1925 – June 4, 2009) was an American painter. He is known for satirical genre and crowd subjects, often conveying his exuberant, comical, or bitter reflections on being African American. He studied with Fernand Léger in Paris. Colescott's work is i...

2020 compilation album by Rascal FlattsTwenty Years of Rascal Flatts: The Greatest HitsCompilation album by Rascal FlattsReleasedOctober 2, 2020Recorded1999–2017GenreCountryLength75:18LabelLyric Street, Big MachineProducerVarious original producersRascal Flatts chronology How They Remember You(2020) Twenty Years of Rascal Flatts: The Greatest Hits(2020) Twenty Years of Rascal Flatts: The Greatest Hits is the second greatest hits album by American country music group Rascal Flatts. I...

Swedish regisseur and director Olle HellbomBornNils Olof Hellbom(1925-10-08)8 October 1925Mörkö, SwedenDied5 June 1982(1982-06-05) (aged 56)Stockholm, SwedenNationalitySwedishOccupation(s)Director, film producer, screenwriterSpouseBirgit Hellbom ​ ​(m. 1956⁠–⁠1973)​ChildrenJan, Tove Nils Olof Olle Hellbom (8 October 1925 – 5 June 1982) was a Swedish film director, producer, and screenwriter. He is most famous for directing films...

Kembali kehalaman sebelumnya