一句话:提出 Badge,用分层多臂老虎机同时估计 UI 事件的探索价值与探索多样性,以提升自动化 UI 测试效果。
自动化 UI 测试通过触发 UI 事件来提升覆盖率并发现崩溃,但既有事件优先级策略通常只估计探索价值,忽略同一事件多次触发所覆盖代码实体的探索多样性,导致在复杂应用上效果不佳。为此,论文提出 Badge:一种分层多臂老虎机模型,它基于该事件的历史探索以及同一 UI 组内事件的历史探索,联合估计 UI 事件的探索价值与探索多样性,并据此优先选择事件。作者在 21 个广泛使用的工业应用上评估 Badge,结果显示其相对当前最优/最佳实践工具取得 18%-146% 的代码覆盖率相对提升,发现 1.19-5.20 倍的唯一崩溃;进一步消融实验验证了 Badge 各算法的贡献。
To assure high quality of mobile applications (apps for short), automated UI testing triggers events (associated with UI elements on app UIs) without human intervention, aiming to maximize code coverage and find unique crashes. To achieve high test effectiveness, automated UI testing prioritizes a UI event based on its exploration value (e.g., the increased code coverage of future exploration rooted from the UI event). Various strategies have been proposed to estimate the exploration value of a UI event without considering its exploration diversity (reflecting the variance of covered code entities achieved by explorations rooted from this UI event across its different triggerings), resulting in low test effectiveness, especially on complex mobile apps. To address the preceding problem, in this paper, we propose a new approach named Badge to prioritize UI events considering both their exploration values and exploration diversity for effective automated UI testing. In particular, we design a hierarchical multi-armed bandit model to effectively estimate the exploration value and exploration diversity of a UI event based on its historical explorations along with historical explorations rooted from UI events in the same UI group. We evaluate Badge on 21 highly popular industrial apps widely used by previous related work. Experimental results show that Badge outperforms state-of-the-art/practice tools with 18%-146% relative code coverage improvement and finding 1.19-5.20 × unique crashes, demonstrating the effectiveness of Badge. Further experimental studies confirm the benefits brought by Badge's individual algorithms.