【学以致用】android功能实现8---Android Studio 的UiAutomator 2.0的测试覆盖率验证

标签: android 自动化测试 测试覆盖率 java 手机
95人阅读 评论(0) 收藏 举报
分类:

之前研究了如果使用Uiautomator 2.0来自动化模拟人的手动测试,来检测程序的基本功能是否完整。然而,根据经验来检测功能,是人为设定哪些功能是我们需要关注的,认为设定的真的测试完整了吗?这个测试究竟对程序验证到了什么程度?这就需要代码覆盖率来完成。

 

首先,人为设定哪些需要检测是可行的,也是可信的。程序是程序员设计的,这个程序有什么目的,需要完成什么功能,程序员是知道的,所以我们可以针对这些功能进行一一检查,确保功能正常。

 

然而,幸运的是,android还提供了一种机制,可以在我们具备了自动化检测的基础上,对代码的覆盖率进行检测,其原理是统计代码的总方法的个数,然后在自动化检测过程中,使用到的方法的个数,使用个数/总个数,就是测试覆盖率。

 

而且测试覆盖率的方法很简单,完全可以在设计完自动化测试之后,随手测一次。

 

这个方案有一个假设,当功能正确的时候,其涉及到的方法就是我们希望其运行的方法。也就是,一个行为调用了一系列方法,只有这一系列方法都没有错误,这个行为才能成功完成。

 

我们相信这个假设的正确性,那么我们就可以选择以此为假设的官方组件,比如mockito或jacoco

 

我们在已有Uiautomator的测试基础上,可以比较简单的完成覆盖率测试,下面是完整的流程:

 

1:改写gradle文件,测试环境搭建

2:运行覆盖率测试

3:在目录下找到结果

 

详细流程:

 

1:环境搭建

1.1 基本准备:

     以本文推荐的简单方法,完成覆盖率测试,需要将测试的代码和程序的代码放到一个工程当中。程序代码在app/src/main里面。而UiAutomator的代码在app/src/AndroidTest里面。

     如果因为特殊原因,测试的代码位置不是默认位置,则需要在gradle里面配置测试程序的地址。

 

需要在文件build.gradle里面,加入一项:

androidTest {
    java.srcDirs = ['androidTest/java']
}

其中,‘androidTest/java’是代码路径,根据需要修改,

一般我们不加此项,则测试地址为默认地址

默认地址为java.srcDirs = ['app/src/AndroidTest/java']

 

     1.2加入jacoco

采用gradleapply,插入后,系统会自己进行下载。

 

apply plugin: 'jacoco'

此命令也是单独的一项,是最高级项,和上一项中的androidTest 平级。插入命令后面没有{}的内容来表征细节。

 

1.3设定打开覆盖率测试。

在主项buildTypes 中,添加当前编译的对象,一般是debug或者release

将testCoverageEnabled = true命令放入debug中,该项如下。

 

buildTypes {

debug { testCoverageEnabled = true

}

}

 

 

完成以上三步,基本准备工作就已经做完。

 

2:运行覆盖率测试

 

2.1运行自动化测试

运行覆盖率测试,首先要确保自动化测试能够100%通过,如果有某项测试没有通过,是不能进行覆盖率测试的。

运行自动化测试的方法:

androidStudio的最右边,在写代码的框的右上角,有一个名为Gradle的选项,点击后能够打开一个侧边栏。

Task/verification/connectedAndroidTest,在这个选项点击右键,然后run,记住一定要点,这样后面进行覆盖率测试才顺利

 

 

2.2运行覆盖率测试的地方。

androidStudio的最右边,在写代码的框的右上角,有一个名为Gradle的选项,点击后能够打开一个侧边栏。

 

侧边栏目录中,Task/verification/createDebugCoverageReport,在这个选项点击右键,然后run即可。

以上就会在手机上进行一边自动化测试,当测试完成后,覆盖率测试也同步完成了。

 

 

3:查看报告。

报告输出在build\reports\coverage里面,会生成各个类的具体细节,同时还有一个在根目录有名为index.html的统一文件,点开后,能够看到总的覆盖率的百分比。

 

以上,就完成了一次测试覆盖率的测试,在已经实现了自动化测试的基础上,完成覆盖率测试非常简单,作为一个小工具,值得学习和使用。

查看评论

Android Studio强者之路

-
  • 1970年01月01日 08:00

【学以致用】android功能实现5---android8.0 Launcher获取快捷方式源码分析(1)

从其他应用往桌面创建快捷方式,android8.0统一采用requestPinShortcut的方式。 对于桌面而言,是怎么从requestPinShortcut获取快捷方式信息在桌面创建快捷方式呢?...
  • dax120
  • dax120
  • 2017-12-26 18:46:33
  • 677

Android自动化测试UiAutomator之环境配置

(1)首先就是配置环境了:配置jdk和sdk的环境变量,这我就不写了,网上一搜一大堆,这里sdk除了配置sdk/tools目录外,还应配置sdk/platform-tools这个目录,我这是除了创建S...
  • shaoenxiao
  • shaoenxiao
  • 2016-12-14 13:01:58
  • 269

在Android Sudio中使用Uiautomator

如何在Android Studio中使用uiautomator 【步骤1】新建一个Android工程 不需要创建Activity 【步骤2】配置gradle(app) ...
  • cxq234843654
  • cxq234843654
  • 2016-04-21 09:50:58
  • 11731

Uiautomator在Android Studio下的环境搭建

谷歌对Uiautomator最近的更新,提供了新的API接口,同时也对工具进行了更新,官方文档建议使用Android Studio来搭建测试框架。 准备环境 先到SDK Manager里下载Ex...
  • chengdupanda
  • chengdupanda
  • 2016-05-17 15:30:33
  • 3201

【Android测试】AndroidStudio通过UIAutomator进行测试

在eclipse中使用UIAutomator时步骤较为繁琐,而在Studio环境下只需要添加引用,编写测试类,运行测试类就可以实现。步骤较简单。1.配置环境在包依赖中添加对UIAutomator的引用...
  • okm6666
  • okm6666
  • 2016-08-19 13:32:45
  • 4166

Android Studio下运行UiAutomator

步骤总结如下: 一、新建一个项目,和Android项目的区别是不要创建Activity(Add No Activity)   二、新建项目完成后,修改gradle文件 ...
  • jdc317264476
  • jdc317264476
  • 2017-05-04 11:25:29
  • 543

Android Studio学习基础介绍

一、运行和调试相关的操作 与studio目录相关介绍http://blog.csdn.net/binjianliu/article/details/77547610...
  • luckrr
  • luckrr
  • 2018-03-21 01:05:48
  • 75

使用Appium进行Android自动化测试 - 通过UI Automator方式查找元素

一. Appium中使用UI Automator查找元素的方法1. 直接使用driver.find_element_by_android_uiautomator(UIAutomator locator...
  • eldencheng
  • eldencheng
  • 2018-03-08 23:15:21
  • 72

UI分析神器-uiautomatorviewer+Android Studio

当我们拿到了别人的app源码时,如何快速熟悉代码?如何看着UI来熟悉代码?今天Coder哥就传授给大家一个终极神器—uiautomatorviewer!话不多说,show me the code!St...
  • limonzet
  • limonzet
  • 2016-11-19 12:29:12
  • 3582
    个人资料
    持之以恒
    等级:
    访问量: 5973
    积分: 461
    排名: 10万+
    文章分类
    最新评论