App埋点测试用例自动化回归
测试开发社区
共 4525字,需浏览 10分钟
·
2021-08-15 12:11
一、背景和目的
线上存在埋点数量总数大于1000个,主流程case大于300个,在对功能迭代过程中经常会有对已有的埋点进行回归的述求,以往都是消耗大量的时间去手工回归,同时覆盖2端还容易出现漏测的现象。
为了改善现状,内部调研可做成UI自动化回归,经过实践后约能提效50%,且只要及时补充场景,就可以大大降低漏测的场景。
二、断言方法
CASE执行流程:
如何获取客户端上报的埋点数据:
1. Android 客户端通过adb命令实现:
def save_logcat_to_file(self, file_path, grep_str=``""``, extra_args=``""``, parameter=``"-d"``):
``""``"
``保存log 到指定文件 & 返回 进程
``adb logcat -v time > xxx
``:param grep_str: 过滤字符
``:param extra_args: 额外的参数
``:param file_path: log 存储路径
``:param parameter: logcat的额外的参数; 默认-d(将缓存的日志输出, 并且不会阻塞;)
``:``return``: log 进程
``""``"
``logcat_cmd = ``"shell "
``to_file_cmd = ``" > "` `+ file_path
``if` `extra_args:
``logcat_cmd += ``" "` `+ extra_args
``if` `grep_str:
``if` `config.is_windows:
``# logcat_cmd += ``"\"logcat -d -v time | grep \'"` `+ grep_str + ``"\'\""
``logcat_cmd += ``"\"logcat "` `+ parameter + ``" -v time | grep \'"` `+ grep_str + ``"\'\""
``else``:
``# logcat_cmd += ``"logcat -d -v time | grep \'"` `+ grep_str + ``"\'"
``logcat_cmd += ``"logcat "` `+ parameter + ``" -v time | grep \'"` `+ grep_str + ``"\'"
``else``:
``logcat_cmd = ``"logcat -v time"
``# 打印日志详细时间的简单数据
``return` `self.cmd(logcat_cmd + to_file_cmd, return_proc=True)
2. iOS 客户端通过idevicesyslog命令实现:
def save_device_log(device_id, device_log_path):
``""``"
``开始保存设备log到指定文件 & 返回保存log 进程
``:param device_id: 指定设备 id
``:param device_log_path: 设备log文件
``:``return``: 保存log 进程 / None
``""``"
``try``:
``Logger().setlog(device_id + ``" 准备收集Case 日志"``, LEVEL_INFO)
``if` `PLATFORM_IOS in config.operating_system:
``# proc = Shell.proc(``"idevicesyslog -u "` `+ device_id + ``" > "` `+ device_log_path)
``proc = Shell.proc(``"tidevice -u "` `+ device_id + ``" syslog> "` `+ device_log_path)
``else``:
``device = ADB(serialno=device_id)
``device.clear_logcat()
``proc = device.save_logcat_to_file(device_log_path)
``Logger().setlog(device_id + ``"开始收集Case 日志"``, LEVEL_INFO)
``return` `proc
``except:
``print(``"存储设备log异常"``)
``return` `None
3. H5页面通过调用客户端webview能力实现:
因H5是初尝试实现,在落实过程中,为了保证能够有如下效果,调研设想了3套方案
方案一「舍弃」: 通过获取H5的日志,对H5日志进行断言 舍弃原因: 当前线上环境的H5埋点,是直接上报到线上环境的,避免测试数据对统计造成影响;实现对H5执行日志捕获投入成本高; 实现流程如下: 方案二「舍弃」:写一个新的API,供H5上报埋点时异步调用 舍弃原因: 投入资源成本高,线上会高频调用;无法保证延迟和稳定容易影响到业务 流程如下: 方案三「最终」: H5实现方案是在上报埋点的方法里面,同时异步调用客户端webview的能力,达到共用客户端实现的方法,也可以完成埋点的断言。 实现流程如下:
三、实现前后测试方法对比
场景 | 传统人工回归验证 | UI自动化验回归 | 实现后优缺点 |
---|---|---|---|
客户端操作 | 手动挂代理,开启彩蛋(客户端调试模式)高频重复操作APP | 自动化操作 | 优点:可以大大减小人工高频操作缺点:客户端的操作需要提前录入case |
埋点上报验证 | 操作APP后,需要等待3分钟左右(平台数据查询有延迟),登录神策平台相关SQL查询设备上报记录分析每个字段的上报和时序是否和预期一致 | 对客户端上报日志自动断言每个埋点都是1个case,单独进行回归,互不影响输出相关SQL,人工可以随机快速复核埋点 | 优点:1、大大降低漏测率,质效提升约50%2、操作后实时进行断言,无需等待缺点:前期还需人工随机复核 |
回归频率和范围 | 回归主流程埋点 | 只要录入,都能覆盖回归 | 优点:覆盖范围全,回归次数越多,质效提示越明显缺点:释放的人力,部分时间投入到了埋点case录入和维护 |
四、总结
1、梳理业务流程,明确自动化需要做哪范围
2、自动化框架造型
3、埋点测试存在哪些痛点,对比之后寻找解决思路
4、数据自动校验对比
5、提高自动化利用率,工程发布自动化触发自动化,每天定时执行检测
评论