移动应用软件是以图形界面为交互基础、用户和环境事件为驱动的复杂软件,如何保证其功能稳定和正确具有重要意义,这也一直是学界和业界普遍关心的问题。今年,beat365手机中文官方网站苏亭教授课题组在该研究方向上取得了多项研究进展,并分别发表在SPLASH/OOPSLA 2021、ESEC/FSE 2021、ISSTA 2021三个程序语言/软件工程领域的国际会议上(均为CCF-A类会议且华东师范大学为第一完成单位)。
研究进展1
保证移动应用软件的功能稳定性非常重要,即需要在软件发布前尽最大限度排除应用闪退/崩溃类型的错误。该问题在学术界从2011年至今已经展开了10年的研究工作,形成了一批功能稳定性测试工具。但是该领域至今仍然没有一个统一的基准测试平台和系统用于分析判断这些测试工具本身的有效性,一定程度上限制了该领域的发展。
为此,课题组提出了该领域内第一个基准测试平台和系统Themis,通过对学术界主流测试工具的评估,发现了不少有意义的结论。课题组对工业界测试工具也展开了进一步有效性评估,初步分析结果得到了业界的积极反馈,部分优化方案已经被采纳集成。
该研究工作发表在了软件工程领域国际会议ESEC/FSE 2021 : Benchmaking Automatged GUI Testing for Android against Real-World Bugs。
研究进展2
保证移动软件的功能正确性非常重要。功能正确性错误是一类影响软件功能正常使用的软件错误,一般不会以应用闪退/崩溃等形式展现,因此对此类错误的自动化测试难度很大,业界现有的解决方案是手工测试。为此,课题组独创性地提出了第一个全自动化的功能正确性测试技术Genie,该技术是第一个不受限于特定软件功能、不依赖于用户提供测试脚本的高自动化测试技术。
Genie工具的工作流程图
该研究工作发表在了程序语言和软件工程领域国际会议 SPLASH/OOPSLA 2021:Fully Automated Functional Fuzzing of Android Apps for Detecting Non-crashing Logic Bugs 。
研究进展3
移动应用可能会受到系统设置等外部环境的影响,例如设备的方向和设备所处的网络环境。如果应用不能很好地适应这些配置变更,将会产生包括崩溃、功能失效、卡死等严重后果。因为设备的环境会随时发生变化,并且可能会有多个因素同时发生变化,依赖人工检查保持功能稳定和正确非常复杂和繁琐。
为此,课题组提出了一种全自动的基于设置更改的蜕变测试技术SetDroid,可以全自动地检测软件运行的各个过程中所暴露出的设置缺陷。该技术在开源应用和五个用户量过亿的商业应用中检测到不少此前未知的设置缺陷,目前已在字节跳动展开技术落地的尝试,在内部评测中发现了相关软件产品的多个缺陷,并且得到了确认和修复。
该研究工作发表在软件工程领域国际会议ISSTA 2021: Understanding and Finding System Setting-Related Defects in Android Apps(注:该工作为蒲戈光教授和苏亭教授共同指导的课题组博士生完成)。
致谢
上述研究成果受到了国家自然基金面上项目“基于随机性质的移动应用软件功能错误自动化检测技术”、华东师范大学科研启动经费和上海市高可信重点实验室主任基金的资助和支持。