当你套用Athrun、Robotium等框架,针对自己的项目写完了一堆自动化测试脚本后,在Eclipse之外怎么让它们可以持续性地跑起来并展现报告呢?

  据我了解,方便的方法大致有两个:其一,利用Hudson(或Jenkins)持续集成系统;其二、利用Testin或东软易测云等第三方云测试平台达成。

  本文以Hudson在Windows系统的环境搭建为例。

  一、安装篇

  1、安装JDK,推荐1.6版本

  这个一般做Android的开发、测试都会装了,但要注意配好环境变量,即将jdk的bin目录加到Path里,将jdk目录加入JAVA_HOME

  2、安装ant

  http://ant.apache.org/bindownload.cgi,解压到本地合适目录,如D:\apache-ant-1.8.4

  3、安装tomcat

  http://tomcat.apache.org/download-70.cgi,解压到本地适当目录,如D:\apache-tomcat-7.0.30

  4、安装hudson

   http://java.net/projects/hudson/downloads/directory/war,将下载到的war包更名为 hudson.war(这个名字关系到访问的URL地址,也可以是别的),拷贝到tomcat的\webapps目录下,如D:\apache- tomcat-7.0.30\webapps

  至此,只要启动tomcat/bin/startup.bat,就可以在浏览器里用http://127.0.0.1:8080/hudson对hudson服务进行访问了。

  二、配置篇

  打开hudson配置界面(主页 - 系统管理 - 系统设置)

  1、配置好JDK,名称任意,JAVA_HOME填准确。

  2、配置好ANT,名称任意,ANT_HOME填准确。

  3、拉到最下面,邮件通知部分,SMTP、用户默认邮件后缀、系统管理员邮件都按照公司实际情况配好,Hudson URL填成http://本机IP:8080/hudson/,这样同局域网内的其他用户就可以访问你配置的Hudson服务了。

  同时点开Advanced,勾选"使用SMTP",使用你在公司域内的邮箱地址和密码,SMTP端口一般选择默认的25,Charset填写"UTF-8",这样测试结果才会以你的邮箱发出给相关人。

  打开hudson插件界面(主页 - 系统管理 - 管理插件 - 可选插件)

  搜索以下几个插件并安装:

  1、Hudson Subversion Plug-in,顾名思义,SVN插件。

  2、JUnit Attachments Plugin,junit测试报告附件插件。

  3、Android Emulator Plugin,如果要用Android模拟器来测试的话,这个是要装上的。

  4、Hudson GIT plugin,如果团队是用Git来同步代码的话,那这个也装上。

  5、Email-ext plugin,邮件发送定制插件。Hudson默认只在构建失败(或从失败转向成功)后发送提醒邮件;使用这个插件可以定制发送邮件的不同情景。

  其它都按需安装喽。

  新建任务 - 主项目(被测项目)打包任务

  1、构建一个自由风格的项目,名称合适取。

  2、Source Code Management部分,选Subversion,Repository URL里面填写你主体项目的SVN地址,其它选默认就行了。

  3、Build trigger部分,勾选Build periodically可以使版本定时构建,语法和Unix的crontab一样。勾选Poll SCM则是定期去SVN或CVS的workspace去检查,如果有更新更构建。

  4、Build Environment部分,如果是用模拟器来测试的话,就勾选"Run an Android emulator during build"。

  5、Build部分,最关键的部分来了。

  Ant version:选Default就行;

  Targets:要应用的ant target名称,也可以是名称列表(多个名称用空格分隔),如果什么都不写的话,就是build脚本中的默认那个任务;

  Build File:有时候我们未必用ant默认找的build.xml来编译,那就用这个选项来自定义脚本路径和名称,如build4test.xml;

   Properties:这里用来写build脚本运行时需要的一些参数。其效果等同于在项目的workspace下建一个ant.properties 文件,然后在build脚本里加入<property file="ant.properties" />。其实说起来肯定是后一种方法更灵活,但有时为了安全起见(比如不把key.store.password泄漏出去),就把这些属性写在 Hudson服务端。(事实上这些属性都记录在该项目的config.xml里)

Java Options:这个不常用,可以点击输入框旁的问号参看帮助。

  这个部分肯定是要和项目的build脚本结合起来的,所以build脚本的编写也是关键的地方。Ant脚本的内涵很深,用的好的话它可以完成的 事情超乎你想象,有必要下工夫研究一下。这里Google已经帮咱们写好了一个功能很强大的build脚本,如果没有特殊的定制需求,我们可以直接引用它 里面的target。这个脚本是在Android_SDK目录/tools/ant/下的build.xml,里面有三个很重要的 target:debug, release, install。

  debug是用debug key打包,速度相对较快,测试时建议选用。release是用release key打包,速度齁慢,发布版本时必然打的是release包。另外测试时打release包还有个好处是利于和已发布版本的包进行覆盖安装。 install顾名思义很容易理解,但前提是debug或release任务已经得到应用。因为我们要构建包用于自动化测试,所以这里建议用的 target组合是debug install,即在上面说的Targets部分填入"debug install"。

  用"android update project -p 项目路径"命令可以帮你在project目录下建立一个build.xml,当然你完全可以根据项目的需要自己定制Build脚本,要引用Google现 成target的关键是在build脚本里加入这样一句话:

<import file="${sdk.dir}/tools/ant/build.xml" />

  当然sdk.dir这个property需要提前定义好。

  6、构建完成后操作:因为主项目构建完成后需要启动测试项目的构建,所以在Build other projects里面填写测试项目(如果还没建好就等建好了回头再来填)

  其它的像Publish JUnit test result report和E-mail Notification等选项都要在测试项目中定义,所以这里就不勾选了。

  新建任务 - 测试项目打包与执行任务

  1、1-4步基本是相通的,不再赘述。

  2、第5步,用ant完成debug install后,因为要执行测试,所以我们需要定义一个用于测试的任务。可以用类似下面的代码:

<target name="gotest" depends="stormtestinstall">
        <echo message="Start Testing======================================="/>
        <exec executable="adb" failonerror="true">
            <arg value="shell"/>
            <arg value="am"/>
            <arg value="instrument"/>
            <arg value="-w"/>
            <arg value="-e"/>
            <arg value="class"/>
            <arg value="com.storm.smart.athtest._AllTestSuite"/>
            <arg value="com.storm.smart.test/pl.polidea.instrumentation.PolideaInstrumentationTestRunner"/>
        </exec>
        <echo message="End Testing=========================================="/>
    </target>

  这样的话我们可以在Targets输入框填入debug install gotest,即先打debug包,再安装,再执行测试。

  3、测试完成后,我们需要把测试报告从手机里拷贝出来,这里用一个bat来完成:点击"Add build step",选择"Excute Windows batch command",在输入框内填入(pull-test-result.bat)。这个bat的内容类似下面这样:

adb root
adb shell mount -o remount rw /
adb pull /data/data/com.storm.smart/files/com.storm.smart.athtest-TEST.xml

  4、构建完成后操作:首先我们需要把拿到的xml初始报告文件格式化成友好的格式,然后将结果邮件通知给相关人员。

  对应地,勾选"Publish Junit test result report"项,在Test report XMLs里填入*-TEST.xml;勾选"E-mail Notification",填入相关人邮箱,按需勾选子选项即可。

  至此,整个配置告一段落。

转自:http://www.blogjava.net/qileilove/archive/2013/05/27/399803.html

利用Hudson持续集成来执行Android自动化测试(转)的更多相关文章

  1. 【转】手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  2. 手把手教你利用Jenkins持续集成iOS项目

    前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一 ...

  3. Docker+Jenkins持续集成环境(5): android构建与apk发布

    项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...

  4. 移动性能测试 | 持续集成中的 Android 稳定性测试

    前言 谈到Android稳定测试,大多数会联想到使用monkey工具来做测试.google官方提供了monkey工具,可以很快速点击被应用,之前我有一篇帖子提到了monkey工具的使用,详见: htt ...

  5. 持续集成篇 --Hudson持续集成服务器的安装配置与使用

    样例项目参考视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.221  8G内存 ...

  6. Hudson持续集成管理平台搭建

    IP: 10.0.70.106  8G 内存 (Hudson 多 个 工程 在 同 时 构建 的情况下 比 较耗内存) 环 境: CentOS 6.5 . JDK7 注:Hudson 只是一个持续集成 ...

  7. Hudson持续集成服务器的安装配置与使用

    Hudson只是一个持续集成服务器(持续集成工具),要想搭建一套完整的持续集成管理平台, 还需要用到前面课程中所讲到的 SVN.Maven.Sonar等工具,按需求整合则可. 1.安装  JDK并配置 ...

  8. Dubbo入门到精通学习笔记(六):持续集成管理平台之Hudson 持续集成服务器的安装配置与使用

    文章目录 安装Hudson 使用Hudson tips:自动化部署 附录:两个脚本 安装Hudson IP:192.168.4.221 8G 内存(Hudson 多个工程在同时构建的情况下比较耗内存) ...

  9. ubuntu 16.04.2 源码安装gitlab并且利用runner持续集成

    参考原档:https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md#using-https 本章只 ...

随机推荐

  1. Delphi 缩放图像代码 - 支持PNG透明通道

    要求Delphi2007或者更高版本, 系统要求至少XP-SP2以上 实际上是利用了Windows的windowscodecs.dll这个文件的功能 在VCL里已经封装为TWICImage类 proc ...

  2. Mongo对内嵌文档的CRUD

    { "_id" : ObjectId("5706032acd0a6194868cf53e"), "list" : { "age&q ...

  3. c# ToString() 用法

    string tempa = Convert.ToString(31, 2);//将10进制数31转换为2进制字符串. string strNums = int.Parse(tempa).ToStri ...

  4. C#中String 和string 的区别

    C#中同时存在String与string MSDN中对string的说明: string is an alias for String in the .NET Framework.string是Str ...

  5. Swift-05-SizeOf&&SizeOfValue

    在C中定义的运算符,可以作用于类型或者某个实际的变量,并返回其在内存中的尺寸size_t. 在Cocoa中,我们一般用来将数组生成NSData的时候传入数据长度.因为在OC里面,sizeOf这个C运算 ...

  6. iOS:详细的正则表达式

    1.简介: 在项目中,正则的使用是很普遍的,例如登录账号和密码(手机号.邮箱等).用到的方法就是谓词对象过滤:NSPredicate. 2.什么是正则表达式: 正则表达式,又称正规表示法,是对字符串操 ...

  7. docker-compose常用命令

    --verbose:输出详细信息-f 制定一个非docker-compose.yml命名的yaml文件-p 设置一个项目名称(默认是directory名)docker-compose的动作包括:bui ...

  8. Mysql-5.6.30卸载

    Mysql-5.6.30卸载 一.删除相关文件 rm  -rf  /var/lib/mysql/mysql   (删除数据文件) rm  -f  /root/.mysql_secure    (删除缺 ...

  9. 请问下./在Linux下是什么意思

    请问下./在Linux下是什么意思 http://zhidao.baidu.com/link?url=1f-80KN7cdi-7XECpwXLUn6Ps4reMBL2zB6eiDk7JliwDgW6k ...

  10. Unicode 编码概念

    Unicode 编码概念 Unicode 编码可能是我们日常开发中接触最多的字符编码方式之一,其它常见的中文编码方式还包括 GB2132-80 / GB13000 / GBK / GB18030 .在 ...