一句话:提出基于代码数据增强的测试预言 GLIB,自动检测游戏等图形丰富应用中的非崩溃性 GUI 渲染缺陷,在真实游戏上达到高精度与高召回。
图形丰富应用(如游戏)的 GUI 复杂,易出现图形故障。现有自动化测试主要检测崩溃,非崩溃性图形故障需人工判定,缺乏自动测试预言。本文提出 GLIB,利用基于代码的数据增强技术,自动为图形丰富应用构建测试预言,检测 GUI 渲染故障。在 20 个有 bug 报告的真实游戏上,GLIB 达到 100% 精度和 99.5% 召回;在另 14 个无 bug 报告游戏上,发现 53 个 GUI 故障,其中 48 个已被确认并修复。
Graphically-rich applications such as games are ubiquitous with attractive visual effects of Graphical User Interface (GUI) that offers a bridge between software applications and end-users. However, various types of graphical glitches may arise from such GUI complexity and have become one of the main component of software compatibility issues. Our study on bug reports from game development teams in NetEase Inc. indicates that graphical glitches frequently occur during the GUI rendering and severely degrade the quality of graphically-rich applications such as video games. Existing automated testing techniques for such applications focus mainly on generating various GUI test sequences and check whether the test sequences can cause crashes. These techniques require constant human attention to captures non-crashing bugs such as bugs causing graphical glitches. In this paper, we present the first step in automating the test oracle for detecting non-crashing bugs in graphically-rich applications. Specifically, we propose GLIB based on a code-based data augmentation technique to detect game GUI glitches. We perform an evaluation of GLIB on 20 real-world game apps (with bug reports available) and the result shows that GLIB can achieve 100% precision and 99.5% recall in detecting non-crashing bugs such as game GUI glitches. Practical application of GLIB on another 14 real-world games (without bug reports) further demonstrates that GLIB can effectively uncover GUI glitches, with 48 of 53 bugs reported by GLIB having been confirmed and fixed so far.
@inproceedings{paperbot6368,
title = {GLIB: towards automated test oracle for graphically-rich applications},
author = {Ke Chen and Yufei Li and Yingfeng Chen and Changjie Fan and Zhipeng Hu and Wei Yang},
booktitle = {FSE},
year = {2021},
doi = {10.1145/3468264.3468586}
}