用 5W1H 告诉你如何规划合理的测试策略
摘要:测试策略描述了测试工程的总体方法和目标。描述目前在进行哪一阶段的测试以及每个阶段内在进行的测试种类(功能测试、性能测试、覆盖测试等)以及测试人力安排等。
本文分享自华为云社区《浅谈敏捷开发的测试策略》,作者:敏捷江湖桃花岛梅师姐 。
前言
随着敏捷和 DevOps 的出现,改变了传统的软件开发模式,与此同时测试也面临着不小的挑战,在敏捷开发模式下,短周期迭代交付模式意味着时间变短,拥抱变化意味着变更频繁,用户故事描述需求的方式意味着文档变少,全功能团队中意味着专门的测试人员变少。基于这样的情况,如何让测试也变得敏捷,做好测试工作呢?今天我们就一起聊一下如何做好敏捷开发的测试策略。
敏捷开发测试策略
测试策略描述了测试工程的总体方法和目标。描述目前在进行哪一阶段的测试以及每个阶段内在进行的测试种类(功能测试、性能测试、覆盖测试等)以及测试人力安排等。
我们可以按照测试的目的、范围、起止时间、人员安排、工具,即 5W1H 法来规划合理的测试策略。
why:为什么要进行测试,测试的目的是什么?
what:测试的内容及范围,测哪些,确定测试重点(RBT 基于需求的测试等)
when:测试的起止时间,考虑影响时间的因素
where:相关文档的存放位置、缺陷的存放、环境地质
who :测试人员的安排
how:选用何种测试工具及方法进行测试
Why
根据敏捷测试原则,测试的目的是用来预防缺陷,帮助团队构建最好的系统。可以根据业务和项目的特点,设置一个测试的总体目标。
What
根据测试四象限,从业务和技术的角度、以及程序和产品的角度将测试内容进行类划分,如下图所示。
图 1 测试四象限
依据敏捷的分层计划原则,测试测试也采用不同级别的测试,可以参考 Epic-Feature-Story-Task 制定策略。下面可以作为制定策略的参考,业务和产品大多是不相同的,可以根据自己业务和产品的特点进行调整。
敏捷开发过程是由迭代组成的,Epic 是由若干个迭代完成,通常为集成测试和端到端的测试;Feature 通常若干迭代来实现,通常会进行特性测试、功能测试、UAT、场景测试;Story 通常在迭代内完成,通常进行功能测试、用户故事测试;Task 为迭代内的测试,通常进行单元测试、模块测试、代码质量测试。其中性能测试会覆盖到 Story、Feature 和 Epic 层级。
When
在传统的瀑布开发模式下,测试是一个阶段,程序编写完成后进入测试阶段,如下图所示。
图 2 瀑布开发模式
在敏捷开发模式下,测试不只是一个阶段,而是一个活动,每个 Sprint 都有测试活动。每个迭代都会进行单元测试、代码质量测试、用户故事测试、特性和能力验收测试;从 Sprint2 开始都要进行一次 Sprint 级别的回归测试,以自动化测试的形式实现。累积了几个迭代之后,在发布前要进行端到端的集成测试。如下图所示。
图 3 Sprint 测试活动
Where
尽管敏捷开发中采用轻文档的形式,但同样也要做好相关文档的管理。在测试初始要约定相关测试交付物的管理和存放形式,包括不限于测试策略、测试工件、缺陷、测试数据、虚拟服务和自动化脚本等。通常会在项目管理工具中进行管理,和开发的工作项之间建立关联,这样便于后续进行追溯和查看。以华为云DevCloud为例,可以将文档上传到【Wiki】和【文档】中,然后在工作项中建立关联。
图 4 华为云 DevCloud 示例
Who
敏捷开发中,测试活动为团队的共同工作,而不仅仅是测试人员。其中开发人员做好 TDD、单元测试和代码质量测试,同时因为接口测试涉及到接口间的数据交换、传递和控制管理等内部逻辑的问题,也建议由开发人员进行。测试人员包括迭代内的测试人员和跨迭代的技术人员。迭代内的测试人员主要负责迭代测试的设计和执行,包括探索性测试和 API、UI 测试自动化脚本的开发和执行,还有自动化的回归冒烟测试。跨迭代的测试人员更多专注在协调测试和制定自动化测试策略。
同时,测试人员为团队中的一员,不仅仅执行测试工作,还要参与测试计划、评估和工作安排、回顾及任何其他团队活动。
How
为了能够更好的配合敏捷开发的小步快跑、尽早交付的模式,测试就需要具备快速测试和及早反馈的能力。在敏捷方法紧迫时间的框架下,自动化测试能力必不可少,这样可以极大的缓解测试的压力。根据 Mike Cohn 的测试金字塔,自动化测试的比例分配为 7:2:1,即单元测试占 70%,接口测试占 20%,UI 测试占 10%,这样实现分层自动化。在自动化的基础上还要进行手工的探索性测试。
图 5 测试金字塔
现在有很多的自动化工具可选,开源工具如 UI 层的 appium、Cucumber、Protractor,API 层的 POSTMAN、数据库层的 DbFit;商业工具如 UI 层的 IBM RFT、LeanFT, API 层的 SmartBear 等。
在自动化工具选择上,要从实际情况出发情况,从成本预算、支持平台、支持语言、可测的应用、技术要求等多方面去考虑。开源工具节省成本,商业工具成本高;在开源工具的选择上也要结合团队成员的代码能力情况,开源也有技术难易之分;工具的后续支持程度也要考虑进去,在使用的过程中不可避免的会遇到问题。
测试策略示例
一个产品通常是由若干个发布组成,如下图所示。
图 6 敏捷开发
以一个发布周期为例,按照时间线我们看一下测试的安排:
图 7 测试策略示例
在制定测试策略的时候,要注意安排合理的测试节奏和周期,同时最好的测试,是全自动化的每天测试。
后记
上面给出了制定测试策略的 5W1H 可以作为参考,最重要的是要牢记测试的目的是为了预防缺陷,帮助团队构建最好的系统,交付给客户有价值的产品。因此要把质量左移的测试策略作为最重要的项目管理核心理念之一贯穿到整个软件生命周期的交付中,通过缺陷预防将质量移向全生命周期的前端,通过制定基于风险的测试策略驱动,尽早发现重大缺陷。
用 5W1H 告诉你如何规划合理的测试策略的更多相关文章
- <<Modern CMake>> 翻译 2.4 项目目录结构
<<Modern CMake>> 翻译 2.4 项目目录结构 本节内容有点跑题.但我认为这是一个很好的方法. 我将告诉你如何规划项目的目录. 这是基于惯例,但将帮助您: 轻松阅 ...
- BAT面试官告诉你如何回答你的职业规划
前言(Why) 在面试中不论是在一面二面三面这种技术面,还是在最后的hr面,经常会被人问及,"谈谈你的职业规划"这种问题,我们回答的很可能会给我们的面试表现加分,如果回答地不好,对 ...
- 【BZOJ-3627】路径规划 分层图 + Dijkstra + spfa
3627: [JLOI2014]路径规划 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 186 Solved: 70[Submit][Status] ...
- Java职业生涯规划
java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...
- IT基础架构规划方案三(IT基础软件和系统规划)
IT基础软件和系统规划 操作系统选型规划方案 根据对某集团的实际调研,获取了企业业务应用系统的建设情况,随着企业信息化建设的推进,需要对各种信息化管理系统和应用系统的服务器选型进行选型规划,根据不同的 ...
- 职业规划:管理vs技术
"每个人都身怀天赋,但如果用会不会爬树能力来评判一只鱼,那它这辈子都会觉得自己是条蠢鱼" - 阿尔伯特.爱因斯坦 我想我为这篇博客已经准备了很长时间.但是看起了我还一直挣扎我该往哪 ...
- 万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。
引言 首先声明,不要再问LZ谁是林萧,林萧就是某著名程序员小说的主角名字. 写这篇文章的目的其实很简单,算是对之前LZ一篇文章的补充和完善. 之前LZ写过一篇<回答阿里社招面试如何准备,顺便谈谈 ...
- 运动规划 (Motion Planning): MoveIt! 与 OMPL
原创博文:转载请标明出处:http://www.cnblogs.com/zxouxuewei 最近有不少人询问有关MoveIt!与OMPL相关的话题,但是大部分问题都集中于XXX功能怎么实现,XXX错 ...
- 【转】[Algorithm]01分数规划
因为搜索关于CFRound277.5E题的题解时发现了这篇文章,很多地方都有值得借鉴的东西,因此转了过来 原文:http://www.cnblogs.com/perseawe/archive/2012 ...
随机推荐
- 一起来踩踩 Spring 中这个循环依赖的坑
1. 前言 2. 典型场景 3. 什么是依赖 4. 什么是依赖调解 5. 为什么要依赖注入 6. Spring的依赖注入模型 7. 非典型问题 参考资料 1. 前言 这两天工作遇到了一个挺有意思的Sp ...
- 办公利器!用Python快速将任意文件转为PDF
痛点: 相信大家都会遇到一种场景.老师/上司要求你把某个文件转为pdf,并且是一批(不止一个,一个的话手动就可以搞定),并且这种是枯燥无聊的工作,既没有什么技术含量又累. 试想一下,如果我把这些文件放 ...
- Pytest学习笔记6-自定义标记mark
前言 在pytest中,我们可以使用mark进行用例的自定义标记,通过不同的标记实现不同的运行策略 比如我们可以标记哪些用例是生产环境执行的,哪些用例是测试环境执行的,在运行代码的时候指定对应的mar ...
- 我成了 GitHub Star
能够成为官方认证的 GitHub Star(明星)我和你们一样十分震惊! 可能很多读者不知道这个 GitHub Star 是什么,我先来介绍下它: GitHub Stars(明星)是 GitHub 官 ...
- kubernetes的存活探针和就绪探针
1.存活探针 使用Kubernetes的一个主要好处是,可以给Kubernetes-个容器列表来由其保持容器在集群中的运行.可以通过让Kubernetes创建pod资源,为其选择一个工作节点并在该节点 ...
- jenkins 修改端口后无法启动的解决思路
一.问题 jenkins网站绑定域名后直接通过域名访问使用的是8080端口,为方便用户访问因此须监听80端口,而为了安全起见linux一般不用root身份运行,综上,需要以普通用户来运行监听80端口时 ...
- Python中任务队列-芹菜celery的使用
一.关于celery 芹菜celery是一个python实现的异步任务队列,可以用于爬虫.web后台查询.计算等等.通过任务队列,当一个任务来临时不再傻傻等待. 他的架构如下: Broker 我们的生 ...
- LAMP——实现phpMyadmin、wordpress及Discuz应用部署
一.环境准备 操作系统:Centos8.3.2011 软件:Apache2.4.37.Mysql8.0.21.PHP7.2.24 二.安装过程 1.安装phpmyadmin 1.1.安装软件包并启动服 ...
- Linux文件编辑工具——VIM
Linux文件编辑工具--VIM 1.VIM基本概述 1.1 什么是vim vi 和 vim 是 Linux 下的一个文本编辑工具.(可以理解为 windows 的记事本,或 Notepad++ 1. ...
- AcWing 201. 可见的点
在一个平面直角坐标系的第一象限内,如果一个点(x,y)与原点(0,0)的连线中没有通过其他任何点,则称该点在原点处是可见的. 编写一个程序,计算给0<x,y<=n定整数N的情况下,满足的可 ...