[论文解读] Grey-box GUI Testing: Efficient Generation of Event Sequences
本文提出了一种灰盒GUI测试方法,通过结合黑盒事件流图(EFG)与白盒事件依赖图(EDG),生成高效且依赖数据的事件序列。通过分析字节码以建模事件处理器之间的数据依赖关系,并将其映射到EFG上,该方法在保持覆盖率的同时减少了测试用例规模,并在开源应用程序中发现了两个新缺陷。
Graphical user interfaces (GUIs), due to their event driven nature, present a potentially unbounded space of all possible ways to interact with software. During testing it becomes necessary to effectively sample this space. In this paper we develop algorithms that sample the GUI's input space by only generating sequences that (1) are allowed by the GUI's structure, and (2) chain together only those events that have data dependencies between their event handlers. We create a new abstraction, called an event-dependency graph (EDG) of the GUI, that captures data dependencies between event handler code. We develop a mapping between EDGs and an existing black-box user-level model of the GUI's workflow, called an event-flow graph (EFG). We have implemented automated EDG construction in a tool that analyzes the bytecode of each event handler. We evaluate our "grey-box" approach using four open-source applications and compare it with the current state-of-the-art EFG approach. Our results show that using the EDG reduces the number of test cases while still achieving at least the same coverage. Furthermore, we were able to detect 2 new bugs in the subject applications.
研究动机与目标
- 为解决GUI测试用例生成中的组合爆炸问题,通过减少无关或不可行的事件序列数量。
- 通过在测试生成过程中引入事件处理器之间的数据依赖关系,提升测试效率与有效性。
- 通过生成更精准且语义有意义的测试序列,检测先前未知的缺陷。
- 弥合黑盒GUI建模与白盒代码分析之间的差距,实现更精确的测试用例生成。
提出的方法
- 通过运行时观察构建事件流图(EFG),以建模GUI工作流的结构约束。
- 分析应用程序的字节码,自动构建捕捉事件处理器之间数据流的事件依赖图(EDG)。
- 将数据依赖关系建模为EDG中的加权边,其中权重表示处理器之间传递的字段数量。
- 通过在EDG上进行极小化-极大化搜索生成抽象事件序列,优先选择具有数据依赖关系的序列。
- 使用EFG将EDG中的抽象序列映射为可执行序列,以确保结构上的可行性。
- 将生成的可执行序列集成到测试用例中,确保结构正确性与数据依赖链的完整性。
实验结果
研究问题
- RQ1是否可以通过建模事件处理器之间的数据依赖关系,采用灰盒方法在保持覆盖率的同时减少生成的测试序列数量?
- RQ2将事件依赖图(EDG)与事件流图(EFG)结合,如何提升测试用例集的效率?
- RQ3基于EDG的方法在GUI应用程序中检测新缺陷或先前遗漏缺陷的能力有多强?
- RQ4该方法能否识别并优先处理具有高跨过程数据依赖关系的“热点”事件?
主要发现
- 与仅使用EFG的黑盒方法相比,基于EDG的方法显著减少了生成的事件序列数量,提升了效率。
- 该方法在生成更少测试用例的同时,实现了与EFG方法相当甚至更高的测试覆盖率。
- 在目标应用程序中发现了两个新缺陷——一个在Rachota中,一个在JabRef中,证明了缺陷检测能力的提升。
- 该方法仅组合依赖数据的事件,有效避免了不可行或语义无关的序列。
- 在EDG上使用极小化-极大化搜索,实现了对GUI中高影响力、数据依赖路径的聚焦探索。
- 结合EFG与EDG建模,可实现可扩展、精确且高效的GUI测试用例生成。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。