被测需求理解
需求文档
- 查看需求
- 模拟需求宣讲
需求评审
需求分析
- 明确测试范围
- 明确功能点
- 明确业务流程
- 明确输出结果
- 分析异常流程
- 预估测试需要的时间和资源
常用测试策略与测试手段
测试策略
- 在特定环境约束下,描述软件开发周期中关于测试原则、方法、方式的纲要,并阐述了它们之间如何配合,以高效的减少缺陷,提升质量
测试策略的关注重点
- 测试目标是什么
- 测试可能存在的风险是什么
- 测试对象和范围是什么
- 如何安排各种测试活动
- 如何评价测试效果
测试策略范例
1.总体测试策略:文档说明
-
1.1 产品质量说明
** 测试覆盖度:100%覆盖需求
** 测试过程:用例执行率、安全测试、性能测试、代码规范
** 缺陷修复率
** 文档:产出的标准文档 -
1.2 功能分类测试策略
** 新功能开发:优先级、说明、测试策略–全面测试
** 旧功能修改:优先级、说明、测试策略–稳定性测试、修改部分全面测试
** 旧功能无修改:优先级、说明、探索性测试 -
1.3 风险分析
-
需求文档不完整、清晰
-
需求文档更新不及时导致的测试设计遗漏或不准确
-
新版本功能的修改影响范围,–和开发沟通
-
设计过于复杂
-
多人配合缺少总负责人
-
版本自测不充分–需要提前提供自测测试用例
-
缺陷修复不及时,缺陷分析达不到预期
-
版本管理不明确,发布计划不明显
-
1.4 总体测试安排
** 各个阶段与节点的时间分布
** 阶段:概念阶段、设计阶段、开发阶段、测试阶段、发布阶段
2. 第一个版本测试策略
- 2.1 测试范围
** 一级功能、二级功能、功能概述、优先级、用户、说明、操作系统平台 - 2.2 测试目标
子系统 | 功能测试 | 兼容测试 | 安全测试 | 性能测试 |
---|---|---|---|---|
移动终端 | 功能需求实现正确 | 谷歌、IE9及以上、360浏览器等 | 详见需求文档1.0 | 详见需求文档1.0 |
移动端 | 功能需求实现正确 | Android 8.0以上,IOS 13.0以上 | 通过测试平台测试,和开发核对问题修复 | 详见需求文档1.0 |
电脑端 | 功能需求实现正确 | win7、win10、苹果笔记本 |
- 2.3 重点关注业务
** 重点功能:各端的1234, - 2.4 测试环境资源
** 测试人力资源
** 测试设备资源
** 测试环境资源 - 2.5 用例设计选择
** 各执行端的测试策略(测试用例管理平台上的测试用例,分基础功能与重点功能),完成情况 - 2.6 冒烟测试策略
** 冒烟测试策略说明
** 冒烟测试范围 - 2.7 文档管理
** 文档名称、完成情况、测试情况
3. 跟踪测试执行
- 3.1 跟踪测试用例执行情况
** 各端的用例总数、执行数量、通过与未通过数量、未执行数量、未执行原因 - 3.2 缺陷跟踪
** 各端的 bug 描述、是否解决
4. 版本质量评估
- 4.1 需求和实现的偏差
** 各端的需求描述、实现偏差描述、bug ID、修复说明 - 4.2 测试过程评估
** 测试方法回顾
** 测试投入回顾
** 测试用例分析 - 4.3 缺陷分析
** 密度评估
** bug 数、原型阶段、需求阶段、设计阶段、开发阶段、测试阶段
5. 后续版本测试策略
- 5.1 回归测试策略
** 5.1.1 缺陷回归
*** 缺陷分类:功能类、非功能类、中间层或底层类
*** 中间层或底层类需要:开发自测、测试根据修改方案确定回归范围
** 5.1.2 功能回归
*** 新老版本回归测试
*** 老功能回归测试 - 5.2 探索式测试策略
** 5.2.1 基于场景
6. 发布质量评估
- 6.1 确认总体测试策略中的质量目标是否完成
- 6.2 遗留缺陷分析
** 缺陷对用户的影响程度
** 缺陷风险评估和规避措施
** 不能遗留的缺陷:致命缺陷不遗留,没有规避措施的严重缺陷不遗留 - 6.3 暂挂 bug 的处理
测试手段
- 黑盒测试
- 白盒测试
- 动态测试
- 静态测试
- 手工测试
- 自动化测试
分层测试策略
分层测试策略的初衷
质量保证
- 需求分析
- 测试标准确立
- 测试用例 review
- 界面覆盖率
- 接口覆盖率
- 代码覆盖率
效率的提升
- 人工测试:招人、加人、培训,横向与纵向扩容,成本都很大
- 自动化测试:自动遍历测试、录制回放测试
- 尽早测试尽快反馈:单元测试、集成测试
- 流水线:持续集成、持续交付、DevOps
微服务测试模型
- Resources 通过特定协议暴露能力
- Service 负责领域模型的协作
- Domain 包含行为和数据的领域对象模型
- Repositories 作用于域实体的集合,并且通常是持久性支持的
- Gateway 与远程服务进行通讯
- Data Mappers 模型的序列化方案
微服务测试策略
- 单元测试:检验应用程序中最下偶读可测试软件,以确定它们的行为是否符合预期
- 集成测试:验证组件之间的通信路径和交互以检测接口缺陷
- 组件测试:将运行软件的范围限制在被测系统的一部分,通过内部代码接口操纵系统,并使用测试替身将被测代码与其他组件隔离开来
- 端到端测试:验证系统是否满足外部要求并实现其目标,从头到尾测试整个系统
自动化测试策略
用户端测试体系
- 研发单元测试:JUnit、Robolectric 不依赖真机或者模拟机
- 集成测试:Espresso 单应用快速集成测试
- 验收测试:Appium、ATX/AirTest、Cakabash 跨应用测试
工具体系参考
-
selenium
-
appium
智能遍历工具
- 百度 SmartMonkey
- 腾讯 NewMonkey
- 头条 fastbot
- 支付宝 Macaca 的 NoSmoke
- Android Monkey、Android App Crawler
- 霍格沃兹测试开发学社 AppCrawler
- OWASP-ZAP Web 漏洞 自动探测
稳定性测试体系案例
- Fastbot 已广泛应用于字节客户端类产品的稳定性测试与兼容性测试。每日启动任务数超过1万次,每月平均发现5万个以上的崩溃,借助 Fastbot 的能力,我们在发版前就可以修复大部分的 crash,确保线上用户的使用体验,同时,Fastbot 在整个 DevOps 流程扮演重要的基础服务角色
服务端测试体系
- 手工测试
- 自动化测试
- DIFF测试、流量回放
- Mock
使用 Mock 技术解耦与提高测试覆盖
接口测试框架
- Python:Requests
- Java:RestAssured
- 简约的接口测试 DSL
- 支持结构化解析 XML JSON 等
测试用例自动生成技术例子 Swagger
JVM-Sandbox-Repeater 录制回放工具
接口重构与 diff 测试
流量回放
更多质量保证
- 性能
- 安全
- 兼容性
- 健壮性
- 易用性
自动化测试策略总结
分层测试策略 | 测试手段 |
---|---|
系统测试 | 手工测试 |
集成测试 | 自动化测试 |
单元测试 | 测试框架 |