top100summit 芈珺七拼八凑搭建移动自动化测试框架
TRANSCRIPT
揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力!
12年12月17日星期⼀一
揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力!
TOP100 案例标题 mijun @douban
12年12月17日星期⼀一
七拼八凑搭建移动自动化测试框架
12年12月17日星期⼀一
为什么七拼八凑?
移动测试场景更加复杂
移动测试框架不够成熟,并且还在发展
更严格的权限管理
12年12月17日星期⼀一
复杂的测试场景
远程应用中包含web应用;
进程间的通信;
变化多样的网络环境(wifi,3g等);
多样化的输入(例如:lbs信息,语音输入等);
高优先级,系统级别的中断(自动锁屏,电话呼入等);
12年12月17日星期⼀一
怎么七拼八凑?
基于⼀一定的框架基础;
具体app具体分析,重点的解决1-2个主要的核心问题。
5
12年12月17日星期⼀一
Selenium
6
12年12月17日星期⼀一
Selenium
6
12年12月17日星期⼀一
框架应该是什么样子的?
7
12年12月17日星期⼀一
框架应该是什么样子的?
核心层
7
12年12月17日星期⼀一
框架应该是什么样子的?
核心层
7
12年12月17日星期⼀一
框架应该是什么样子的?
核心层 Junit,TestNG,pyunit
7
12年12月17日星期⼀一
框架应该是什么样子的?
核心层 Junit,TestNG,pyunit
工具层
7
12年12月17日星期⼀一
框架应该是什么样子的?
核心层 Junit,TestNG,pyunit
工具层
7
12年12月17日星期⼀一
框架应该是什么样子的?
核心层 Junit,TestNG,pyunit
工具层 selenium,httpclient,⋯
7
12年12月17日星期⼀一
框架应该是什么样子的?
核心层 Junit,TestNG,pyunit
工具层 selenium,httpclient,⋯
适配层
7
12年12月17日星期⼀一
框架应该是什么样子的?
核心层 Junit,TestNG,pyunit
工具层 selenium,httpclient,⋯
适配层
7
12年12月17日星期⼀一
框架应该是什么样子的?
核心层 Junit,TestNG,pyunit
工具层 selenium,httpclient,⋯
适配层 1 对应变化的控件封装2 不想写太多的重复代码的方法封装
7
12年12月17日星期⼀一
测试框架抽象
8
12年12月17日星期⼀一
测试框架抽象
8
12年12月17日星期⼀一
测试框架抽象
核心层
8
12年12月17日星期⼀一
测试框架抽象
核心层
8
12年12月17日星期⼀一
测试框架抽象
核心层 负责测试执行的驱动和结果监测并且反馈
8
12年12月17日星期⼀一
测试框架抽象
核心层 负责测试执行的驱动和结果监测并且反馈
8
12年12月17日星期⼀一
测试框架抽象
核心层 负责测试执行的驱动和结果监测并且反馈
工具层
8
12年12月17日星期⼀一
测试框架抽象
核心层 负责测试执行的驱动和结果监测并且反馈
工具层
8
12年12月17日星期⼀一
测试框架抽象
核心层 负责测试执行的驱动和结果监测并且反馈
工具层 负责相应侧面的测试执行的动作触发
8
12年12月17日星期⼀一
测试框架抽象
核心层 负责测试执行的驱动和结果监测并且反馈
工具层 负责相应侧面的测试执行的动作触发
8
12年12月17日星期⼀一
测试框架抽象
核心层 负责测试执行的驱动和结果监测并且反馈
工具层 负责相应侧面的测试执行的动作触发
适配层
8
12年12月17日星期⼀一
测试框架抽象
核心层 负责测试执行的驱动和结果监测并且反馈
工具层 负责相应侧面的测试执行的动作触发
适配层
8
12年12月17日星期⼀一
测试框架抽象
核心层 负责测试执行的驱动和结果监测并且反馈
工具层 负责相应侧面的测试执行的动作触发
适配层 基于page-obj原理的测试方法的封装
8
12年12月17日星期⼀一
开始七拼八凑
Android 自动化测试
robotium(native)
AndroidDriver(web)
目标: framework = robotium + AndroidDriver
9
12年12月17日星期⼀一
robotium
最流行的Android自动化测试工具
真机模拟器都能运行
无法操作WebView内部的页面
⋯⋯
10
12年12月17日星期⼀一
为什么robotium不支持web?
Android测试框架底层不支持,也没有必要支持?
Andorid可以直接使用js来进行交互;
WebView的操作可以直接mock掉;
实际情况:我们有时需要在ATDD的时候从更直观更端对端的角度来确认这个问题。
11
12年12月17日星期⼀一
AndroidDriver
AndroidDriver 有2种方式:
1 Remote Server的方式
2 Android-Junit 的方式
我们将采用Android-Junit的方式
12
12年12月17日星期⼀一
开始改造
得到源码
修改代码
编译打包
PS: Android4.0以上系统才支持。
13
12年12月17日星期⼀一
14
12年12月17日星期⼀一
15
12年12月17日星期⼀一
16
12年12月17日星期⼀一
小小的发散
增加控制网络的小工具到工具层
自己实现wifi 和 apn的中断和联通
在需要控制网络的case中调用。
PS: apn在Android4.0以上系统不能控制
17
12年12月17日星期⼀一
回顾
核心层 负责测试执行的驱动和结果监测并且反馈
工具层 负责相应侧面的测试执行的动作触发
适配层 基于page-obj原理的测试方法的封装
18
12年12月17日星期⼀一
案例启示
更多的扩展功能,可以在分析之后,在相应的层面上进行解决;
不同的app,需要不同的框架组合来达到自动化测试最大化。
19
12年12月17日星期⼀一
总结
我们需要面向开源社区,发现更多更好的工具,并且进行简单的集成处理。
移动测试不只是框架需要七拼八凑,在执行测试脚本的时候也需要七拼八凑。最后在通过持续集成来组成以后完整的测试过程。
通过七拼八凑达到自动化测试的最大化,手动测试来弥补那些自动化无法实现的测试活动。
20
12年12月17日星期⼀一
Q & A
您也可以通过以下方式找到我:豆瓣主页:h"p://www.douban.com/people/mijun/Email: [email protected]微博: @芈峮
21
12年12月17日星期⼀一
www.top100summit.com
揭示研发管理白金定律,分享那些激动人心的创新与变革,使得团队获得过多源动力与更大的推动力!
22
12年12月17日星期⼀一