一:    总体架构

系统工程架构源码: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. HDOJ 3790

    dijstra最短路径算法 : 9885560 2013-12-23 23:54:56 Accepted 3790 203MS 8112K 1343 B C++ 泽泽 #include<cstd ...

  2. 记录:js删除数组中某一项或几项的几种方法

    1:js中的splice方法 splice(index,len,[item])    注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...

  3. 《ASP.NET MVC4 WEB编程》学习笔记------Web API

    本文截取自情缘 1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集 ...

  4. mybatis3 :insert返回插入的主键(selectKey)

    Mysql: 主键自增长. 加上:keyProperty="id"就可以获得了. <insert id="insert" parameterType=&q ...

  5. iOS 推荐一个下载用的第三方库

    AFNetworking有下载功能,但是下载功能比较基本,要实现复杂下载功能需要自己写一些代码.今天在github上找到了一个下载功能的开源项目,非常不错,链接如下:https://github.co ...

  6. Delphi经验总结(2)

    Q: 怎么来改变ListBox的字体呢?就修改其中的一行. A: 先把ListBox1.Style 设成lbOwnerDrawFixed 然后在 OnDrawItem 事件下写下如下代码 proced ...

  7. 【JAVA、C++】LeetCode 003 Longest Substring Without Repeating Characters

    Given a string, find the length of the longest substring without repeating characters. For example, ...

  8. springJDBC一对多关系,以及Java递归,jsp递归的实现

    maven编译,springMVC+spring+springJDBC框架. 要实现的功能是一个文件夹下,可能显示n个文件夹,每个文件夹下又可能显示n个文件夹.... 前台效果:

  9. BaseServlet方法分发

    BaseServlet.java package org.guangsoft.controller; import java.io.IOException; import java.lang.refl ...

  10. jQuery Mobile 基础(第四章)

    1.主题 jQuery Mobile 提供了5种不同的主题样式, 从 "a" 到 "e" - 每一种主题的按钮,工具条,内容块等等颜色都不一致,每个主题的视觉效 ...