38.自动化遍历测试技术

发布时间 2023-12-26 14:53:17作者: 想要暴富的小男孩

自动化测试与手工测试对比

 
 手工测试自动化测试
业务覆盖度 高 ❤️
执行速度 高 ❤️
维护成本 低 ❤️
学习成本 低 ❤️

{style=“margin: auto”}

手工测试的困境

 
  • 测试广度
    • 回归测试难以保证,测试内容太多导致手工测试无法充分覆盖
    • 兼容性测试难以保证,数十台设备、多种环境、多种版本无法充分覆盖
    • 专项测试回归难度大,内存泄漏、健壮性测试、弱网等测试过程太多
  • 测试深度
    • 人工校验效果难以保证,比如股票相关数据变化共数十个字段,容易产生疏漏
    • 数据搜集繁琐,比如后端接口传输数据的变化和内容收集比较麻烦
  • 测试效能
    • 投入成本大,需要投入大量的人力与管理成本
    • 质量反馈慢,无法实现测试左移与快速反馈

自动化测试的困境

  • 技术门槛高
    • 很多初级工程师对自动化框架掌握程度不够
    • 没有采用 Page Object 模式导致自动化用例维护成本大
    • 没有进行二次框架封装
  • 投入成本大
    • 没有采用合理的 UI 分层测试体系
    • 没有经验丰富的测试开发工程师

我们到底需要什么样的测试方法

 
 手工测试自动化测试理想测试方法
业务覆盖度 高 ❤️ 高 ❤️
执行速度 高 ❤️ 高 ❤️
维护成本 低 ❤️ 低 ❤️
学习成本 低 ❤️ 低 ❤️

智能遍历测试

  • 将被测系统理解为一个有限状态机,通过遍历的方式达到充分的路径覆盖。
  • 自动遍历测试是基于模型的测试方法的一种应用场景

基于模型的测试方法

  • 将 app 的业务行为理解为一个有向图
  • 有向图中的节点代表业务状态
  • 有向图中的路径代表达到特定状态的行为
  • 以充分遍历所有状态为目标

智能遍历测试的特点

 
 手工测试自动化测试智能遍历测试
业务覆盖度 高 ❤️
可累积的自动化用例
高 ❤️
可累积的自动化模型
执行速度 高 ❤️
使用自动化
高 ❤️
使用自动化
维护成本 低 ❤️
不需要维护代码
低 ❤️
不需要维护代码
学习成本 低 ❤️
不依赖自动化技术
低 ❤️
不依赖自动化技术与经验

智能遍历测试相关的工具

 
 是否开源AndroidiOS用途方法论
monkey 开源 支持   压力测试工具
健壮性测试
 
百度 smart_monkey   支持   健壮性测试 改进版 monkey
腾讯 newmonkey   支持   健壮性测试 改进版 monkey
Android App Crawler 开源 支持   遍历测试 基于模型
zhangzhao/Maxim   支持   健壮性测试
遍历测试
基于模型
蚂蚁金服
macaca/nosmoke
开源 支持 支持 遍历测试 基于模型
霍格沃兹测试开发学社
appcrawler
开源 支持 支持 遍历测试 基于模型
字节跳动 Fastbot   支持 支持 遍历测试 基于模型

app 压力测试工具 monkey

 

monkey quick start

adb shell monkey \
  -p com.xueqiu.android \
  --throttle \
  --pct-touch \
  -f 脚本文件 \
  -v
  200

monkey script 模式

type = user
count= 1
speed= 1
start data >>
UserWait(1000)
DispatchPress(KEYCODE_HOME)
DispatchPointer(1, 1,0, 720, 220, 0, 0, 0,0,0,0, 0)
DispatchPointer(1, 1,1, 720, 220, 0, 0, 0,0,0,0, 0)
DispatchPointer(1, 1,0, 680, 425, 0, 0, 0,0,0,0, 0)
DispatchPointer(1, 1,1, 680, 425, 0, 0, 0,0,0,0, 0)
DispatchPress(KEYCODE_HOME)

monkey 工具的缺点

  • 经常点到外部的 app
  • 经常点击到注销和退出

无法灵活控制