一句话:提出首个面向调试器的交互式蜕变测试方法,通过运行时变换代码与调试动作检测调试器缺陷。
调试器对开发效率至关重要,但其自身缺陷会误导开发者,例如错误地显示代码未被执行或变量值不符。然而调试器难以测试:输入同时包含被调试源代码与设置断点、单步等调试动作序列。本文提出首个针对调试器的蜕变测试方法。核心思想是变换被调试代码和调试动作,使原始与变换后输入的行为仅按预期方式改变,例如新增断点不应改变控制流。为适应交互性,作者提出交互式蜕变测试:在被测程序运行时动态确定输入变换及其预期行为变化,而非预先固定。评估应用于 Chromium 浏览器广泛使用的调试器,发现 8 个此前未知的缺陷,真实正例率 51%,均获开发者确认,其中 1 个被标记为阻塞发布。
When improving their code, developers often turn to interactive debuggers. The correctness of these tools is crucial, because bugs in the debugger itself may mislead a developer, e.g., to believe that executed code is never reached or that a variable has another value than in the actual execution. Yet, debuggers are difficult to test because their input consists of both source code and a sequence of debugging actions, such as setting breakpoints or stepping through code. This paper presents the first metamorphic testing approach for debuggers. The key idea is to transform both the debugged code and the debugging actions in such a way that the behavior of the original and the transformed inputs should differ only in specific ways. For example, adding a breakpoint should not change the control flow of the debugged program. To support the interactive nature of debuggers, we introduce interactive metamorphic testing. It differs from traditional metamorphic testing by determining the input transformation and the expected behavioral change it causes while the program under test is running. Our evaluation applies the approach to the widely used debugger in the Chromium browser, where it finds eight previously unknown bugs with a true positive rate of 51%. All bugs have been confirmed by the developers, and one bug has even been marked as release-blocking.
DOI 原文 ·
@inproceedings{paperbot5381,
title = {Interactive metamorphic testing of debuggers},
author = {Sandro Tolksdorf and Daniel Lehmann and Michael Pradel},
booktitle = {ISSTA},
year = {2019},
doi = {10.1145/3293882.3330567}
}