- 等待策略优化:添加合适的等待时机,页面加载成功&元素稳定后执行操作
- 稳定的定位策略:使用唯一且稳定的定位器
- 尽量选取稳定的识别方式,如OCR
- 对识别元素无强要求,如点击空白区域关闭页面等,尽量使用屏幕百分比定位
- 元素本身变动大,但是页面内有相对稳定的元素,使用相对稳定的元素+offset(根据元素位置偏移)识别
- 为了提高元素识别率,可以控制识别区域
- 建设容灾能力
- 设备容灾能力建设:ATX崩溃重建、手机卡死(内存不足)、设备异常识别(如下线、断网)、电脑磁盘空间定期清理
- case容灾能力:添加适当的异常处理机制,wda重连接、操作重试等
- 任务容灾能力:任务级异常(如节点打满,设备突然离线)等添加重试
- 测试数据管理
- 确定测试数据的准确性和一致性
- 使用数据驱动的方法,将测试数据和测试脚本分离,便于管理和维护
- 利用模块化思想,将通用操作集合打包成名字有意义的函数
- 去除外借干扰
- 卸载手机无用软件,降低干扰:adb shell pm list packages | cut -d':' -f2 | tr '\r' ' ' | xargs -n1 -t adb uninstall
- 关闭安全键盘、系统自动更新、电池优化等
-
定时重启
-
使用背夹,固定温度,避免长时间运行,温度过高down掉
-
电脑磁盘异常告警及自动清理
-
手机连接专有WiFi,电脑连接网线
-
自动化设备、电脑专用,位置专用,放在无干扰角落
-
定期维护和优化:定期审查优化自动化测试脚本
三、全链路压测
- 海量并发请求的发起:
- 使用jenkins Job单独调用Jmeter节点来控制和发起测试压力,能避免master节点引发的瓶颈问题,且各个Jmeter相互独立,所以只要job够多,网络带宽没有瓶颈的情况下,就能发起足够大的并发
- 做一个压测框架,处理脚本分发、数据分发、结果回传等工作,避免master节点引发问题
- 流量发起的要求:在多个城市的数据中心都搭建jmeter slave
- 全链路压测流量和数据隔离
- 数据隔离:
- 对压测流量进行数据标记,以区别真实的流量和数据(改造和扩展各个业务模块或者中间件,以保证链路上的系统都能传递和处理这种特殊的数据标记,同时写库的也需要进行标记,或者专门设置压测数据库)
- 实际业务负载的模拟:录制已有的实际用户负载
- 录制数据的清洗,如将录制得到的真实数据统一替换成压测准备的数据,如将录制得到的真实用户替换成专门为压测准备的测试用户等
- 基于用户模型的估算,按比例方法录制脚本的负载,最后用这个负载用来模拟全链路压测的负载
- 测试数据的清理:通过脚本筛选出标记的数据,进行批量处理
- 数据隔离: