自动化测试与手工测试对比
手工测试 | 自动化测试 | |
---|---|---|
业务覆盖度 | 低 | 高 ❤️ |
执行速度 | 低 | 高 ❤️ |
维护成本 | 低 ❤️ | 高 |
学习成本 | 低 ❤️ | 高 |
{style=“margin: auto”}
手工测试的困境
- 测试广度
- 回归测试难以保证,测试内容太多导致手工测试无法充分覆盖
- 兼容性测试难以保证,数十台设备、多种环境、多种版本无法充分覆盖
- 专项测试回归难度大,内存泄漏、健壮性测试、弱网等测试过程太多
- 测试深度
- 人工校验效果难以保证,比如股票相关数据变化共数十个字段,容易产生疏漏
- 数据搜集繁琐,比如后端接口传输数据的变化和内容收集比较麻烦
- 测试效能
- 投入成本大,需要投入大量的人力与管理成本
- 质量反馈慢,无法实现测试左移与快速反馈
自动化测试的困境
- 技术门槛高
- 很多初级工程师对自动化框架掌握程度不够
- 没有采用 Page Object 模式导致自动化用例维护成本大
- 没有进行二次框架封装
- 投入成本大
- 没有采用合理的 UI 分层测试体系
- 没有经验丰富的测试开发工程师
我们到底需要什么样的测试方法
手工测试 | 自动化测试 | 理想测试方法 | |
---|---|---|---|
业务覆盖度 | 低 | 高 ❤️ | 高 ❤️ |
执行速度 | 低 | 高 ❤️ | 高 ❤️ |
维护成本 | 低 ❤️ | 高 | 低 ❤️ |
学习成本 | 低 ❤️ | 高 | 低 ❤️ |
智能遍历测试
- 将被测系统理解为一个有限状态机,通过遍历的方式达到充分的路径覆盖。
- 自动遍历测试是基于模型的测试方法的一种应用场景
基于模型的测试方法
- 将 app 的业务行为理解为一个有向图
- 有向图中的节点代表业务状态
- 有向图中的路径代表达到特定状态的行为
- 以充分遍历所有状态为目标
智能遍历测试的特点
手工测试 | 自动化测试 | 智能遍历测试 | |
---|---|---|---|
业务覆盖度 | 低 | 高 ❤️ 可累积的自动化用例 |
高 ❤️ 可累积的自动化模型 |
执行速度 | 低 | 高 ❤️ 使用自动化 |
高 ❤️ 使用自动化 |
维护成本 | 低 ❤️ 不需要维护代码 |
高 | 低 ❤️ 不需要维护代码 |
学习成本 | 低 ❤️ 不依赖自动化技术 |
高 | 低 ❤️ 不依赖自动化技术与经验 |
智能遍历测试相关的工具
是否开源 | Android | iOS | 用途 | 方法论 | |
---|---|---|---|---|---|
monkey | 开源 | 支持 | 压力测试工具 健壮性测试 |
||
百度 smart_monkey | 支持 | 健壮性测试 | 改进版 monkey | ||
腾讯 newmonkey | 支持 | 健壮性测试 | 改进版 monkey | ||
Android App Crawler | 开源 | 支持 | 遍历测试 | 基于模型 | |
zhangzhao/Maxim | 支持 | 健壮性测试 遍历测试 |
基于模型 | ||
蚂蚁金服 macaca/nosmoke |
开源 | 支持 | 支持 | 遍历测试 | 基于模型 |
霍格沃兹测试开发学社 appcrawler |
开源 | 支持 | 支持 | 遍历测试 | 基于模型 |
字节跳动 Fastbot | 支持 | 支持 | 遍历测试 | 基于模型 |
app 压力测试工具 monkey
UI/Application Exerciser 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
- 经常点击到注销和退出
标签:遍历,monkey,健壮性,38,测试,自动化,成本 From: https://www.cnblogs.com/csfsz/p/17928128.html无法灵活控制