Python 测开27期 - WL - 学习笔记 - 被测需求理解与测试策略

被测需求理解

需求文档

  • 查看需求
  • 模拟需求宣讲

需求评审

image

需求分析

  • 明确测试范围
  • 明确功能点
  • 明确业务流程
  • 明确输出结果
  • 分析异常流程
  • 预估测试需要的时间和资源

常用测试策略与测试手段

测试策略

  • 在特定环境约束下,描述软件开发周期中关于测试原则、方法、方式的纲要,并阐述了它们之间如何配合,以高效的减少缺陷,提升质量

测试策略的关注重点

  • 测试目标是什么
  • 测试可能存在的风险是什么
  • 测试对象和范围是什么
  • 如何安排各种测试活动
  • 如何评价测试效果

测试策略范例

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 跨应用测试

工具体系参考

智能遍历工具

  • 百度 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 测试

流量回放

更多质量保证

  • 性能
  • 安全
  • 兼容性
  • 健壮性
  • 易用性

自动化测试策略总结

分层测试策略 测试手段
系统测试 手工测试
集成测试 自动化测试
单元测试 测试框架