关键词:
确定性重放
移动Web组件
软件测试
摘要:
移动应用开发者使用Web技术提高开发敏捷性和应用兼容性。确定性重放能重现程序执行过程,帮助开发者调试Web应用。目前的Web重放工具要求特定的运行环境(例如要求修改Web渲染引擎),不适用于实际使用场景。此外,移动设备的触摸屏使得重放工具常常要在短时间内重放大量输入事件,给重放时间精度带来挑战,而当前的Web重放工具缺少控制重放时间的有效手段。本文设计并实现了一个支持移动平台中Web组件的确定性重放工具Timely Rep,它能记录和确定性地重放Android Web View组件内发生的不确定性源,重现程序运行状态。在记录阶段,Timely Rep记录影响程序状态的不确定性源,使用网络代理记录Web View的网络通信,通过包装和覆盖Web API记录消息循环和不确定函数;在重放阶段,Timely Rep按照记录顺序依次重放这些不确定性源,并且根据它们的记录时间调度重放的时机,实现高精度的确定性重放。Timely Rep高时间精度的重放不仅能用于再现应用错误和实施自动化测试,还能协助开发者调优应用性能和发现时间相关漏洞。本文的主要贡献包括:·提出了一种间隔敏感的多优先级调度算法,通过分析各调度方式的优先级和优缺点,对不同的调度间隔采用不同调度方式,控制重放时间。同时采用加载技术优化重放流程,进一步提高重放的时间精度。·提出一种在应用内部确定性重放网络的机制,通过实现位于应用内部的网络代理,Timely Rep不需要修改操作系统和安装额外软件环境,能够在真实用户设备上使用。·基于上述方法,设计并实现了确定性重放工具Timely Rep,它能够高精度地对移动应用内的Web组件进行确定性重放,具有高保真度、高时间精度和良好的兼容性。同时,Timely Rep也实现了对跨设备重放的支持。本文选择8个普通应用、2个游戏应用,在6台不同设备上验证了Timely Rep实现的正确性和本文方法的有效性。实验表明,Timely Rep能重现应用的竞争条件漏洞,相比其他重放工具,重放时间精度提高了2至6倍。