录制回放
根据人工编写的测试脚本进行录制回放
录制回放发展:
- 大规模设备集群回放
- 跨平台回放
- 同类型应用测试迁移
录制回放的核心:事件的匹配,一对一、多对一、一对多、多对多
SARA
- 动态检测:应用层动作捕获(无需源码分析)
- 自回放技术:基于坐标- 基于控件(最短 xpath)
- 适应性回放:复杂操作自动适配回放设备
LIRAT
V2S
视频规格:
video frame size
FPS
Show Touches option
动作检测- 二分类问题(low op; high op)
动作分类- Tap, Long Tap, Gesture
场景生成- adb
自动化探索
针对给定应用进行测试探索,按照一定策略生成测试事件。移动应用结构可以抽象为图结构。
三大主流策略:
- 基于随机- Monkey*
- 基于模型- Stout
- 基于学习- Q-testing
Monkey
Monkey:Android 中的一命令行工具,压力测试软件稳定性和健壮性
- 测试对象为程序包,有一定局限性
- 伪随机事件,不能自定义
- 可对事件数量、类型、频率设置
原理:向系统发送伪随机的用户事件流(如按键输入、触摸输入、手势输入等),实现对正在开发的应用程序进行压力测试
Stout
模型构建:
- UI 页面层次结构- 事件识别
- 随机有限状态机(动态分析)
- 系统事件分析
- 事件执行频率- 初始概率
模型变异、测试生成与执行:
- 随机变异事件转换概率
- 概率生成测试
- 注入系统事件
- 测试执行
- 输出度量(覆盖率)
- Gibbs 取样(是否继续执行)
- 缺陷诊断
Q-testing
状态 State:控件组合(GUI 层次结构):
非叶节点:布局控件
叶节点:可执行控件
动作 Action:用户交互事件。控件属性课匹配对应可执行事件
转移函数:App 响应函数
奖励 Reward
状态缓冲区存储已探索页面(状态)
Q-table:“状态-动作”对
可滚动布局控件:只考虑一次
系统事件
测试理解
GUI 理解
GUI 界面在软件测试中发挥着至关重要的作用
- 像素粒度 vs.控件粒度
- 动态界面 vs.静态界面
- 动态:操作带来的 GUI 变化;应用迭代带来的 GUI 变化
- 静态:测试报告截图,多模态数据融合