一句话:提出面向 JavaScript 现场缺陷的追踪与聚类工具链,通过错误信息增强和语言特征聚类提升缺陷归并效果。
现代软件迭代快、集成复杂,开发阶段难覆盖所有缺陷,许多缺陷只在生产环境暴露。现场错误报告数量庞大,高频琐碎缺陷淹没低频重要缺陷;代码演化还使同一缺陷在不同版本产生不同异常与栈轨迹。为此,作者提出面向 JavaScript 应用的缺陷追踪与聚类工具链 Foliage。它采用错误信息增强技术,并提出基于字符/语言特征的聚类方法与 V-measure、基数偏差、命中率三项评估指标。实验表明,其聚类效果平均比已有方法提升 31.1%;在真实应用两年生产数据中捕获超 25 万条错误报告,聚类为 132 个独立缺陷。作者还开源了带标签的错误报告数据集。
Modern programs, characterized by their complex functionalities, high integration, and rapid iteration cycles, are prone to errors. This complexity poses challenges in program analysis and software testing, making it difficult to achieve comprehensive bug coverage during the development phase. As a result, many bugs are only discovered during the software’s production phase. Tracking and understanding these field bugs is essential but challenging: the uploaded field error reports are extensive, and trivial yet high-frequency bugs can overshadow important low-frequency bugs. Additionally, application codebases evolve rapidly, causing a single bug to produce varied exceptions and stack traces across different code releases. In this paper, we introduce Foliage, a bug tracking and clustering toolchain designed to trace and characterize field bugs in JavaScript applications, aiding developers in locating and fixing these bugs. To address the challenges of efficiently tracking and analyzing the dynamic and complex nature of software bugs, Foliage proposes an error message enhancement technique. Foliage also introduces the verbal-characteristic-based clustering technique, along with three evaluation metrics for bug clustering: V-measure, cardinality bias, and hit rate. The results show that Foliage’s verbal-characteristic-based bug clustering outperforms previous bug clustering approaches by an average of 31.1% across these three metrics. We present an empirical study of Foliage applied to a complex real-world application over a two-year production period, capturing over 250,000 error reports and clustering them into 132 unique bugs. Finally, we open-source a bug dataset consisting of real and labeled error reports, which can be used to benchmark bug clustering techniques.
DOI 原文 ·
@inproceedings{paperbot8578,
title = {Foliage: Nourishing Evolving Software by Characterizing and Clustering Field Bugs},
author = {Zhanyao Lei and Yixiong Chen and Mingyuan Xia and Zhengwei Qi},
booktitle = {ISSTA},
year = {2024},
doi = {10.1145/3650212.3680363}
}