注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

基于Orange的安卓UI自动化学习笔记(六)  

来自隋相   2016-06-29 14:27:47|  分类: 默认分类 |举报 |字号 订阅

  下载LOFTER 我的照片书  |

上一篇主要介绍了jenkins:真机换成模拟器,我们将真机换成模拟器,使得操作更简单,进一步完善安卓UI自动化持续集成的自动化。其实做到这里,基本的基于orange的安卓UI自动化工程已经建立完备了,完全可以实现线上监控APP的UI层面的稳定性情况。如果我们不想只是检测已发布的apk的稳定性,而是想在开发过程中实时编译、打包成apk进行UI层面的监控的话,就需要进行本章的进阶jenkins设置了。
关于安卓UI自动化学习,我的学习路线是这样安排的:
(一)本地:能够独立完成一个UI自动化工程的建立
(二)本地:命令行执行UI自动化测试用例
(三)本地:ant打包测试工程apk+执行UI自动化用例一体化
(四)jenkins:持续集成平台成功构建UI自动化工程
(五)jenkins:真机换成模拟器
(六)jenkins:持续集成平台实现被测apk自动打包编译+自动化一体化
(七)UI自动化用例编写语法和规范
本章内容就是第六部分,jenkins:持续集成平台实现被测apk自动打包编译+自动化一体化

一、设置环境变量

我们这里使用ant打包,在jenkins的job配置里,选择构建的选项为Execute Shell,命令框里首先输入对jenkins环境变量的设置。设置ant运行地址并加入path,设置android-sdk安装地址并将tools和platform-tools都加入path。

基于Orange的安卓UI自动化学习笔记(六) - 网易杭州QA - 网易杭州 QA Team

 

二、拉取被测APP代码并打包

设置好环境变量后,我们就需要从代码仓库(SVN或者Git)把开发的代码拉取下来并进行打包。

基于Orange的安卓UI自动化学习笔记(六) - 网易杭州QA - 网易杭州 QA Team

 除了配置环境变量的几句指令,关键的指令及其分析如下:

除了配置环境变量的几句指令,关键的指令及其分析如下:

(1)svn co的命令就是从svn地址上把被测试APP的开发代码拉取下来。
(2)接下来的cd命令主要是打开本job所在的本地目录。这里注意windows系统的目录表达方式是用\\分割。通常情况下job的默认存放目录是C:\Users\hzsuixiang.jenkins\workspace\YourJobName目录下,但是这里我设置job存放路径为E盘自己的路径下。如何设置job存放路径,可参考教程
(3)接下来看起来简单的ant指令其实执行了复杂的打包过程。只不过所有的任务都在build.xml中组织好了。在执行dx命令,将class文件转换成.dex文件时,产生了class.dex和classes2.dex两个文件,还要有一步将classes2.dex文件打到apk里。
(4)最后的aapt命令就是将classes2.dex文件打到apk里。

三、拉取测试工程代码并执行

基于Orange的安卓UI自动化学习笔记(六) - 网易杭州QA - 网易杭州 QA Team
 关键的指令及其分析如下:

(1)svn co的命令就是从svn地址上把被测试工程的代码拉取下来。
(2)接下来的两个cp命令是用被测APP打包时产生的R.java文件和apk文件替换到我们UI工程里。
(3)最后在UI工程目录下执行ant命令执行UI自动化测试脚本。

好了,至此为止,我们就能够实时地将开发代码编译打包并执行UI自动化测试了。

四、打包时遇到的问题分析

因为之前被测APP在开发那边都是用gradle进行打包的,在对被测APP进行ant打包时遇到了包括编译、分包等的若干问题,总结一下:

1.编译时报错

编译时出现的问题首先考虑自己使用的jdk版本是否与开发环境相同,根据报错信息,我的jenkins上指定的jdk版本是1.8,而开发环境使用1.7。于是将Jenkins默认的jdk版本改为1.7,编译通过。

2.release时报错

release时报错apkbuild.bat文件找不到。首先在build.xml文件中找到release的target,确认使用到的执行参数是什么。

基于Orange的安卓UI自动化学习笔记(六) - 网易杭州QA - 网易杭州 QA Team

我们看到执行的是${apk-builder}这一参数。然后再在build.xml中找出apk-builder参数的设置,查看其真正执行的脚本文件位置。

基于Orange的安卓UI自动化学习笔记(六) - 网易杭州QA - 网易杭州 QA Team

 而${android-tools}参数在之前设置为本地sdk\tools的路径,也就是D:\AppData\Local\Android\sdk\tools(注:这是我的本地sdk路径)。打开这一路径,发现其中真的没有apkbuilder.bat文件,也难怪打包时报错了。sdk更新3.0以后apkbuilder.bat已经被删除了,要想顺利地执行ant打包,可以自己重写一个apkbuilder.bat工具,我是从网上下载了apkbuilder.bat放在D:\AppData\Local\Android\sdk\tools路径下:
 基于Orange的安卓UI自动化学习笔记(六) - 网易杭州QA - 网易杭州 QA Team

这下执行应该没有问题了~
                                                         DUANG~报错 “java找不到....”
问题查找了好久,终于确定问题是出在自己的java文件夹命名上了,我的java文件夹命名为java 1.7,就是这个空格成为了找不到java无法顺利进行release的关键原因。这应该也是个小小的坑了,建议以后建立文件夹少写空格中文等这类字符,出错的时候感觉整个世界都不好了~

 好了,迄今为止,已经能够把安卓UI自动化工程(自动打包、编译、执行)的工作顺利完成下来了,很多知识也有了比较基础的掌握,接下来的章节就是针对instrumentation和UI自动化代码的原理进行剖析和学习了,这部分还没有系统的开展,希望能够接下来的时间整理出更好的安卓UI学习笔记出来。
  评论这张
 
阅读(149)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016