软件测试方案设计(完整的测试设计模型)
软件测试方案设计(完整的测试设计模型)通过模型可以更好地了解我们是如何分析被测试对象的,这样可以提高测试评审的效率。通过分析,并且在分析过程中测试分析工程师不断地与需求工程师、开发工程师交流,这样可以发现一些潜在的问题,提前预防一些缺陷的出现。MFQ 模型将测试设计分为4 个步骤,第一步是为测试对象建模;第二步是设计基础测试用例来覆盖模型;第三步是确定测试数据;第四步是非正式测试内容。详细的测试设计步骤在接下来的章节中会详细介绍。当然之所以使用模型的方法来分析测试设计,主要是因为测试模型可以帮助我们更全面地覆盖需求,MFQ 模型可以更好地帮助解决以下问题:通过建模可以更熟悉被测试对象,同时也可以让测试对象变得更清晰。
软件测试设计在早期的软件测试过程中,我们测试时对需求规格进行分析,分析之后就开始直接写用例,我们把这个过程叫测试设计。其实现在很多国内公司都还是根据需求直接写用例的,这个方法过于简单,以致于出现设计出来的用例并不能发现太多问题。这说明一个问题,我们以前的测试设计方法其实很难全面地覆盖到我们的需求,所以在本章中,我们将介绍一个专业的测试设计模型。
一、MFQ 测试设计模型概述早期的测试设计过程是直接根据测试需求或规格来设计用例,这种方法存在很多局限性,本章我们讨论的是一种新的,或者说更全面的测试设计方法。现在在很多测试更完善的企业(如华为),他们提出了新的测试设计过程:需求/规格→测试分析→测试设计→用例设计,将测试设计划分为4个阶段,然后通过模型的方法来控制测试设计的整个过程,当然事实也证明基于模型的测试对帮助提高和改进测试设计质量是有很大的帮助。通过模型可以描述系统如何工作,可以通过表格形式、流程图或其他图表来表示。
本节主要介绍华为公司在使用的一种设计模型——MFQ 模型,如图7-1 所示。
图7-1 MFQ 模型
MFQ 模型将测试设计分为4 个步骤,第一步是为测试对象建模;第二步是设计基础测试用例来覆盖模型;第三步是确定测试数据;第四步是非正式测试内容。详细的测试设计步骤在接下来的章节中会详细介绍。
当然之所以使用模型的方法来分析测试设计,主要是因为测试模型可以帮助我们更全面地覆盖需求,MFQ 模型可以更好地帮助解决以下问题:
通过建模可以更熟悉被测试对象,同时也可以让测试对象变得更清晰。
通过分析,并且在分析过程中测试分析工程师不断地与需求工程师、开发工程师交流,这样可以发现一些潜在的问题,提前预防一些缺陷的出现。
通过模型可以更好地了解我们是如何分析被测试对象的,这样可以提高测试评审的效率。
通过模型的展现,在设计用例时可以更好地去覆盖被测试对象。
二、建模MFQ 测试设计模型中,第一个步骤是建模,也是整个模型中最重要的一个步骤,建模的过程其实就是测试分析的过程。建模主要有两部分内容:一是建模的维度;二是PRDCS 建模方法。
1、建模的维度
建模是一个很重要的步骤,也是测试分析的过程,所以如果要建一个好的模型就必须对被测试对象很熟悉,通常可以从以下几个方面来收集被测试对象的信息:
需求规格说明书。
系统架构设计说明书。
系统概要设计说明书。
系统详细设计说明书。
行业知识。
对被测试对象充分了解后,就可以选择一个合适的模型来描述被测试对象。描述被测试对象的方法也有很多,常见的有等价类划分、边界值、判定表、因果图、状态迁移、场景分析法等。从MFQ 模型中可以看出,建模一般从三个维度进行:M(Mode)单个功能、F(Function)功能与功能之间的关联、Q(Quality)质量特性。
(1)M-Mode
M-Mode based single Function Test A&D 是指基于单个功能的测试设计,这个建模方法主要是针对单一功能进行建模的,如163 邮箱注册功能,如图7-2 所示。
图7-2 163 邮箱注册界面
假设我们要对邮箱地址这个文本框进行测试,这个字段的要求是:6~18 个字符,可使用字母、数字、下划线,需以字母开头。通常对于这类文本框,我们使用等价类划分的方法,那么建模的时候就需要将这些功能的有效和无效等价类写出来。
关于如何更好地针对单一功能进行建模,其通常会使用到PRDCS 的模型,7.2.2 小节中会详细介绍。这个163 邮箱注册的功能在介绍PRDCS 模型时将会详细补充。
(2)F-Function
F-Function Interaction Test A&D 是指单个功能与单个功能之间的交互关系,F-Function(功能与功能间的关联)建模通常按以下步骤进行:
第一步:列出所有要测试功能有关的遗留功能。通常功能与功能之间的关系是“交互”或“修改”。“交互”是指遗留功能和被测试功能在处理某些事时,两者之间有数据调用;“修改”是指遗留功能因为新增的被测试功能而需要进行修改。
第二步:列出与被测试功能相关的新功能。一般从两个维度来划分:一是时间关系;二是空间关系。时间关系是指两个功能之间运行时间的先后关系,如某个功能先运行另外一个功能后运行,或者说两个功能是同时运行的;空间关系是指两个功能是使用了相同资源,如内存、定时器等。
第三步:将测试功能放在第一行,将遗留功能和其他新功能放在第一列。
第四步:在交叉的单元格中将有关系的功能之间标注“×”。
单个功能与单个功能之间的交互关系见表7-1。
表7-1 功能关系模型
(3)Q-Quality
Quality 表示质量性,除了从那两个维度建模之外,还应该考虑其他质量属性的维度,质量属性维度建模的步骤如下:
第一步:选择和定义要测试的产品的相关功能质量属性,当然这个前提是需要对质量模型很熟悉。
第二步:将质量属性写在第一行,将测试的新功能写在第一列。
第三步:将功能和需要测试的质量属性所交互的单元格画上“×”。
度量属性与功能关系见表7-2。
表7-2 质量属性与功能关系
2、PRDCS 建模方法
上面介绍了M、F 和Q 三个维度的测试分析和测试设计,F 和Q 其实是相对简单的是一种表格模型,只要对系统足够熟悉就没有问题,但是M 这个维度是相对比较难的。虽然可能每次分析的测试对象不同,但测试设计的技术都是大同小异的,所以通常对M 部分的测试设计进行总结,得到一个新的模型PRDCS 模型。PRDCS 模型如图7-3 的示。
图7-3 PRDCS 模型
(1)P
P是指Process 流程,如果被测试对象的设计规范中存在与“流程”相关的特性,那么可以使用P-Process 方法来建模。
流程通常包括以下特性:
一个业务有很多个步骤完成,步骤之间有明显的顺序关系。
涉及超过一个角色或触发条件。
如购票系统就是典型的使用流程分析法进行设计的,如图7-4 所示。
(2)R
R 是指Rules,如果在测试对象设计规格中存在“参数或规格”含义的特性,那么可以使用R-Rules 来建模。
规则通常包括以下特性:
设计规格中包括很多参数。
设计规格中包含很多规则,每条规格由不同的变量和不同的值组成。
参数的数量是有限,可以较容易的识别参数间的逻辑关系。
如扫雷程序测试设计,见表7-3。
图7-4 购票流程
表7-3 扫雷测试设计
A1 表示标识问号方块;
A2 表示方块标识红旗;
A3 表示方块初始状态;
A4 表示标识数字X 且周围已标记正确了X 个雷;
A5 表示标识数字且周围没标X 个雷;
A6 表示标识数字且周围标雷错误;
B1 表示单击左键;
B2 表示单击右键;
B3 表示双击左右键。
(3)D
D 是指Data,如果在测试对象设计规格中存在“数据”的特性,那么可以使用D-Data 来建模。
数据通常包括以下特性:
每个数据有它特殊的范围值。
数据之间没有明显的逻辑关系。
不同的数据可能存在限制。
涉及的数据总数是有限的。
如注册163 邮箱时,有一个邮箱地址字段,要求是这样的:6~18 个字符,可使用字母、数字、下划线,需以字母开头。如表7-4 所示。
表7-4 注册邮箱测试设计
(4)C
C是指Combination,如果在测试对象设计规格中数据很多,每类数据还可能有多种取值,这些取值在不同的取值情况下结果可能都不一样,对于这类情况可以使用C-Combination 来建模。
组合通常包括以下特性:
参数很多或者说数据很多。
每个参数可能有很多种取值。
参数之间存在一些逻辑关系。
如以下查询的例子,见表7-5。
表7-5 查询各因子情况
根据因子设计的用例见表7-6。
表7-6 根据因子设计的用例
(5)S
S是指Status,如果在测试对象设计规格中存在“状态”特性,如从某一状态到某一状态,对于这类情况可以使用S-Status 来建模。
状态通常包括以下特性:
测试对象的行为变化基于它内部的状态。
确定的事件触发测试对象的状态。
常见的状态图如图7-5 所示。
图7-5状态图