QCon2015专场有很多关于架构优化、专项领域调优专题,但能系统性描述产品测试方向只有《携程无线App自动化测试实践》。编程
(一). 携程的无线App自动化架构
1. 先总结下他们作到了些什么:并发
(1). 移动设备真机自动化测试集群,及集群监控。框架
(2). 集群中设备可提供远程人工控制服务(远程操做手机屏幕)。高并发
(3). 基于Appium编写案例。工具
(4). 创建基本的自动化测试模式(自动化案例:手工案例 为 3:7)。测试
2. App自动化测试的产出效果:优化
(二). 反思设计
1. 携程的可改进之点:
(1). PC利用率低下:携程1台PC只挂2台移动设备。
adb查找设备/模拟器 端口是5555~5585,每一个设备/模拟器占2个端口,因此PC通常能够挂15个设备/模拟器。当时咱们作移动自动化测试时,就是一台PC挂6~8台移动设备。
固然,携程不这么作确定有缘由:
a)adb-server与移动设备 I/O 时,会不按期出现卡死。
缘由:移动设备没有返回,致使adb-server一直read()不到数据。另外,adb-server和设备I/O时,是加锁而且没timeout的,这将致使:一台设备读卡死,其余设备也别想干活了……
解决方案:adb监控,发现异常adb,干掉并重启。重启adb会有反作用(执行中案例会失败),但可经过:案例执行的幂等 与 重复执行失败案例 解决。
b)adb没法承受大量 I/O 并发
(2). 测试结果 不具有 功能正确性 结论
携程的某些测试类型(如:可达性测试、及所谓的冒烟测试......)不能给出功能正确性判断。这在业界是有争议的,一部分人认为:可测试Activity页是否崩溃/Webpage是否加载成功;另外一部分则认为:须要人手返工测试,保证功能正确性,因此它不必存在。我的更倾向后者。另外,这也从侧面反应出一个问题:UI级别的自动化测试实施不容易,这里就不扯远了。
2. 携程的可取之处:
(1). 提供设备远程人工控制服务(远程操做手机屏幕)。
该功能其实并不新鲜,Testin早在2012年已对外提供相似服务,只不过13年后屏蔽对外。它的优势在于统筹资源,可减小设备冗余。
(2). 基于Appium编写案例。
我以前也负责过YY的移动端测试框架"TestAgent"的实现与维护,之因此认为 基于Appium实施自动化测试 可取,缘由有二:
a)能提供良好的 案例编写/编程 风格。
UI自动化测试框架实施,我认为有3个重点:
1. 操做 被测试应用 UI元素 的方法。
2. 提供易读,易用API。
3. 提供方便,完备的 元素索引 方式。
其中2,3是编写优雅测试案例的基础。固然,对于2,3,Appium和TestAgent都是具有的。
b)开源社区支持。
Appium与其余测试框架(包括:阿里,百度,还有YY……)差异就在这里。
(3). 携程拥有独立的基础工具研发部门支撑各上层业务测试
以上说的优与劣,皆技术层面问题。但这个非技术性问题,才是我最大感触。