Android 应用中并发相关不稳定测试的检测
软件工程
2021-05-24 v3
摘要
由于不稳定测试(flaky tests)的存在,通过测试对 Android 应用进行验证十分困难。由于非确定性执行环境,一个事件序列(一项测试)可能以不可预测的方式导致成功或失败。在本工作中,我们提出一种方法及其工具 FlakeShovel,通过系统地探索事件顺序来检测不稳定测试。我们的关键观察是:对于移动应用中的一项测试,存在一个创建测试事件的测试框架线程、一个处理这些事件的主用户界面(UI)线程,以及若干可能异步运行的后台线程。对于任意执行涉及潜在非确定性的事件 e,我们定位其必须发生之前(之后)的最早(最晚)事件。然后,我们在上下界事件之间高效地探索调度,同时将单个语句内的事件分组,以判断测试结果是否不稳定。我们还创建了一个称为 DroidFlaker 的被测程序套件,用于研究 Android 应用中的不稳定测试。我们在 DroidFlaker 套件上的实验证明了我们的不稳定测试检测的有效性。我们的工作是对现有不稳定测试检测工具(如仅检查失败测试的 Deflaker)的补充。正如我们的方法与实验所示,FlakeShovel 能够在通过的测试中检测出不稳定测试。
引用
@article{arxiv.2005.10762,
title = {Concurrency-related Flaky Test Detection in Android apps},
author = {Zhen Dong and Abhishek Tiwari and Xiao Liang Yu and Abhik Roychoudhury},
journal= {arXiv preprint arXiv:2005.10762},
year = {2021}
}