Android自动化测试-cafe自动化测试框架学习(一)
2015-08-11 15:45
393 查看
cafe是百度开源的一套自动化测试框架,最近开始着手研究了一下,以下是一些总结,比较基础,就是说说环境搭建。
cafe官网地址:https://baiduqa.github.io/Cafe/
源码在gitHub上有,https://github.com/BaiduQA/Cafe
1、Cafe能做什么?
百度cafe.是一款来自百度QA部门的Android平台自动化测试框架,框架覆盖了Android自动化测试的各种需求,致力于实现跨进程测试、快速测试、深度测试,解决了Android自动化测试中的诸多难题,比如业界一直没有解决的跨进程测试问题。主要亮点如下:
基于hook录制体系
遍历测试(基于Monkey)
跨app测试(Robotium+AIDL)
pc agent设计
使用android漏洞提权
2、源码结构分析,去gitHub下载源码之后,解压之后文件结构如下:
download:这里面放着cafe的各种版本,迄今为止,是更新到了3.1,把最新的版本的zip解压,可以得到cafe.jar, cafe-doc.jar(这两个jar包在后面的环境搭建需要加入Build Path), 还有Cafe-Setup.bat等文件,这个是在Cafe运行前需要运行一遍,另还有一个Cafe.apk,这个需要在被测机子上预先安装好。
testrunner: cafe的源码
tests:放一些Cafe的功能测试项目
testservice:同上
testuntils:一些公共工具类,Cafe-Setup.bat在这里也有。
tools:存放签名工具
3.cafe的使用(基于源码)
解压eclipse工具、安装JDK和Android SDK,并设置好环境变量
在 https://github.com/BaiduQA/Cafe/tree/master/downloads 下载最新的café.jar、在http://mtc.baidu.com/?pname=replayhome下载MTC工具
启动eclipse,File->Import->Android->Existing Android Code Into Workspace导入被测工程,此处以Robotium官网给的例子NotePad为被测工程。
File->New->Project->Android->Android Test Project新建测试工程,输入测试工程名称,Select Test Target选择前面导入的被测工程
导入cafe.jar,测试工程右击,选择Build Path->Configure Build Path…,在libraries页面点击Add External JARs,导入b下载的cafe.jar
新建测试类,在测试工程->src->测试类存放的包上右击,选择New->Java->Junit->Junit Test Case,在Name中输入Test Case的名称,选择Setup(),tearDown()和Constructor,点击完成
或者直接使用MTC录制(工具的文件夹下有详细的使用说明文档),录制完成后直接生成Eclipse测试工程
编写代码
运行
PC连接模拟器或者设备,安装 Cafe.apk 、运行 cafe_setup.sh 或者 cafe_setup.bat(模拟器和设备没有安装和运行过的才需要),右击测试工程的测试类,选择Run As --> Run As Android JUnit Test运行;
查看测试结果 在eclipse的junit面板和Android shell中,可以清楚的看到运行结果
如果出错,可以自己排查一下Manifest.xml文件,正确的内容应该如下:
问题:
cafe能不能做无源码的测试?
签名怎么用?
现在还没用到签名,我猜测签名是不是用于无源码的测试下,因为robotium就是这么做的,而cafe是基于robotium开发的,还不清楚这个签名是用来干嘛的,如果有哪位大神用过,麻烦回复告诉我下。
cafe官网地址:https://baiduqa.github.io/Cafe/
源码在gitHub上有,https://github.com/BaiduQA/Cafe
1、Cafe能做什么?
百度cafe.是一款来自百度QA部门的Android平台自动化测试框架,框架覆盖了Android自动化测试的各种需求,致力于实现跨进程测试、快速测试、深度测试,解决了Android自动化测试中的诸多难题,比如业界一直没有解决的跨进程测试问题。主要亮点如下:
基于hook录制体系
遍历测试(基于Monkey)
跨app测试(Robotium+AIDL)
pc agent设计
使用android漏洞提权
2、源码结构分析,去gitHub下载源码之后,解压之后文件结构如下:
download:这里面放着cafe的各种版本,迄今为止,是更新到了3.1,把最新的版本的zip解压,可以得到cafe.jar, cafe-doc.jar(这两个jar包在后面的环境搭建需要加入Build Path), 还有Cafe-Setup.bat等文件,这个是在Cafe运行前需要运行一遍,另还有一个Cafe.apk,这个需要在被测机子上预先安装好。
testrunner: cafe的源码
tests:放一些Cafe的功能测试项目
testservice:同上
testuntils:一些公共工具类,Cafe-Setup.bat在这里也有。
tools:存放签名工具
3.cafe的使用(基于源码)
解压eclipse工具、安装JDK和Android SDK,并设置好环境变量
在 https://github.com/BaiduQA/Cafe/tree/master/downloads 下载最新的café.jar、在http://mtc.baidu.com/?pname=replayhome下载MTC工具
启动eclipse,File->Import->Android->Existing Android Code Into Workspace导入被测工程,此处以Robotium官网给的例子NotePad为被测工程。
File->New->Project->Android->Android Test Project新建测试工程,输入测试工程名称,Select Test Target选择前面导入的被测工程
导入cafe.jar,测试工程右击,选择Build Path->Configure Build Path…,在libraries页面点击Add External JARs,导入b下载的cafe.jar
新建测试类,在测试工程->src->测试类存放的包上右击,选择New->Java->Junit->Junit Test Case,在Name中输入Test Case的名称,选择Setup(),tearDown()和Constructor,点击完成
或者直接使用MTC录制(工具的文件夹下有详细的使用说明文档),录制完成后直接生成Eclipse测试工程
编写代码
<pre name="code" class="java">package com.example.android.notepad.test; import android.view.KeyEvent; import android.widget.Button; import com.baidu.cafe.CafeTestCase; import com.baidu.cafe.local.Log; public class CXQTestCafeCase extends CafeTestCase { private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.example.android.notepad.NotesList"; private static final String TARGET_PACKAGE = "com.example.android.notepad"; private static Class<?> launcherActivityClass; static { try { launcherActivityClass = Class .forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } @SuppressWarnings("unchecked") public CXQTestCafeCase() { super(TARGET_PACKAGE, launcherActivityClass); } protected void tearDown() throws Exception { super.tearDown(); } @Override protected void setUp() throws Exception { // TODO Auto-generated method stub super.setUp(); } public void test01() { local.clickLongOnScreen(100, 100);//其他的功能可以自己参照tests文件夹</span>}}
运行
PC连接模拟器或者设备,安装 Cafe.apk 、运行 cafe_setup.sh 或者 cafe_setup.bat(模拟器和设备没有安装和运行过的才需要),右击测试工程的测试类,选择Run As --> Run As Android JUnit Test运行;
查看测试结果 在eclipse的junit面板和Android shell中,可以清楚的看到运行结果
如果出错,可以自己排查一下Manifest.xml文件,正确的内容应该如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.notepad.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.android.notepad" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <uses-library android:name="android.test.runner" /> </application> </manifest>
问题:
cafe能不能做无源码的测试?
签名怎么用?
现在还没用到签名,我猜测签名是不是用于无源码的测试下,因为robotium就是这么做的,而cafe是基于robotium开发的,还不清楚这个签名是用来干嘛的,如果有哪位大神用过,麻烦回复告诉我下。
相关文章推荐
- Android—获取view中的一个控件
- Android分析应用程序的构建过程
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- 美团Android自动化之旅—适配渠道包
- Android Studio Drawable和Mipmap文件夹的区别
- 美团Android自动化之旅—适配渠道包
- 美团Android自动化之旅—适配渠道包
- 史上最详细的Android Studio系列教程四--Gradle基础
- Android 蓝牙通信
- Android模拟器中EditText能够调出中文输入
- 史上最详细的Android Studio系列教程二--基本设置与运行
- Android中Json数据解析,Thread+Handler ,SimpleAdapter使用小案例
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- android 全局路径变量
- Android开发的一些收获
- Android编译系统参考手册
- Android Context, What Context?
- android之屏幕适配之深入研究
- Android 从清单配置文件元数据中获取值
- Android笔记(七) Android中的布局——线性布局