一种基于Android应用的覆盖率测试方法技术

技术编号:35456113 阅读:12 留言:0更新日期:2022-11-03 12:14
本发明专利技术公开了一种基于Android应用的覆盖率测试方法,通过搭建测试Jenkins持续集成平台,并编写shell插桩脚本,在覆盖率服务器的Jenkins平台上配置监听编译版本库更新任务,配置代码下载,自动插桩和代码提交的任务,配置版本构建任务,配置监听覆盖率数据更新任务,配置覆盖率报告生成和邮件发送的任务;本发明专利技术利用监听技术,自动触发Jenkins任务执行,自动上传覆盖率数据文件,且可以自动生成覆盖率报告并发送给相关人员,达到Android应用覆盖率测试的自动化,可以有效节约测试人员学习成本,脚本能最大化进行复用代替,提高测试效率,实现了代码覆盖率的自动化操作。实现了代码覆盖率的自动化操作。实现了代码覆盖率的自动化操作。

【技术实现步骤摘要】
一种基于Android应用的覆盖率测试方法


[0001]本专利技术涉及软件测试
,尤其涉及一种基于Android应用的覆盖率测试方法。

技术介绍

[0002]随着公司业务的不断扩大,产品迭代频繁,仅基于需求和经验的测试难以有效保证测试的有效性,甚至会影响产品发布质量和用户体验。为了更有效的提高产品质量,完善测试用例,废弃历史冗余无用代码,需要引入了代码覆盖率测试技术。
[0003]所谓代码覆盖率(Code coverage)是软件测试中的一种度量,描述程序中源代码与被测试的比例和程度,所得比例称为代码覆盖率。在移动应用测试中,用到的是Android代码覆盖率测试,它是利用Jacoco(Jacoco是一个开源的代码覆盖率工具,可以嵌入到Ant、Maven中,并提供了EclEmma Eclipse插件,也可以使用Java Agent技术监控Java程序。很多第三方的工具提供了对Jacoco的集成,如sonar、Jenkins等)对Class文件以Offline方式进行代码插桩(插桩技术指在保证原有程序逻辑完整性的基础上,在程序中插入探针,通过探针采集代码中的信息(方法本身、方法参数值、返回值等)在特定的位置插入代码段,从而收集程序运行时的动态上下文信息。),生成最终的目标文件,执行目标文件以后得到覆盖执行结果,最终生成覆盖率报告。Jacoco从行覆盖、类覆盖、方法覆盖、分支覆盖、指令覆盖、圈复杂度六个方面进行对代码覆盖率进行统计。
[0004]现有的代码覆盖率测试大多数是通过测试人员手动拉取代码后,在编译工具IDEA(全称IntelliJ IDEA,是java编程语言开发的集成环境)中进行手动插桩,编译,执行测试完成后,再手动生成覆盖率测试报告,无法达到自动化,这样增加了无开发经验的测试人员增加了学习成本,不易上手。
[0005]申请号CN202011406234.8安卓软件集成测试中的覆盖率测试方法、装置,涉及一种安卓软件集成测试中的覆盖率测试方法、装置、计算机设备和存储介质。该方法包括:获取待测软件在当前版本的所有版本分支的分测覆盖率数据;获取待测软件在当前版本的发布分支的差异日志,根据差异日志合并所有版本分支的分测覆盖率数据得到合并后的分测覆盖率数据;根据差异日志检测出发布分支的所有diff方法和所有非diff方法,对发布分支代码中与该所有diff方法对应的代码进行集成覆盖率测试,获得初始集测覆盖率数据;合并初始集测覆盖率数据与合并后的分测覆盖率数据得到最终的集测覆盖率数据,根据其生成覆盖率报告。该专利技术对发布分支代码做覆盖率测试时能够复用其中已单独测试过的代码的覆盖率数据,提高对发布分支代码的测试效率。该专利技术主要是对集成测试中各个分支的代码覆盖率数据进行测试并整合在一个最终的集测覆盖率数据,并不适合于测试人员在日常系统测试中进行的覆盖率数据收集方法,且对于测试人员来说操作复杂,不易上手。

技术实现思路

[0006]本专利技术的目的就在于为了解决上述问题而提供一种基于Android应用的覆盖率测
试方法,本专利技术基于Jenkins(Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成)的自动化的代码覆盖率测试的方法,可实现自动下载代码,代码插桩,提交代码,版本构建和自动生成覆盖率报告,提高了方便性和测试效率,节约学习成本,更易上手。
[0007]本专利技术再执行Android应用覆盖率测试前,先搭建测试Jenkins持续集成平台,编写shell插桩脚本,在覆盖率服务器的Jenkins平台上配置监听编译版本库更新任务,配置代码下载,自动插桩和代码提交的任务,配置版本构建任务,配置监听覆盖率数据更新任务,配置覆盖率报告生成和邮件发送的任务;当开发人员提交代码到版本服务器,SCM拉取最新代码,在编译服务器上进行构建,构建编译版本后,通过Jenkins平台进行版本库构建监听是否构建成功且需要进行覆盖率测试,从而判断是否触发Jenkins下载代码,自动插桩,提交代码的任务;Jenkins平台设置监听版本库构建状态,监听到版本库的更新是成功的且需要进行覆盖率测试时,自动触发事先配置好的Jenkins下载最新的代码,自动插桩,提交代码到覆盖率服务器上;当把插桩后的代码提交到覆盖率服务器后,自动触发Android版本构建的任务,从而把构建后的APK存储在覆盖率服务器的app_package的目录下,并邮件告知测试人员APK的存储位置;测试人员从覆盖率服务器上下载对应的APK并进行安装进行覆盖率测试,测试完成后,点击APP中的“一键生成覆盖率”按钮,自动调用API接口,把覆盖率数据文件传到覆盖率服务器的指定存储位置exec_files;配置Jenkins监听任务,每天下午17:30进行一次轮询,监听覆盖率服务器上exec_files目录下是否有新的覆盖率数据文件coverage_time.exec,如果有,就执行覆盖率报告生成和邮件发送的Jenkins任务,若没有,就不执行该任务。
[0008]本专利技术通过以下技术方案来实现上述目的:
[0009]一种基于Android应用的覆盖率测试方法,包括以下步骤:
[0010]步骤1:搭建测试Jenkins持续集成平台;
[0011]步骤2:在测试Jenkins中配置监听构建完成的Android版本是否需要执行覆盖率测试的任务;
[0012]步骤3:配置Android应用代码下载的Jenkins任务;
[0013]步骤4:编写shell(shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序)自动插桩脚本,并在步骤3中配置所述shell自动插桩脚本;
[0014]步骤5:在步骤3中配置插桩后的代码并提交到Git(是一个开源的分布式版本控制系统)覆盖率服务器(用于存储覆盖率代码,数据,报告的服务器);
[0015]步骤6:配置构建Android版本的Jenkins任务;
[0016]步骤7:测试人员安装插桩后的Android版本并执行覆盖率测试;
[0017]步骤8:测试完成后,生成覆盖率数据文件并自动上传到覆盖率服务器的指定存储位置;
[0018]步骤9:配置Jenkins任务监听存储位置处是否有新的覆盖率数据文件,从而判断是否执行覆盖率报告和邮件发送的Jenkins任务;
[0019]步骤10:执行覆盖率报告和邮件发送的Jenkins任务,得到可视化的覆盖率报告。
[0020]进一步方案为,所述步骤1中搭建测试Jenkins持续集成平台,用于建立和部署
Jenkins任务、监控外部调用执行的工作。
[0021]进一步方案为,所述步骤2中测试Jenkins平台预先部署监听编译版本库更新任务,监听Android构建版本库的状态,若需进行覆盖率测试,则自动触发Android代码下载的Jenkins任务,若不需要进行覆盖率本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Android应用的覆盖率测试方法,其特征在于,包括以下步骤:步骤1:搭建测试Jenkins持续集成平台,用于建立和部署Jenkins任务、监控外部调用执行的工作;步骤2:在测试Jenkins中配置监听构建完成的Android版本是否需要执行覆盖率测试的任务;步骤3:配置Android应用代码下载的Jenkins任务;步骤4:编写shell自动插桩脚本,并在步骤3中配置所述shell自动插桩脚本;步骤5:在步骤3中配置插桩后的代码并提交到Git覆盖率服务器;步骤6:配置构建Android版本的Jenkins任务;步骤7:测试人员安装插桩后的Android版本并执行覆盖率测试;步骤8:测试完成后,生成覆盖率数据文件并自动上传到覆盖率服务器的指定存储位置;步骤9:配置Jenkins任务监听存储位置处是否有新的覆盖率数据文件,从而判断是否执行覆盖率报告和邮件发送的Jenkins任务;步骤10:执行覆盖率报告和邮件发送的Jenkins任务,得到可视化的覆盖率报告。2.根据权利要求书1所述的一种基于Android应用的覆盖率测试方法,其特征在于,所述步骤2中测试Jenkins平台预先部署监听编译版本库更新任务,监听Android构建版本库的状态,若需进行覆盖率测试,则自动触发Android代码下载的Jenkins任务,若不需要进行覆盖率测试,则不执行任何操作。3.根据权利要求书1所述的一种基于Android应用的覆盖率测试方法,其特征在于,所述步骤3中,根据步骤2的监听结果,若需进行覆盖率测试,则自动触发此任务:从Git代码库中下载最新的Android代码,为后续进行自动插桩做准备。4.根据权利要求书1所述的一种基于Android应用的覆盖率测试方法,其特征在于,所述步骤4中,自动判断代码结构,...

【专利技术属性】
技术研发人员:张迎秋徐凯王莉
申请(专利权)人:四川虹美智能科技有限公司
类型:发明
国别省市:

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

1