EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

自动化测试-09-智能化移动应用测试

录制回放

根据人工编写的测试脚本进行录制回放

录制回放发展:

  • 大规模设备集群回放
  • 跨平台回放
  • 同类型应用测试迁移

录制回放的核心:事件的匹配,一对一、多对一、一对多、多对多

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

模型构建:

  1. UI 页面层次结构- 事件识别
  2. 随机有限状态机(动态分析)
  3. 系统事件分析
  • 事件执行频率- 初始概率

模型变异、测试生成与执行:

  1. 随机变异事件转换概率
  2. 概率生成测试
  3. 注入系统事件
  4. 测试执行
  5. 输出度量(覆盖率)
  6. Gibbs 取样(是否继续执行)
  7. 缺陷诊断

Q-testing

  • 状态 State:控件组合(GUI 层次结构):

    • 非叶节点:布局控件

    • 叶节点:可执行控件

  • 动作 Action:用户交互事件。控件属性课匹配对应可执行事件

  • 转移函数:App 响应函数

  • 奖励 Reward

  • 状态缓冲区存储已探索页面(状态)

  • Q-table:“状态-动作”对

  • 可滚动布局控件:只考虑一次

  • 系统事件

测试理解

GUI 理解

GUI 界面在软件测试中发挥着至关重要的作用

  • 像素粒度 vs.控件粒度
  • 动态界面 vs.静态界面
    • 动态:操作带来的 GUI 变化;应用迭代带来的 GUI 变化
    • 静态:测试报告截图,多模态数据融合

OwlEyes