today0 2017-06-15
导读
导读:软件测试的核心是什么?是测试用例设计?自动化测试?测试流程?测试方法?还是测试工具? 作者认为测试的核心是“测试策略”。本案例将阐述如何在“当前状态下,找到最适合产品(被测对象)的测试技术”,用测试策略进行刚刚好的测试。
本案例包含一套方法,一个模型和两张checklist。
(全文共5696字 预计阅读时长:6分钟)
测试的“核心”的是“测试策略”
软件测试的核心是什么?是测试用例设计?自动化测试?测试流程?测试方法?还是测试工具?我觉得这些都不是。测试用例、自动化、测试流程、测试方法、测试工具,每一项对测试来说都很重要,却不是测试的核心。
我认为测试的核心是“测试策略”。
什么是“测试策略”?“测试策略”简单来说就是六个字——“测什么”和“怎么测”。再具体一点来说,“测试策略”就是要在产品测试中答好下面六大问题:
测试的对象和范围是什么?
测试目标是什么?
测试的重点和难点是什么?
测试的深度和广度?
如何安排各种测试活动?(先测试什么,再测试什么)
如何评价测试的效果?
为什么说“测试策略”是测试的核心呢?
我们前面提到的测试用例、自动化、测试流程、测试方法、测试工具,都可以称为“测试技术”。一千个测试团队,就会有一千种测试技术。测试技术有好坏之分,也会对产品测试带来的深远的影响,但是是不是只要我们用了最好的、最完美的测试技术,就能把产品测试做好了呢?答案是否定的。
对测试来说,“做好产品测试”意味着需要在“当前状态下,找到最适合产品(被测对象)的测试技术”,能够准确的围绕目标去测试,能够正确的分析产品测试的重点和难点,能够有效的解决测试难点,保证测试重点,知道先做什么、再做什么,现在必须要做什么,可以不做什么,并且知道现在产品的质量究竟如何,是否达到了测试的目标,如果没有达到目标,下一步还需要再做些什么事情。
换句话说,我们要有在产品测试中,可以整体的思考如何运用各种技术的能力,而不是孤立的、机械的去对待它们。这样即使我们团队不够完美,技术不够完美,产品不够完美,也能找到一个最适合、刚刚好的的方式来完成测试。所以,我认为,“测试策略”才是测试最需要修炼的“核心”。
四步测试策略制定法
我们该如何对被测系统进行系统的分析,来制定测试策略呢?通过一些项目实践,我最后将制定测试策略总结成了四个步骤,所以我也称这套测试策略制定法为“四步测试策略制定法”。
四步测试策略制定法如图1所示:
图1 四步测试策略制定法
step1. 明确“产品质量目标”
明确产品质量目标是我们在确定测试策略中最重要的一个步骤。这是因为,我们希望 “产品在发布的时候,能够满足的是当前发布(交付)时的的质量目标”。此时的产品质量不一定是最好的、零缺陷的,但是却能符合当前的产品商业战略,能够满足当前用户的使用需求。
很多朋友可能会说,我们在产品测试中不就是这样做的么?我们不妨先来做一个小测试,看看下面这些情况有没有遇到过:
这是一个新开发的功能,大家都不熟悉,重点测试。
这个功能感觉没有什么用,随便测试一下就好了吧。
这个功能涉及的技术比较新,可以作为重点测试。
这个功能有意思,可以多测试一下。
所有功能用户都可能会用,都很重要,都要全面测试。
怎么样,是不是感到上面这些情况多多少少有些“似曾相识”?事实上,我发现很多测试其实对自己负责的功能在发布时的质量要求是怎样的并不了解,心里并没有数,和产品规划时的商业目标往往相差很远。
理想的测试状态,最基本的一条就是要 “围绕产品的质量目标来进行测试”:
将产品质量要求、功能特性作为测试重点,加大测试投入,测试得深入细致。
减少非重点测试的投入。
在测试中做到有深有浅、重点详略得当,有理有据,不要试图将每个地方都事无巨细测得深入周到,不要忘了,“刚刚好”才是我们真正需要追求的测试状态。
在项目实际操作中,我们该如何对产品进行质量评估呢?除了了解产品当前的商业目标,多和产品团队的其他角色对齐思路之外,我还总结了一个“软件产品质量评估模型”,来帮助我们来把比较大的商业目标拆解为测试可以跟踪和执行的测试目标,确定测试活动,评估测试效果。
软件产品质量评估模型如下图2所示。
图2 软件产品质量评估模型
下面我们解释质量评估模型的内容叙述,如表1所示:
表1 质量评估模型
在项目的开始,我们可以使用“产品质量评估模型”来制定目标,确定测试策略。然后在项目过程中,我们跟踪测试执行过程,根据“产品质量评估模型”来判断当前的测试状况是否和测试策略吻合。在项目结束,我们根据“产品质量评估模型”来评估产品是否可以正确发布。这样,通过质量评估模型,我们将“目标”(“产品质量目标”)、“行为”(“测试活动”)和“评估”(“质量评估”)形成了一个又一个环。这时“测试策略”就好像一艘船上的“舵”,使得整个项目都在既定的质量目标这条航线上前进,如图3所示。
图3 目标、行为、评估行程一个环状
step2. 进行“风险分析”
四步测试策略法第二步是进行风险分析。为什么我们在制定测试策略的时候,还需要考虑风险因素呢?原因主要为如下两点:
识别项目中可能会阻塞测试顺利进行的风险,然后才能基于这些风险点来调整测试策略,保证测试的顺利进行。
我们可以基于风险,来加强或降低测试的投入。
为了让大家可以更全面的评估风险,我特别总结了两份checklist。风险分析checklist用于对项目整体的风险识别。老功能分析checklist用于对那些不是新开发的功能进行风险识别。
风险分析checklist(表2)
表2 风险分析checklist(需求)
老功能分析checklist
老功能分析checklist又包含了新老功能差异性分析表(表3),历史测试情况分析表(表4)和历史陷分析表(表5)。
表3 新老功能差异性分析表
表4 历史测试情况分析表
表5 历史缺陷分析表
step3. 适配“产品研发流程”
四步测试策略制定法的第三步,是适配产品研发流程。
为什么测试策略还需要去适配产品研发流程呢?这是因为,我们一般会在项目一开始就会着手制定测试策略,但这时项目的信息可能并不充分,此外在项目中也可能会有很多变化。我们让测试策略去适配产品的研发流程,就可以整体考虑在哪些时间点需要考虑测试策略,每个阶段的测试策略需要定到哪种深度。我们也可以理解为,通过适配研发流程,我们确定了测试策略的结构。例如,图4这种传统研发流程下,测试策略被分为了总体测试策略、阶段测试策略和测试执行策略三部分。
图4 测试策略适配“产品研发流程”
在总体测试策略部分,我们可以对产品总体进行质量目标,风险分析,确定后续各个活动的深度广度,确定测试的优先级,整体框架。在阶段测试策略中,我们可以重点对用例设计,每个测试阶段的出入口准则等进行分析和确定。在测试执行策略中,我们就可以将注意力放在每个版本上,对每个版本的测试情况进行分析确认。
不要觉得为测试策略划分结构是一件可有可无的事情。有了这样的结构,我们能够将测试策略 确定在“当下”,避免我们纠结于项目当前还不确定的“未来”。除此之外,测试策略也变得可以贯穿测试,甚至整个研发的始终,使得测试策略能够落地。
step4. 进行“测试分层”
四步测试策略制定法的最后一步就是进行“测试分层”。
所谓“测试分层”是指“将有共同测试目的的测试活动放在一起形成一个组,然后一组一组的逐一进行测试”。用白话的方式来表达,就是确定在测试中先做什么,再做什么
除此之外,“测试分层”还有一个重要的价值,就是通过测试分层,我们能够将一个大的测试目标,分解到不同层次中分阶段去完成。合理的测试分层,能够让测试目标SMART化。能够让我们将“目标”(“产品质量目标”)-“行为”(“测试活动”)和“评估”(“质量评估”)的闭环,真正在产品测试中落地。
在项目中使用四步测试策略制定法
接下来我们会举一个例子,为大家展示如何在项目中使用四步测试策略制定法,来确定测试策略。(这里主要是指总体测试策略)
● 3.1 准备
所谓“巧妇难为无米之炊”。在正式制定测试策略之前,收集当前产品的信息是必须要做的功课,包括但不限于:
项目的范围(即产品概念已经到位,产品需求大致到位)。
项目计划的人力投入。
产品的历史情况。
● 3.2 使用四步测试策略:第一步
根据四步测试策略制定法,第一步,我们先来确定产品的质量目标。具体操作方法为:
3.2.1 确定产品质量等级
接下来我们可以和产品的前端人员(如市场)、赞助者等进行沟通,对齐当前产品的商业目标。一个比较有效的方法是,我们可以从用户使用的角度对产品质量做一下分级。下面是我常用的一个质量分级的例子:
第1级 完全商用:特性完全满足用户的需求,有少量(或者无)遗留问题,用户使用时无任何限制。
第2级 受限商用:特性无法满足用户的某些特定场景,有普通以上的遗留问题,但有规避措施。
第3级 测试、演示或小范围试用:特性只能满足用户部分需求,有严重以上的遗留问题,且无有效的规避措施,问题一但出现就会影响用户的使用,只能用于测试(例如Beta)或演示,或者小范围试用。
第4级 不能使用:特性无法满足用户需求,存在严重以上的遗留问题,会导致用户基本功能失效,且无规避措施,产品根本无法使用。
确定产品质量等级的重点是项目中不同的角色需要对分级的标准达成一致。这也是后面的活动可以顺利开展的基础。
3.2.2 确定各个特性的质量等级
接下来团队就可以坐在一起,按照刚刚确定的质量等级,来对本版本中所有特性,确定一个期望的质量目标了。示意的操作方法如表6所示:
表6 特性与质量目标等级
图5是一个实际的例子:
图5 确定各个特性质量等级
3.2.3 为不同的质量等级确定不同的质量目标
在这个步骤中,我们要用到我们的“产品质量评估模型”了。
在前面介绍“产品质量评估模型”的时候,我们就已经知道模型本身就是由一些评估项目构成,只不过有些评估项目是指标,而有些评估项目是一些分析项。
现在可以根据不同的质量等级,来为这些评估项确定不同的质量目标。我们以那些定量的指标项为例,如表7所示:
表7 定量指标为例评估确定不同的质量目标
那些需要定性的分析的项目,也可以按照类似的方法来对不同的质量分级确定不同的质量目标,或者是一些需要做的活动。
然后我们再考虑测试分层,可以得到每个测试阶段需要达到的小目标,如表8所示。
表8 每个测试阶段需要达到的小目标
然后我们再将目标和特性结合起来,就可以得到一个“特性-质量”的关系表,如下表所示(为了避免表格过于复杂,我们可以把细化的质量目标作为超链接,表9带下划线的文字部分)。这也是我们通过四步测试策略制定法的第一步后,得到的初步测试策略。
表9 特性-质量 关系表
● 3.3. 使用四步测试策略:第二步
根据四步测试策略制定法,接下来我们需要进行风险分析。
3.3.1 对项目整体进行风险分析
我们可以按照《风险评估checklist》来对项目整体进行一次风险识别。一般来说,我们会根据风险识别的结果,来增加一些“质量保证活动”,如表10所示:
表10 特性-质量保证活动计划表
3.3.2 对老功能进行分析
对那种不是全新开发的产品,还需要我们继续对老功能进行分析。具体分析方法可以参考前面章节中介绍的方法。
进行老功能分析后,我们一般可以对老功能分析的结果来对特性再进行分类。表11是一个特性分类的例子,供大家参考:
表11 分类确定测试策略
我们在第一步中得到的初步的测试策略中,加入计划的质量保证活动和分类,这样我们又得到了通过四步测试策略制定法的第二步后,稍微详细一点的测试策略。显然,我们才走了一半,好戏还在后面。(表12)
表12 第二步后的测试策略
3.3.4. 基于质量目标和风险来确定测试的优先级
到目前为止,我们已经完成了四步测试策略制定法中的两个步骤了。我们可以简单的“回顾”一下,再根据刚刚得到的质量目标和风险信息来确定测试的优先级,进而确定测试的深度和广度。
我们确定优先级的基本原则是:
“质量等级”越高,优先级越高。
同等“质量等级”中,“全新特性”比“老特性”的优先级高;改动越多的老特性,优先级越高。
操作上,我们可以使用“评分表”的方法来确定优先级。
我们对“质量目标”(表13)和“分类”(表14)分别设置一个分值,例如:
表13 质量目标优先级
表14 分类优先级
再准备一张优先级的分数范围表,见表15。
表15 优先级分数范围表
最后我们只需要计算每个特性的“质量等级”+“分类”分值和,就能得到特性的测试的优先级。
确定好了每个特性的优先级后,我们就可以根据优先级来确定测试的深度和广度了。
我们把优先级和测试深度、广度加入到前面的测试策略表中,如表16所示:
表16 “特性-质量等级”表中添加优先级
● 3.4 使用四步测试策略法:第三步
按照“四步测试策略制定法”,接下来我们将围绕“产品开发流程”来进行分析,“确定测试策略的结构,明确测试策略要分几次输出,何时输出,每次输出的关注点是什么”
以“总分式”的测试策略结构为例,各类测试策略之间的关系如图6:
图6 各类测试策略之间的关系
总体测试策略:确定产品质量目标,进行项目整体的风险识别,从产品层面来确定测试重点和测试难点、测试深度和测试广度,是测试策略的总纲。
阶段测试测试策略:确定“测试设计策略”和“测试执行策略”,需要达到的质量目标(产品质量目标的分解)和能够进行这些测试活动的入口条件。
测试执行策略:确定每个版本的测试目标、测试内容和每个版本的入口条件。
● 3.5 使用四步测试策略法:第四步
按照“四步测试策略制定法”,最后我们要通过“测试分层”,来对测试活动进行划分,安排测试活动最典型的测试分层是“单元测试”、“集成测试”、“系统测试”和“验收测试”。我们就以这个测试分层为例,再把“研发流程”、“测试分层”和“测试策略的结构”放入一张图上,这就构成了我们测试的总体框架,如图7所示。
图7 测试的总体框架
在这种图中,“策略层”就像是人的“大脑”,负责指挥测试该如何进行,确保测试做的是正确的事情; “活动层”就像是人的“身体”,负责具体的执行;“保证层”就像是人的“五官”,保证“身体”能够顺利的执行任务。
● 3.6 使用四步测试策略法总结
至此我们已经使用了一遍四步测试策略制定法来确定了产品的测试策略(准确的说是总体测试策略)。
有时,由于各种原因,我们可能需要重复进行几遍本方法,才可以完整的得出产品测试策略。其实我觉得多使用几次这套方法挺好的——在项目中多进行几次风险识别也是挺好的。
最后我们不妨来总结一下总体测试策略表现出来是什么样子的——它包含一张表和一个测试全局图。
表17也可以作为总体测试策略的参考模板:
表17 总体测试策略的模板
效果评价和总结回顾
本案例包含一套方法,一个模型和两张checklist。
通过使用本案例提供的“四步测试策略制定法”,辅以“软件产品质量模型”和“风险分析checklist”,测试者可以:
把产品目标分解为测试可以跟踪可以执行的测试目标,可以紧密的围绕质量来进行测试。
充分考虑了风险因素,确定的测试优先级更有说服力。
便于测试者确定测试深度和广度,测试重点和难点。
知道要先测什么,再测什么。
确定了测试的总体框架。
学会了如何使用测试策略来统领测试,进行“刚刚好”的测试。
★★征稿★★
寻找100个年度最具价值的实践案例
我们只要案例干货,拒绝广告
成为特约作者,你将:
◆ 连接100名年度经验与增长值TOP100的研发精英
◆ 提前入围「壹佰案例」年度最优案例榜单
◆ 案例整理成册,出版发行图书
◆ 成为msup客座教练
◆ 以观察员身份受邀出席TOP100全球软件案例研究峰会
◆ 所在公司享有msup活动优惠
有意者请留言。