一:    总体架构

系统工程架构源码:https://github.com/UDLD/UIAUTOMATORTEST

整个系统基于: UiAutomator + 自编Python交互库 + Robot + Shell脚本 。

采用关键字驱动测试模式,以UiAutomator为主要测试接口,测试逻辑主要由Robot Framework控制,测试报告亦基于Robot Framework。

UiAutomator脚本工程框架,写入了大量复用操作,以提高代码复用行、扩展性和易维护性;采用三层分离,适用于多系统多平台测试。

系统架构图如下:

二.   系统特点

1.  支持多机器并行跑测试用例,也支持跑多台机器间交互的测试用例。

2.  自动化测试生成Html格式易读报告。

3.  关键字驱动,代码复用,测试脚本易维护。

4.  报告生成后自动邮件发送。

5.  执行用例期间Log自动获取并保存。

6.  关键字库功能基本覆盖黑盒测试需求。

三.   关键字库设计实现总结

1.   对控制台输出进行处理的时候要严谨,尤其是对带有空格的输出文本的处理,因为屏幕大小和系统版本可能会影响处理结果。

2.  因为有可能针对多用例串行测试,所以Python测试交互方法中全局变量的处理要严谨,如果函数多次调用全局变量,要明确上次调用对本次调用的影响。

3.  因为要并行测试,所以在需要明确Device的方法,都要添加Device参数。

4.  为了工程更具移植性和准确性,要注重工作路径的切换,尤其是测试用例对库的引用,测试报告、测试图片、测试APK等路径的设置和引用。

5.  因为Robot只会打印关键字的输出到测试报告,故UiAutomator测试脚本中的输出和其他一些方法必要输出要返回并获取,然后在关键字方法中输出。

6.  在和Robot的交互中,要理解Robot的输出控制,适时添加控制台输出和报告输出,已更加明确的显示测试进程。

Android 并行自动化测试系统 实现总结的更多相关文章

  1. 网易与Google合作发布开源UI自动化测试方案 牛逼:Google 方面评价,这可能是目前世界上最好的 Android 游戏自动化测试方案。

    美西时间 3 月 19 日,在 GDC 开幕第一天的 Google 开发者专场,Google 发布了一款由网易研发的 UI 自动化测试方案:Airtest Project.Google 方面评价,这可 ...

  2. Android监听系统短信数据库变化-提取短信内容

    由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路. Android监听系统短信数据库内容变化使用场景: 1.监听短信数据库的 ...

  3. 让Android程序获得系统的权限,实现关机重启,静默安装等功能

    引用:http://www.cnblogs.com/welenwho/archive/2012/05/10/2494984.html android想要获得系统权限有几种途径,一种就是你的程序固化的系 ...

  4. Android manifest之系统自带的permission

    Android manifest之系统自带的permission 本文描述Android系统自带的permission.点击查看:“关于permission的原始定义和说明”.点击查看:“Androi ...

  5. Android应用与系统安全防御

    来源:HTTP://WWW.CNBLOGS.COM/GOODHACKER/P/3864680.HTML ANDROID应用安全防御 Android应用的安全隐患包括三个方面:代码安全.数据安全和组件安 ...

  6. android BroadcastReceiver ACTION_TIME_TICK 系统时间监听不到

    android BroadcastReceiver ACTION_TIME_TICK 系统时间监听不到 今天做android上的消息推送,启动了一个独立service,然后在里面监听系统的ACTION ...

  7. [系统集成] Android 自动构建系统

    一.简介 android app 自动构建服务器用于自动下载app代码.自动打包.发布,要建立这样的服务器,关键要解决以下几个问题: 1. android app 自动化打包android 的打包一般 ...

  8. android开发中系统自带语音模块的使用

    android开发中系统自带语音模块的使用需求:项目中需要添加语音搜索模块,增加用户体验解决过程:在网上搜到语音搜索例子,参考网上代码,加入到了自己的项目,完成产品要求.这个问题很好解决,网上能找到很 ...

  9. android - python 自动化测试 移动互联网 - SegmentFault

    android - python 自动化测试 移动互联网 - SegmentFault splinter

随机推荐

  1. A PHP extension for Facebook's RocksDB

    A PHP extension for Facebook's RocksDB 31 commits 2 branches 0 releases 2 contributors C++ 90.5% C 8 ...

  2. 【Django】Django 直接执行原始SQL 如何防止SQL注入 ?

    代码示例: #错误--不要直接格式化字符串 query = 'SELECT * FROM myapp_person WHERE last_name = %s' % lname Person.objec ...

  3. Hessian原理分析

    一.      远程通讯协议的基本原理 网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http . tcp . udp 等等, ...

  4. Java异常的栈轨迹fillInStackTrace和printStackTrace的用法

    本文转自wawlian 捕获到异常时,往往需要进行一些处理.比较简单直接的方式就是打印异常栈轨迹Stack Trace.说起栈轨迹,可能很多人和我一样,第一反应就是printStackTrace()方 ...

  5. 《ASP.NET1200例》统计网站访问量源代码

    void Application_Start(object sender, EventArgs e)     {        //在应用程序启动时运行的代码        int count=0;  ...

  6. ZOJ 2315

    ---恢复内容开始--- http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1315 这个题目比较难以看懂,我也是看网上的题目意思才 ...

  7. win平台检查内存泄露

    int main() { _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); _CrtSetBre ...

  8. DP:Dollar Dayz(POJ 3181)

    一道高精度DP 题目大意,换工具,有m块钱,有k种价值的物品,(1...k),求一共有多少种换法 这一题就是完全背包,现在这种完全背包对我来说就是水题了, 状态转移方程闭着眼睛写dp[j]+=dp[j ...

  9. springMVC获取file,几种转换

    //从前台通过name值获取file MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)reque ...

  10. Java如何读取XML文件 具体实现

    转载自:http://www.jb51.net/article/44338.htm import java.io.*; import javax.xml.parsers.DocumentBuilder ...