Robotium的手机自动化测试,很多都是利用app源代码里的Id定义来开发自动化脚本。而在我开始要为项目中的app写自动化测试脚本的时 候,开发的环境还很不稳定,app也还处于开发的状态中,而且,在需要自己搭建Android整个开发环境的时候,也遇到许多需要耗费很多时间去解决的开 发问题。因此,我觉得,在这种情况下,如果自己的自动化脚本环境能和开发完全独立,那么,应该可以更好地展开自动化脚本的开发。所以,在网上一番探索后, 选择了只需要apk安装包的方法。

当然,这样也会遇到问题,比如,在开发还没有完全结束前,app的功能会随时发生变化,而在原有基础上开发好的自动化脚本也就需要很多的 rework。但是,我希望的是,在app的功能还没有完全稳定前,可以根据现有的app,把整个自动化开发框架搭好,此后,便可以在这个框架的基础上, 很轻松地去改一些细微的功能变动部分的自动化脚本。

所以,从测试的角度上看,仅需要apk安装包的方式,主要有以下几个优点:

1. 测试人员无需在Eclipse中搭建复杂的Android开发环境(基本的Android SDK和Java环境还是必需的。)

2. 在app还没开发完全的情况下,测试人员可以根据大致的app功能,把自动化开发框架建好,以利于后期对具体功能展开自动化脚本的开发。

3. 在进行自动化测试时,即使不用到持续集成,也可以较为方便地测试迭代中的app——只需要在测试设备上(模拟机或者手机)安装最新的app即可。

下面就来介绍下,这种仅需apk安装包版的Robotium手机自动化开发环境的准备。

1. 从开发人员处获取apk安装包/或者Git等源代码控制工具中获取源代码

  在我的项目中,是开发的源代码是使用MVN作为项目管理工具,所以,只需要打开命令提示符(cmd),然后进入app的源代码,敲入mvn install,即可得到apk文件

  例如:

  1) cd .../TestApp

  2) mvn install

  3) Build Success后,在TestApp目录下找到target目录,在target目录中,即可找到最新生成的apk文件。

2. Android的apk发布,需要签名。具体信息,详见:http://developer.android.com/tools/publishing/app-signing.html

  为了顺利在测试设备上安装apk,我们需要对拿到的apk进行重新签名(Re-sign)。

  重新签名的工具,网上很多,我使用的是re-sign.jar。

  在用户目录下,会有一个.android的目录,把re-sign.jar放在该目录下。

  Re-sign步骤如下:

  1) 打开命令提示符:cmd

  2) cd .../.android

  3) 运行java -jar re-sign.jar,打开resign工具

  4) 把最新的apk文件拖拽到打开的resign工具中,完成后,就会产生一个重新签名的apk文件。

  Ps: resign后,会得到一个package name和main activity name,我们需要记下这两个名字,在第4步中会用到。

  

3. 在模拟机中安装重新签名后的apk文件,步骤如下:(在真机中安装与模拟机类似,具体操作,Google或者Baidu即可)

  1) 打开Android SDK安装目录

  2) 找到sdk下的platform-tools目录

  3) 把重新签名后的apk文件放在该目录下

  4) 打开命令提示符:cmd

  5) cd .../sdk/platform-tools

  6) 打开要安装apk的模拟机

  7) 运行命令:adb install testedapp.apk。看到Success,说明apk已经安装成功了。

  Ps: 在安装apk之前,确保旧版的app已经在模拟机中卸载完成。否则,执行该命令,会提示说安装失败。

4. 在eclipse中,新建一个Android Test Project,进行配置,使得自动化脚本与要测试的apk进行关联。

  1) 修改Android Test Project下的AndroidMainfest.xml文件,使得粗体标注的package名与resign生成的名字一致
    <instrumentation
          android:name ="android.test.InstrumentationTestRunner"
        android:targetPackage ="com.example.mobile.testedapp" />
  2) 在自动化脚本测试类中,声明初始类,也要与resign生成的main activity类名一致
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME ="com.example.mobile.testedapp.MainActivity" ;
5. 这样,就可以在eclipse中的Android Test Project中尽情地开发自动化脚本,并在安装好的apk基础上运行了!
 
 
【转载地址】http://www.cnblogs.com/enjoytesting/p/3622657.html

[Android] Robotium手机自动化测试(仅需apk安装包版)——环境搭建 【转】的更多相关文章

  1. Android APK安装包瘦身[转]

    很显然,APK安装包越小越好.下面从代码,资源文件,使用策略几个方面简要介绍下: 代码 保持良好的编程习惯,不要重复或者不用的代码,谨慎添加libs,移除使用不到的libs. 使用proguard混淆 ...

  2. 【Android Studio安装部署系列】十、Android studio打包发布apk安装包

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 使用Android studio发布apk安装包的操作步骤. 开始打包发布apk Build > Generate Signe ...

  3. 配置Windows Server2008+iis+php+mysql所需下载安装包

    最近一个朋友让我帮忙给配置服务器iis+php+mysq 环境,遇到了很多问题,特此就在这里说一下.小弟只是在windwos2003 和windwos XP下配置过iis+php+mysql,去朋友那 ...

  4. 使用zipalign.exe工具优化APK安装包

    zipalign.exe是Android自带的一个档案整理工具,它可以用于优化APK安装包,从而提升Android应用与系统之间的交互效率,提升应用程序的运行速度. 操作步骤: 1.在命令行窗口输入如 ...

  5. 打包文件到APK安装包中

    打包文件到APK安装包中 目的:将配置文件或SQLITE打包进APK中 1.首先,打开菜单 Project - Deployment 2.点击添加按钮,选择要添加的文件(文件最好放在工程目录中,这样, ...

  6. apk安装包信息

    String archiveFilePath="sdcard/DangDang.apk";//安装包路径          PackageManager pm = getPacka ...

  7. 菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven)

    菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven) 2012-02-04 13:11 by 虫师, 11419 阅读, 5 评论, 收藏, 编辑 之前我就讲过一种方试来搭 ...

  8. Mac上反编译Android apk安装包

    什么是反编译 我们知道,Android的程序打包后会生成一个APK文件,这个文件可以直接安装到任何Android手机上,因此,反编译就是对这个APK进行反编译.Android的反编译分成两个部分: 一 ...

  9. Android 开发基础入门篇: 生成带有签名的apk安装包

    说明: 软件默认生成的安装包没有签名,现在手机安装APP的时候要求,安装包必须有签名才可以 默认生成的APK位置 现在生成带有签名的APK 我一般放到当前工程根目录,然后文件名字 key 有些时候需要 ...

随机推荐

  1. gulp 编译es6 react 教程 案例 配置

    1.gulp基本配置: var gulp = require('gulp'), watch = require('gulp-watch'), babel = require('gulp-babel') ...

  2. 安全测试2_Web前端知识学习

    上次讲到安全的简介,这次就来简单的学习下基本的前端知识(html.js.css(不作讲解),牛逼的请忽略!!! 1.Html简单概述: Html和Html DOM 2.Html字符实体(借用别人的,详 ...

  3. linux中tree命令

    需要安装tree包(安装:yum -y install tree). tree命令的选项说明如下: [ 匹配选项:] -L:用于指定递归显示的深度,指定的深度必须是大于0的整数. -P:用于显示统配符 ...

  4. 关于oracle中varchar2与nvarchar2的一点认识

    今天在oracle 10g下测试了下varchar2与nvarchar2这两种类型,网上有很多关于这两种类型的区别的帖子,我还是自己测试了下. varchar2(size type),size最大为4 ...

  5. <项目管理的决策力>总结梳理

    最近去总部参加了两天培训,关于<项目管理的决策力>,有时间会整理一下思路. ---todo 总结 6个阶段30个决策点如下:

  6. PathUtil

    public String getParentPath(final String originalPath) { boolean isSplitRequired = true; int lastSla ...

  7. 关于HTTP_USER_AGENT

    其实HTTP_USER_AGENT的内容获取的很详细 可以获取手机的型号 这个是我的手机用UC浏览器 访问获取的代码 Mozilla/5.0 (Linux; U; Android 7.1.1; zh- ...

  8. python学习笔记_week19

    note 上节内容回顾: 1.Django请求生命周期 -> URL对应关系(匹配) -> 视图函数 -> 返回用户字符串 -> URL对应关系(匹配) -> 视图函数 ...

  9. python中的remove

    remove()从左到右寻找,移除找到的第一个指定元素,举个例子: 1 a = ["hello", "world", "world", &q ...

  10. ant 标签详解

    Ant 开发 Ant的构建文件当开始一个新的项目时,首先应该编写Ant构建文件.构建文件定义了构建过程,并被团队开发中每个人使用.Ant构建文件默认命名为build.xml,也可以取其他的名字.只不过 ...