一句话:通过去除通过日志中的噪声行,并用改进的TF-IDF与排他性KNN定位,捕获89%产品故障且仅标记不到1%失败日志行。
现代软件测试会产生数千行日志输出,使在日志中定位故障原因变得困难,环境故障还会干扰产品故障的识别。本文目标是在捕获最多产品故障的同时,仅标记最少的日志行供人工检查。作者观察到:故障位置应包含在失败测试日志中,而通过测试日志不应包含与失败相关的行;同时出现在通过和失败日志中的行会在定位时引入噪声。因此,他们从失败日志中移除通过日志中出现的行,再使用信息检索技术标记最可能的故障行。具体而言,论文修改TF-IDF以识别与历史产品故障最相关的日志行,并对日志进行向量化,开发了一种排他性KNN来识别哪些日志可能导致产品故障以及哪些行最可能指示失败。最佳方法LogFaultFlagger找到89%的总故障,仅标记不到1%的失败日志行用于检查,大幅优于先前工作CAM。该工具已在爱立信实现,向基站测试人员展示故障预测摘要。
Software testing is an integral part of modern software development. However, test runs can produce thousands of lines of logged output that make it difficult to find the cause of a fault in the logs. This problem is exacerbated by environmental failures that distract from product faults. In this paper we present techniques with the goal of capturing the maximum number of product faults, while flagging the minimum number of log lines for inspection. We observe that the location of a fault in a log should be contained in the lines of a failing test log. In contrast, a passing test log should not contain the lines related to a failure. Lines that occur in both a passing and failing log introduce noise when attempting to find the fault in a failing log. We introduce an approach where we remove the lines that occur in the passing log from the failing log. After removing these lines, we use information retrieval techniques to flag the most probable lines for investigation. We modify TF-IDF to identify the most relevant log lines related to past product failures. We then vectorize the logs and develop an exclusive version of KNN to identify which logs are likely to lead to product faults and which lines are the most probable indication of the failure. Our best approach, LogFaultFlagger finds 89% of the total faults and flags less than 1% of the total failed log lines for inspection. LogFaultFlagger drastically outperforms the previous work CAM. We implemented LogFaultFlagger as a tool at Ericsson where it presents fault prediction summaries to base station testers.