6

DevOps 进阶:测试策略设计

 3 years ago
source link: https://zhuanlan.zhihu.com/p/160250931
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

DevOps 进阶:测试策略设计

编程话题下的优秀回答者

距离我一次写测试相关话题的文章,已经有相当长的一段时间了。对于自动化测试相关的内容,我大抵还算是熟悉的。毕竟,开发人员写测试这件事在 ThoughtWorks 是自然而然的,它也体现在我的开源项目上。恰好,最近我正在帮助客户设计和实施测试策略。

我便有了想法重新写一篇文章,体系性的介绍一下相关的内容。我那已经达到 800+ 篇的博客,正好缺失这样的一篇文章。PS:我并非一个专业的测试工程师,其中若有偏颇之处,欢迎大家指正。

什么是测试策略?

测试策略是一份在特定环境约束之下,描述软件开发周期中关于测试原则、方法、方式的纲要,并阐述了它们之间如何配合,以高效地减少缺陷、提升质量。在这份策略中,需要描述测试的类型、目标、方法、准入准出条件、所需的时间、资源以及环境等信息。

测试策略是一个因地制宜地策略模式,针对于不同的公司、不同的团队、不同类型的项目,相关的内容内容或多或少会出现变化。如对于快速迭代的互联网公司来说,单元测试、UI 自动化测试不一定会被采用。对于测试策略来说,我们主要关注于两部分的内容:

  1. 测什么? 需要包含哪些测试及对应的测试范围?
  2. 怎么测? 包含哪些测试方法?以及如何通过各种手法配合完成测试?

如《测试架构师修炼之道》一书所说,它考虑的实际上是:

  • 测试的对象和范围是什么?
  • 测试的目标是什么?
  • 测试的重点和难点是什么?
  • 测试深度和广度是什么?
  • 如何安排各种测试活动?
  • 如何评价测试的效果?

这样一看,测试策略看上去还是蛮复杂的。但是,事实并非如此,因为现有的测试体系和架构已经非常丰富,并且我们可以看到各种各样的测试策略示例。

测试策略设计

在进行测试策略设计之前,我们确立好基本思想:每个人为质量负责。不是 QA,也不止是 QA 和 开发,而是所有人。

对应的,我们要做好关于尝试策略的演进式规划:

  • 尽早测试、不断测试
  • 将犯错提前,以加快反馈
  • 测试策略不是一成不变的,而是不断演进的

在我们继续设计之前,我们还需要:

  1. 收集、分析现有的缺陷类型、修复时间等
  2. 寻找适合项目的测试类型、方式
  3. 确认方案所需要的度量体系

定义『测什么?』

测什么是指质量需求是什么、需要关注质量的哪些方面,比如应用的功能范围、性能、安全、易用性等非功能需求。

在这里,我的同事林冰玉在那篇《一页纸测试策略》中提到测试的三个方面:功能、安全、性能,结合其中定义的开发生命周期中的测试活动。

我们就有了关于『测什么』的设计过程:

  1. 可视化软件开发生命周期
  2. 定义现有的每个环节已实施的内容
  3. 添加新的测试活动
  4. 与团队讨论可行性
  5. 在迭代优化中更新『测什么』部分

定义『怎么测?』

怎么测就是采用什么办法来帮助系统实现质量需求,而不仅仅是手动和自动化的测试方法,也包括一切为质量保障服务的流程、环境、基础设施和人员等。

这部分的定义依赖于有一定的测试经验的 QA 进行编写。如下是一份定义特定测试活动的模板示例:

相似的,这里只是提供一个模板,针对于不同的组织来说会存在一些差距。

记录测试策略

记录,没啥说的,单纯的记录。只是呢,在记录的时候需要注意一下:

  1. 保持测试策略的团队可见性。
  2. 和团队达到一致意见。
  3. 持续更新。在线随时可更新的文档优于二进制形式

没啥说的,只是单纯的可视化。

在这里,提供一份我 Ledge 的可视化示例。

总体实施方案

尽管有了上述的内容,但是实施起来并非那么容易——至少我们需要一个总的大纲。于是,在与我的同事于晓南讨论之后,大致有了一个总体方案设计和实施的过程:

  1. 明确总体目标。即我们做这件事的价值是什么?
  2. 可测试性调研。评估自动化测试的可行性;定位
  3. 设计测试策略。适配项目需要,确认分层策略;
  4. 测试 MVP。结合项目进行环境准备、框架选型、Demo 准备
  5. 落地测试策略
  6. 管理数据和用例
  7. 持续更新和优化

针对于不同的项目来说,计划会存在一些区别,如:

  1. 可测试性调研。评估自动化可行性;定位自动化测试的测试目的;
  2. 进行测试策略赋能。测试赋能计划;制定自动化测试目标比例;
  3. 制定和落地分级测试策略。通用的应用级测试策略模板;设计环境管理、数据管理、用例管理方案;
  4. 对齐标准的测试环境。打通自动化测试环境;
  5. 进行测试数据管理
  6. 持续优化。建立可持续性的测试知识库;

测试策略的实施

这部分也不复杂,主要依旧是:

  1. 测试的 MVP 示例。框架选型、准备 DEMO
  2. 结合项目的示例。准备环境
  3. 项目中落地。集成 CI、本地踊
  4. 对团队进行赋能。
  5. 大规模落地。新增代码测试覆盖、存量代码优化
  6. 进行测试评审。
  7. 持续更新。

相关的工具见:常见测试工具
参考文章:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK