论文部分内容阅读
运行Android系统的设备覆盖广泛,不仅包括手机、平板电脑、笔记本电脑、台式电脑,也包括汽车中控、电视机等嵌入式系统设备。通常每台Android系统的手机或者平板电脑都运行着数十到上百个应用程序,相对精简的嵌入式设备也会运行数十个应用程序,这些移动设备上的应用程序简称App。移动软件开发者在开发过程中需要对App进行测试,但由于Android系统版本和设备的碎片化严重,系统软件版本不尽相同,硬件型号各异,当App运行在用户设备上时,可能遇到碎片化引起的不兼容问题,触发在开发测试阶段没有发现的质量缺陷。Android系统包含许多系统、应用的突发事件,例如来电、闹钟、转屏等,这些突发事件会打乱App正常的运行逻辑,产生在开发测试过程中难以发现的问题。除此之外,如何详尽完善地收集用户设备上App出错的信息,也是App质量提升的关键性难题。本文介绍了Android字节码插桩技术、移动App灰盒测试,并提出了基于字节码插桩技术的可复现灰盒干扰测试的概念,依据该概念提出并设计了全新的App质量提升方法和依据该方法的JazzDroid工具组。本文提出的方法包括无需人为干预的字节码插桩和App重打包、App信息收集、App测试阶段的环境干扰、质量缺陷复现、远程调试等模块,实现了可复现的移动应用程序干扰测试方法。本文提出干扰效率指标EI值并设计了其相应的计算公式,实现了量化的优化干扰测试效率的方法。本文提出的多种方法能够帮助App开发者在软件开发的各个阶段发现问题、定位问题,进而提高App的质量。本文将Android App质量提升方法、JazzDroid工具组的各个功能模块进行测试,本文介绍的方法与同领域的其他解决方案进行对比,验证质量提升系统的效果。本系统在上百个应用商店持续更新的商业App上进行效果试验,结果显示相比于通用的测试方法平均发现6倍数量的质量缺陷,一共发现了99个不同的质量缺陷,所有质量缺陷经过JazzDroid设计的复现方法确认。评估测试对所有质量缺陷进行复现,对所有质量缺陷发生的时间点和触发原因进行深入分析,提出了何时停止测试的计算方法。同时,评估测试对部分质量缺陷的触发原因进行了代码级跟踪,总结出一些常见的由干扰测试触发的质量缺陷模式。最后,评估测试对JazzDroid和质量提升方法本身的性能进行测试,证明其在开发环境和持续集成环境的可用性。