一种安卓自动化单元测试方法技术

技术编号:36270069 阅读:26 留言:0更新日期:2023-01-07 10:11
本发明专利技术涉及软件测试技术领域,公开了一种安卓自动化单元测试方法,通过搜索算法,生成随机且覆盖边界计算、断言以及测试数据多样化的测试用例;并且对于安卓程序,本发明专利技术可以通过转换库将原生安卓代码语句转换为可直接运行JVM环境的语句,并基于JVM环境进行安卓单元测试,有效提升单元测试的覆盖率,降低编写安卓单元测试的人力成本。同时本发明专利技术避免动态编译,直接构建JUnit测试类对象,此对象动态获取测试语句并执行测试语句,支持将JUnit测试类对象传输到执行器内核直接运行,省略了动态编译的内存和时间开销,有效提高了单元测试效率。率。率。

【技术实现步骤摘要】
一种安卓自动化单元测试方法


[0001]本专利技术属于软件测试
,尤其涉及一种安卓自动化单元测试方法。

技术介绍

[0002]随着数字化和信息化的不断发展,许多企业或用户个体对软件系统的依赖程度日益攀升,而软件安全及质量问题也越来越受到广大用户的重视。软件测试是保障软件质量的重要手段,但是,随着软件开发规模的增大、复杂程度的日益增加,如何快速寻求软件中的错误也愈加困难。而单元测试是自动测试领域的重要基石部分,其主要目标是验证代码的功能性与异常情况的处理能力,所以单元测试对于软件的稳定具有重大意义。
[0003]在现有技术中,安卓开发工作人员在进行安卓程序测试时,存在以下问题:(1)面对安卓软件中复杂的类和方法,需要大量且多样的测试用例,且都要开发(或测试)人员自己编写,人力成本高,效率低下;(2)安卓程序若打包到Android虚拟机(或真机)运行、调试、测试,则运行速度慢,导致设备运行时测试效率低下;而Android语句由于依赖Android系统的接口,若直接运行到JVM,由于android.jar文件并没有具体实现,当Andro本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种安卓自动化单元测试方法,其特征在于,所述方法包括以下步骤:T1、解析被测源代码的结构信息;对被测源代码进行覆盖目标插桩,生成用于收集测试信息的回调桩程序;构造测试用例的适应度评价函数;T2、创建并使用自定义测试类JunitTestStatements:针对插桩后的被测源代码,初始化生成测试代码;通过转换库对测试代码中的安卓组件进行虚拟化构造,将安卓原生语句转化为可直接运行于JVM环境的代码;虚拟化构造后的测试代码包括多个测试用例,每个测试用例对应一个测试用例方法,多个测试用例组成一个单元测试用例集;T3、创建测试执行器,通过反射机制获取测试代码中的测试用例方法并运行到JVM中进行单元测试;T4、在执行单元测试的过程的同时,利用适应度评价函数计算所述单元测试用例集中各测试用例的适应度结果;根据得到的适应度结果,通过搜索算法对单元测试用例集进行搜索,并生成新一代的单元测试用例集;T5、根据得到的新一代的单元测试用例集进行单元测试,重复步骤T4,直至单元测试用例集达到预先设定的覆盖率指标或搜索算法迭代次数达到预设值;T6、结束迭代后,对得到的测试用例集进行最终测试,在进行最终测试的过程中,通过回调桩程序收集测试信息,得到各类覆盖率信息,整合信息并输出最终测试结果报告。2.根据权利要求1所述的一种安卓自动化单元测试方法,其特征在于,步骤T1过程如下:T11、解析被测源代码的文件结构信息和依赖信息,获取生成用例时所需要的参数信息,同时生成被测源代码的控制流图;T12、设定覆盖率指标和迭代次数,选择用于优化测试用例的搜索算法;根据控制流图确定被测源代码的分支与路径;T13、根据得到的分支与路径,利用插桩技术对被测源代码进行覆盖目标插桩,生成用于收集测试信息的回调桩程序;T14、根据设定的覆盖率指标构造测试用例的适应度评价函数。3.根据权利要求2所述的一种安卓自动化单元测试方法,其特征在于,步骤T12中,所述覆盖率指标为行覆盖率、分支覆盖率和路径覆盖率中的一种或任意组合;所述搜索算法包括基于搜索的决策方法或者状态遍历方法。4.根据权利要求1所述的一种安卓自动化单元测试方法...

【专利技术属性】
技术研发人员:黄翰曹捷崔书中雷丰强
申请(专利权)人:微科智检佛山市科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1