论文部分内容阅读
随着安卓移动设备在日常生活的普及,手机智能应用得到了广泛的使用。然而,安卓程序存在的质量问题不仅影响用户体验,还可能带来潜在的安全风险。为了保障应用的质量,当前面向安卓平台的动态的测试与分析技术被广泛地研究,这些技术通常以一定的策略生成测试输入,动态地对应用程序的运行状态空间予以遍历,对缺陷进行触发与检测。本文关注测试技术的有效实现,围绕相关通用支撑工具的设计与实现展开研究。测试技术最终需要以原型工具的形式予以呈现,并进行部署使用。现有实现机制集中地表现出以下特点:在实现过程中,开发者普遍地组合依赖于多个已有底层工具包来满足功能需求;此外,不少工具通过对系统的修改或应用的插桩来完成测试过程中动态的程序内部数据读写过程。底层工具彼此之间以及与系统之间所存在的版本兼容等问题给现有测试工具带来普遍的后续维护与使用方面的挑战。本文认为,现有实现机制尚缺乏对技术实现需求的系统性的认识。本文基于对现有技术及其实现方式的分析探讨,达成需求分析,最终围绕简洁有效可靠的面向安卓应用测试工具实现技术展开研究,完成以下两方面的研究工作:1.基于对现有安卓测试分析技术实现的剖析与探讨,本文首次明确提出技术实现中的层次化功能需求模型与多元非功能需求体系。层次化的功能需求模型围绕测试过程中的应用状态获取与状态改变对技术需求在不同粒度予以总结。同时,我们认识到技术实现并非只在于满足其功能需求,还应当对性能等非功能需求予以考量。基于此,我们总结得出包含简化性、侵入性、高效性的非功能需求指标体系,其中,侵入性与高效性存在彼此制衡的关系,并最终造成对简化程度的影响,技术的有效实现应当在不同的需求指标之间进行权衡。2.针对当前可用底层工具缺乏对于测试技术需求的系统认识与有效权衡的局限,本文基于需求分析提取出低侵入高性能与高覆盖可扩展的测试场景,并结合具体情境设计实现有效的中间框架技术作为抽象层,帮助测试人员进行简洁有效可靠的工具开发。ATT(Android Testing Toolkit)作为本文提出的低侵入高性能应用场景下的测试框架技术方案,旨在简化对于性能存在较高要求的测试技术的实现过程。低侵入高性能意味着ATT应规避对于系统修改和应用插桩的过度依赖,同时也限制了其对于目标应用精细化的运行轨迹的追踪与分析过程,在对测试技术的广泛覆盖方面存在瓶颈。而AndroidQL(Android Query Language)是本文提出的具备高覆盖可扩展特征的测试框架技术方案,以对测试技术的广泛覆盖作为主要目标,能够实现指令级别的程序运行轨迹追踪,并将程序运行上下文暴露给外部测试工具,在此过程中可接受一定程度的额外运行开销。进一步地,本文完成ATT与AndroidQL框架技术的设计、实现与实验评估。最后,本文基于ATT和AndroidQL对部分现有的典型安卓应用动态分析技术进行重现,并进一步完成一些高阶工具的设计与实现,最终在真实的安卓应用中检测到前所未知的质量缺陷。