[发明专利]基于事件处理器的Android自动化测试工具及测试方法有效
申请号: | 201610016174.6 | 申请日: | 2016-01-11 |
公开(公告)号: | CN105677569B | 公开(公告)日: | 2018-02-02 |
发明(设计)人: | 宋巍;钱祥星;黄青青 | 申请(专利权)人: | 南京理工大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京理工大学专利中心32203 | 代理人: | 朱显国 |
地址: | 210094 *** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 事件 处理器 android 自动化 测试 工具 方法 | ||
技术领域
本发明涉及软件测试领域,特别是一种基于事件处理器的Android自动化测试工具及测试方法。
背景技术
目前国内外对Android App测试的研究主要集中在事件输入的生成。根据研究探索方式的不同,现有工作主要分为两类:模糊测试(fuzzing testing)和基于GUI模型测试。模糊测试又称为随机测试,其核心思想是自动或半自动地生成随机数据输入到程序中,监视程序的异常情况,如崩溃,断言失败等,以发现程序中可能的错误。基于GUI模型的测试是指基于App的GUI模型,测试工具去系统地探索App,触发App中的事件;这类测试方法首先生成App的GUI模型,GUI模型反映了App中状态之间的联系,直观地表达状态的传递关系;基于App的GUI模型,测试工具使用状态覆盖作为测试准则,探索GUI模型中的所有状态。
上述两类测试方法各有其优点,如模糊测试适合压力测试,基于GUI模拟的测试能够系统地探索App,达到较高的覆盖率。然而这两类测试方法也都存在各自的不足:模糊测试无法生成特殊的测试输入,并且无法保证测试的完整性;基于GUI模型的测试依赖完整的GUI模型,现有的GUI模型获取方式,无论是静态分析获取还是动态执行获取都无法保证模型的完整性。
另外,上述工具都是基于UI测试的工具,都没有考虑系统事件和Inter-App事件。因此,Android测试的难点总结为以下两点:一是包含丰富的事件输入,如UI事件、系统事件和Inter-App事件,部分事件难以模拟;二是缺少系统的探索方法。
发明内容
本发明的目的在于提供一种基于事件处理器的Android自动化测试工具及测试方法。
实现本发明目的的技术方案为:一种基于事件处理器的Android自动化测试工具,包括事件插桩模块、代码分析工具Soot和App探索模块;
事件插桩模块包括XML解析器、识别器、分发器、语句构造器和语句管理器;
XML解析器用于收集在XML中定义的事件,解析器的输入是Apk的XML文件,包括App的资源文件和AndroidManifest.xml,资源文件包含UI事件,AndroidManifest.xml包含系统事件和Inter-App事件;XML解析器的输出是在资源文件和AndroidManifest.xml中定义的UI事件、系统事件和Inter-App事件;
识别器用于识别在代码中定义的事件,识别器的输入是Apk的Dex文件,Dex文件包含App所有的源代码,识别器采用程序静态分析方法,查找在代码中定义的UI事件和系统事件;识别器的输出是在代码中定义的UI事件和系统事件;
分发器用于将XML解析器和识别器收集到的事件分发给事件所属的活动;
语句构造器用于构造事件处理器的调用语句;语句构造器的输入是收集的事件,输出是事件处理器调用语句,调用语句用于验证事件处理器的正确性;
语句管理器用于管理事件处理器调用语句,语句管理器的输入是事件处理器调用语句,输出是“Test”事件,“Test”事件的事件处理器封装所有事件处理器的调用语句;
代码分析工具Soot将插桩的调用语句、“Test”事件和Apk的源 代码重新打包成一个新的Apk文件;
App探索模块对重新打包后的Apk文件进行自动化测试。
一种基于事件处理器的Android自动化测试工具的测试方法,包括以下步骤:
步骤1、解压缩Apk文件,获得Apk中的XML文件和Dex文件;
步骤2、使用XML解析器解析XML文件,查找并获取在XML中定义的UI事件、系统事件和Inter-App事件;
步骤3、使用识别器分析Dex文件,查找在代码中定义的UI事件和系统事件;
步骤4、分发器对XML解析器和识别器收集到的事件统一处理,获取事件的事件源和事件处理器,将事件信息分发给各自的活动;
步骤5、活动获得事件处理器后,语句构造器构造事件处理器的调用语句;
步骤6、语句管理器创建“Test”事件,将调用语句插桩在“Test”事件的事件处理器中;
步骤7、代码分析工具Soot将插桩的调用语句、“Test”事件和Apk的源 代码重新打包成一个新的Apk文件;
步骤8、App探索模块启动App,执行自动化测试;
步骤9、测试结束后,输出测试结果,包括本次测试的耗时、代码覆盖率、发现的bug数目和bug类型。
本发明与现有技术相比,其显著优点为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京理工大学,未经南京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610016174.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种内科检查床
- 下一篇:一种甲状腺手术定位装置