Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/3687997.3695648acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Bugfox: A Trace-Based Analyzer for Localizing the Cause of Software Regression in JavaScript

Published: 17 October 2024 Publication History

Abstract

Software regression has been a persistent issue in software development. Although numerous techniques have been proposed to prevent regression from being introduced before release, few are available to address regression as it occurs post-release. Therefore, identifying the root cause of regression has always been a time-consuming and labor-intensive task. We aim to deliver automated solutions for solving regressions based on tracing. We present Bugfox, a trace-based analyzer that reports functions as the possible cause of regression in JavaScript. The idea is to generate runtime trace with instrumented programs, then extract the differences between clean and regression traces, and apply two heuristic strategies based on invocation order and frequency to identify the suspicious functions among differences. We evaluate our approach on 12 real-world regressions taken from the benchmark BugsJS. First strategy solves 6 regressions, and second strategy solves other 4 regressions, resulting in an overall accuracy of 83% on test cases. Notably, Bugfox solves each regression in under 1 minute with minimal memory overhead (<200 Megabytes). Our findings suggest Bugfox could help developers solve regression in real development.

References

[1]
Kent Beck, Erich Gamma, David Saff, and Kris Vasudevan. 2024. JUnit - a programmer-friendly testing framework for Java and the JVM. https://junit.org/junit5/
[2]
D. Callahan, A. Carle, M.W. Hall, and K. Kennedy. 1990. Constructing the procedure call multigraph. IEEE Transactions on Software Engineering, 16, 4 (1990), 483–487. https://doi.org/10.1109/32.54302
[3]
Yiyu He Fengmk and Others. 2023. hessian.js - a js hessian binary web service protocol. https://github.com/node-modules/hessian.js
[4]
OpenJS Foundation. 2024. Mocha - the fun, simple, flexible test framework. https://mochajs.org/
[5]
Todd L. Graves, Mary Jean Harrold, Jung-Min Kim, Adam Porter, and Gregg Rothermel. 2001. An empirical study of regression test selection techniques. ACM Trans. Softw. Eng. Methodol., 10, 2 (2001), apr, 184–208. issn:1049-331X https://doi.org/10.1145/367008.367020
[6]
Péter Gyimesi, Béla Vancsics, Andrea Stocco, Davood Mazinanian, Árpád Beszédes, Rudolf Ferenc, and Ali Mesbah. 2019. BugsJS: a Benchmark of JavaScript Bugs. In 2019 12th IEEE Conference on Software Testing, Validation and Verification (ICST). 90–101. https://doi.org/10.1109/ICST.2019.00019
[7]
TJ Holowaychuk and StrongLoop. 2024. Express - fast, unopinionated, minimalist web framework for Node.js. https://expressjs.com/
[8]
Yuefeng Hu, Hiromu Ishibe, Feng Dai, Tetsuro Yamazaki, and Shigeru Chiba. 2024. Artifact - Bugfox: A Trace-based Analyzer for Localizing the Cause of Software Regression in JavaScript. https://doi.org/10.5281/zenodo.13814132
[9]
Cypress.io Inc. 2024. cypress - fast, easy and reliable testing for anything that runs in a browser. https://www.cypress.io/
[10]
Caucho Technology Inc. 2022. Hessian binary web service protocol. http://hessian.caucho.com/
[11]
Developer Express Inc. 2024. TestCafe - a Node.js tool to automate end-to-end web testing. https://testcafe.io/
[12]
Hiromu Ishibe. 2023. A cause detector of software regressions by comparing program execution traces. Master’s thesis. The University of Tokyo. Japan. https://csg-www.s3.ap-northeast-1.amazonaws.com/public/papers/23/master-ishibe.pdf
[13]
Pekka Klärck and Janne Härkönen. 2024. Robot - generic automation framework for acceptance testing and RPA. https://robotframework.org/
[14]
Pivotal Labs. 2024. jasmine - simple JavaScript testing framework for browsers and node.js. https://jasmine.github.io/
[15]
Djordje Maksimovic, Andreas Veneris, and Zissis Poulos. 2015. Clustering-based revision debug in regression verification. In 2015 33rd IEEE International Conference on Computer Design (ICCD). 32–37. https://doi.org/10.1109/ICCD.2015.7357081
[16]
Christoph Nakazawa, Orta Therox, Simen Bekkhus, and Ricky. 2024. Jest - a delightful JavaScript testing framework with a focus on simplicity. https://jestjs.io/
[17]
James Newkirk and Brad Wilson. 2024. xUnit - a free, open source, community-focused unit testing tool for .NET. https://xunit.net/
[18]
Chris Parnin and Alessandro Orso. 2011. Are automated debugging techniques actually helping programmers? In Proceedings of the 2011 International Symposium on Software Testing and Analysis (ISSTA ’11). Association for Computing Machinery, New York, NY, USA. 199–209. isbn:9781450305624 https://doi.org/10.1145/2001420.2001445
[19]
Fabrizio Pastore, Leonardo Mariani, and Alberto Goffi. 2013. RADAR: A tool for debugging regression problems in C/C++ Software. In 2013 35th International Conference on Software Engineering (ICSE). 1335–1338. https://doi.org/10.1109/ICSE.2013.6606711
[20]
Charlie Poole, James Newkirk, Alexei Vorontsov, Michael Two, Philip Craig, Rob Prouse, Simone Busoli, and Neil Colvin. 2024. NUnit - a unit-testing framework for all .NET languages. https://nunit.org/
[21]
Raúl H. Rosero, Omar S. Gómez, and Glen Rodríguez. 2016. 15 Years of Software Regression Testing Techniques — A Survey. International Journal of Software Engineering and Knowledge Engineering, 26, 05 (2016), 675–689. https://doi.org/10.1142/S0218194016300013
[22]
Hema Srikanth and Myra B. Cohen. 2011. Regression testing in Software as a Service: An industrial case study. In 2011 27th IEEE International Conference on Software Maintenance (ICSM). 372–381. https://doi.org/10.1109/ICSM.2011.6080804
[23]
Mark VanderVoord and Doctor Surly. 2024. unity - simple unit testing for C. https://www.throwtheswitch.org/unity
[24]
Nicholas C. Zakas. 2024. ESLint - a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code. https://eslint.org/

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
SLE '24: Proceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering
October 2024
235 pages
ISBN:9798400711800
DOI:10.1145/3687997
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 October 2024

Permissions

Request permissions for this article.

Check for updates

Badges

Author Tags

  1. Code Transformation
  2. Debugging
  3. Regression
  4. Runtime Tracing

Qualifiers

  • Research-article

Funding Sources

  • JSPS KAKENHI

Conference

SLE '24
Sponsor:

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 85
    Total Downloads
  • Downloads (Last 12 months)85
  • Downloads (Last 6 weeks)6
Reflects downloads up to 05 Mar 2025

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media