Jenkins Android 自动化测试

自动化是 DevOps 里非常重要的一环,应儘可能的把流程都自动化。我们可以透过Jenkins等CI工具来达成以下的自动化。

自动单元测试
自动UI测试
自动程式码检核
自动发布Beta App给测试人员
自动签署APK
自动发布App至Google Play
透过Slack、Email即时通知

http://img2.58codes.com/2024/20111896SGrwRftBIz.png

你可以参考我的实体书,更完整的自动化流程
天珑网路书店:Android TDD 测试驱动开发:从UnitTest、TDD到DevOps实践

而这篇将介绍 Jenkins 这个 CI 工具来进行自动测试。
Jenkins是一个功能强大的持续整合工具,有丰富的外挂可以供开发人员使用,可以将建置专案、测试、分析及部署等工作自动化,让App工程师可以专注在开发及撰写单元测试。

安装 Homebrew

Jenkins需要透过Homebrew来安装。Homebrew是一个可以方便在Mac上管理套件的工具。
在「终端机」上输入指令,安装HomeBrew。
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装Jenkins

HomeBrew安装完后,接着在终端机输入以下指令来安装Jenkins
brew install jenkins
安装完成后,输入启动 Jenkins的指令:
brew services start jenkins

启动完成后,在浏览器输入网址 http://127.0.0.1:8080/就可以开启Jenkins。在第一次启用时需要输入管理员密码。
在这个目录下 /Users/{UserName}/.jenkins/secrets/initialAdminPassword 可以找到预设的管理员密码。
回到Unlock Jenkins的网页上输入 Administrator password 。
因为.jenkins是一个隐藏的资料夹,如果在目录下看不到的话,请先开启Finder,按下 Shift + command + >,即可显示隐藏档。

Jenkins启动之后,勾选要安装的功能后点选Install。

http://img2.58codes.com/2024/201118964vUcbNCkoI.png

安装完成后,输入First Admin User 资料。

http://img2.58codes.com/2024/20111896JvLehFIhi0.png

看到Jenkins is ready就代表完成了。
http://img2.58codes.com/2024/20111896ZFJ2YKLEgm.png

环境设定

Jenkins启动后,将会依照你的浏览器语言作为预设语言,Jenkins的中文翻译还不是很完整,我们把它调整为英文。在后续的说明会比较一致。
http://img2.58codes.com/2024/20111896BsKH4LvU9y.png

点选管理Jenkins,点选管理外挂程式,安装Locale。
http://img2.58codes.com/2024/20111896fKYC39MPZh.png

回到管理Jenkins里,点选设定系统,预设语言输入en_US,勾选下方的Ignore browser preference and force this language to all users。设定完成后,Jenkins就会成功调整为英文了。
http://img2.58codes.com/2024/20111896dB9fAxCnIM.png

再次回到Jenkins首页,就可以看到都是用英文显示了。
http://img2.58codes.com/2024/20111896UKorZOF9MA.png

设定Android Home

在Jenkins首页,点选 Manage Jenkins,点选Configure System。在Global properties里设定Android_Home。如果你已经安装Android Studio,Android SDK 会被安装在:/Users/{UserName}/Library/Android/sdk

设定ANDROID_HOME
http://img2.58codes.com/2024/20111896RnJYC5NGMo.png

管理外挂程式

Jenkins可以透过安装不同的外挂来强化功能。
安装Gradle Plugin。Gradle可以用在Android专案的编译、测试及检查程式码。安装Gradle Plugin就可以在Jenkins执行Gradle指令。

安装外挂Gradle Plugin
http://img2.58codes.com/2024/20111896ZZ4fZPH8ls.png

安装 Git Plugin
http://img2.58codes.com/2024/20111896qtH6j1J6zY.png

安装完之后,需要再设定git路径。在Manage Jenkins -> Global Tool Configuration设定Git的路径。你可以在终端机输入$ which git,查询git在本机的安装路径。
http://img2.58codes.com/2024/20111896xEBVPI0Jqr.png

自动建置Android专案

当开发人员将程式码合併到储存库时,我们希望Jenkins能自动从Git Server下载程式码并建置。这个建置是非常基本且重要的,当有程式码提交而无法编译成功时,你可以马上发现错误。越早发现,就越早修正。
Jenkins首页的左边功能列,点选New Item(新增作业)。
http://img2.58codes.com/2024/20111896aZvyhmf5l6.png

输入Item Name,也就是作业名称,点选 Freestyle project 后,再点选下方的「OK」。
http://img2.58codes.com/2024/20111896xEIFvAp00s.png

Source Code Management
在Source Code Management的Repository Url 填入Git Repository 网址。如果你的Repository不是公开的,则需要在Credentials新增帐号及密码资讯。接着在Branch Specifier 输入要Pull的分支。
http://img2.58codes.com/2024/20111896MwUF5DJZNz.png

Builder Trigger (建置触发程序)
设定完程式码储存库的路径后,接着从Builder Trigger去设定执行的时机,勾选Poll SCM。我们先指定每10分钟执行一次。
http://img2.58codes.com/2024/20111896wXMFYvGRzF.png

Schedule里的5个数字依序为:
分:一小时中的第几分钟。
时:一天中的第几小时。
日:一个月的第几天。
月:一年中的第几月。
星期:星期几,0、7都代表星期日。
*代表适用所有数字

例:每天晚上8点建置
0 20 * * *

例:每30分建置一次
H/30 * * * *

例:週一到週五,每天的9:00~18:00,每隔两小时建置一次
0 9–18/2 * * 1–5

建置专案

接着设定建置专案,在Build里点选 Add build step ,接着选择Invoke Gradle script,这表示着我们将使用Gradle指令来建置专案。
http://img2.58codes.com/2024/20111896y2ewJcyCq9.png

选择Use Gradle wrapper,在Tasks 输入指令 build,这里的build 指令就如同你在Android Studio 上执行build Project是一样的。
http://img2.58codes.com/2024/20111896TUGKn3Ff48.png

储存后,Jenkins专案内容页。点选Build Now,就会马上开始建置了。
http://img2.58codes.com/2024/20111896vrJO1czsEL.png

执行之后,在Build History可以看到正在建置中。第一次建置通常会花比较多时间,因为还要从程式码储存库下载程式码。
http://img2.58codes.com/2024/20111896RWddx9v7av.png

执行完后看到蓝灯,代表建置成功。蓝色Icon的#1则代表第1次建置。
http://img2.58codes.com/2024/201118961k67mXFbZV.png

点进去可看到详细建置过程及结果Console Output。
http://img2.58codes.com/2024/20111896E7tmxkDrAg.png

回到首页,你可以在任务的列表,看到刚刚建立的First Build。同样会显示上一次的建置结果为蓝灯。
http://img2.58codes.com/2024/20111896Y9V92NrudV.png

S指的是Status,W指的是Weather。当S呈现红色表示建置失败,而W表示近期建置的状况。
http://img2.58codes.com/2024/20111896P5xlQasO5K.png

当有失败的时候,也不要害怕,建置失败是一件很平常的事情。而这也正是我们的目的:即早发现错误,并修正。如果有失败,应儘速将失败的建置修正,再开始新的任务。而如果无法快速修复,应儘快将它恢复到前一个可用的版本。
最后建置的专案被下载在/Users/{Use}/.jenkins/workspace/{ProjectName},你可以在这里找到被下载的程式码

查看测试报表
Jenkins 也能用来自动执行单元测试。建置指令build就包含建置专案与执行单元测试。你可以在 app/build/reports/tests/testDebugUnitTest/index.html 这个路径找到单元测试的结果。
http://img2.58codes.com/2024/20111896f1vN08XEhr.png

从测试报告呈现了成功及失败的数量、测试成功的百分比。你可以依照Packages或Classes分类来看。
http://img2.58codes.com/2024/20111896hYoSayK23W.png

点进去Package的Classes里,可以再看到每一个测试案例的结果及执行时间。
http://img2.58codes.com/2024/20111896Og4qxzwkW2.png

如果失败的话,也能看到哪些测试案例是失败的。
http://img2.58codes.com/2024/2011189695BXwOz7IB.png

完整的Android自动化:你可以参考我的实体书
天珑网路书店:Android TDD 测试驱动开发:从UnitTest、TDD到DevOps实践
自动单元测试、自动UI测试、自动程式码检核、自动发布Beta App给测试人员、自动签署APK、自动发布App至Google Play、透过Slack、Email即时通知。

Android 线上课程
Android 动画入门到进阶
Android UI 进阶实战(Material Design Component)

medium:
https://medium.com/@evanchen76


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章