测试架构师:3 软件测试架构师的知识能力模型(二)
测试架构师修3 软件测试架构师的知识能力模型(二)
2016-08-30
4 测试设计技术
4.1 测试点不等于测试用例
4.2 四步测试设计法
4.3 对测试点进行分类
4.4 流程类测试设计:路径分析法
4.5 参数类测试设计:“输入—输出表”分析法
4.6 数据类测试设计:等价类和边界值分析法
4.7 组合类测试设计:正交分析法
4.8 控制用例粒度:测试点的组合和拆分
4.9 错误推断法
5 探索式测试
5.1 探索式测试的基本思想:CPIE
5.2 选择合适的探索式测试方法
5.3 开展探索式测试
4.3 对测试点进行分类
1. 流程类测试点有哪些特征
流程类测试点,拥有流程方面的一些特征。具体来说,我们将测试点分成一些步骤,会因为输入的不同而进行不同的处理,全部分析完成后,能够将测试点绘成如图4-37所示的流程图。
2. 参数类测试点有哪些特征
如果测试点中主要包含的是一些参数,能够概括成和图4-38所示类似的样子(“A”表示参数,“a1”“a2”“a3”表示“A”的取值),就可以认为这个测试点是参数类的。
参数类的测试点有以下两个重要的特点:
- 第一,“参数值”的个数是有限的,可以通过遍历的方式来测试覆盖到;
- 第二,系统会对不同的“参数值”作出不同的处理或响应。
理解这两个特点,能够帮助我们区分参数类和数据类(下一节就会讲到)测试点。
3. 数据类测试点有哪些特征
如果测试点中主要包含的是一些数据,能够概括成和图4-41所示类似的样子(“A”表示参数,“amin”“amax”表示“A”的取值范围),就可以认为这个测试点是数据类的。
4. 组合类测试点有哪些特征
测试点是可以“组合”的。在测试设计时,我们可以把流程类、数据类和参数类的测试点组合在一起进行测试设计。
4.4 流程类测试设计:路径分析法
使用“四步测试设计法”对流程类的测试点进行测试设计,整体方法如图1所示。

图1 四步测试设计法
1. 通过绘制业务流程图来建模
对流程类的测试点,建模就是绘制这些测试点代表的业务流程图。在这个步骤中需要特别注意的地方是:
- 测试者要充分理解和测试点相关的功能业务流程,确保流程图的正确性。
- 测试者要和产品设计者充分交流,保证绘出的流程图能够正确覆盖产品的设计。
- 如果开发已经提供了该功能的流程图,测试者需要仔细审核流程图的正确性,如有必要可以重新绘制。
举例:对“PC连接WiFi”中的测试点1~测试点4进行测试建模
表1 对测试点1~测试点4的分析

接下来我们就来为测试点1~测试点4绘制相关的业务流程图,建立测试模型,如图2所示。

图2 测试点1~测试点4相关的业务流程图
2. 使用路径分析法来设计基础测试用例
路径测试法见白盒测试的路径测试是一样的,上面的流程图有两个出口,若把上面的流程图转化为流图最后应该汇聚成一个出口,那么应该有4个封闭环分隔成5个区域,对应5条独立路径。也可以从4个判定节点得知有5条路径。
表2 基础测试用例

4.5 参数类测试设计:“输入—输出表”分析法

图3 对参数类的测试点进行四步测试设计
输入—输出表”特别适合测试点的多个参数之间存在相互关系,需要对这些参数进行“组合”分析的情况。我们可以对参数按照“正交”的方式来进行组合,然后逐一对每一种组合,按照“约束条件”进行分析,去掉重复的情况。
4.6 数据类测试设计:等价类和边界值分析法

图4 对数据类测试点进行四步测试设计
4.7 组合类测试设计:正交分析法

图5 对组合类的测试点进行四步测试设计
1. 使用“因子表”来建模
“因子表”是一张分析测试点需要考虑哪些方面,并且这些方面需要包含哪些内容的表
接下来我们以“PC连接WiFi”的测试点1~测试点5为例。由于因子2和因子3存在“约束关系”,只有在因子2选择为“加密”的情况下,因子3才有效,我们为此建立两个因子表:
(1)“因子2”为“加密”情况下的因子表(表3)。

(2)“因子2”为“不加密”情况下的因子表(表4)。

2.使用“PICT工具”来生成测试用例
4.8 控制用例粒度:测试点的组合和拆分
软件测试架构师在测试设计中除了为整个团队在测试设计的方法上提供指导外,还有一项十分重要的工作,就是控制用例粒度。
1.控制用例粒度
用例粒度是对测试用例是精细还是笼统地描述测试点的通俗说法。测试用例越聚焦到一个功能点上,这个功能点越小越细,用例粒度就越细;反之,如果一个测试用例包含了比较多的功能点,这个测试用例的用例粒度就会比较粗。
一般说来:
- 用例粒度细的测试用例,更容易发现产品在设计上的问题,但是用例粒度都很细,那么测试用例就会比较多。
- 用例粒度粗的测试用例,更容易发现产品在系统上、设计上、功能交互上和需求方面的问题,若用例粒度都很粗,虽然用例的数目可能会少很多,但有可能漏掉很多功能设计上的细节问题。
控制用例粒度,意味着我们要做以下两件事:
第一,我们希望整个团队的测试用例的总数维持在一个比较合理的范围内,同时很好地达到测试验证产品的效果,这就需要我们控制测试用例的源头——测试点:让测试点不要过粗或者过细。如果测试点过粗或过细,我们就要去拆分或者组合它,保证设计出来的测试用例粒度比较统一。
这时我们使用四步测试设计法的优势就淋漓尽致地展现出来了:对这些拆分或组合后的测试点,我们还可以找到适合的测试点类型,还能够找到合适的测试设计方法,如图6所示。

图6 四步测试设计法优势
第二,不同的用例粒度,可能会发现产品不同层次的问题所以我们需要在不同的测试阶段,对测试点进行一些拆分或组合,


2.策略覆盖
还有一种控制测试用例粒度的方法,就是策略覆盖。
在测试设计时,我们经常会遇到这样的情况:
- 有些因子,如操作系统、平台等,除了那些可以分析到的对系统有影响的地方之外,对系统的其他功能可能没有影响、影响很弱或者影响未知,没有必要使用Pairwise来进行正交。
- 有些数据类的测试点,比如就是测试一个名称,测试点比较细,但是它和其他的测试点可能没有关系或者关系很弱,也没有必要使用Pairwise来做正交。
这时我们就可以考虑使用策略覆盖的方式,将这些因子或数据的取值,分配到其他测试用例中,作为其他测试用例的测试数据输入或者是测试条件(或预置条件)。
4.9 错误推断法
错误推断法是测试者根据经验来判断产品在哪些地方容易出现问题,然后针对这些地方来设计测试用例的方法。
使用错误推断法来设计测试用例优缺点:
- 优点:是测试用例的有效性会比较高
- 缺点:也是显而易见的:这时测试专注于发现缺陷,可能会测试得很严苛,却忽视或遗漏掉对一些基本功能和场景的测试验
错误推断法中的经验,主要源于对产品缺陷的分析,具体方法如图7所示:

图7 错误推断法
5 探索式测试
探索式测试(exploratory testing)最早由测试专家Cem Kanner博士在1983年提出,是一种强调测试人员同时开展测试学习、测试设计、测试执行,并根据测试结果反馈及时优化的测试方法。
对软件测试架构师来说,在探索式测试中需要关注两个问题
- 什么情况下需要开展探索式测试?
- 如何选择合适的探索式测试方法?
5.1 探索式测试的基本思想:CPIE

图8探索式测试的基本思想
- 收集(Collection):收集所有关于测试对象的信息并去理解这些信息。
- 划分优先级(Prioritization):对所有需要测试的任务进行优先级的划分。
- 分析调研(Investigation):对测试的任务进行仔细分析,预测可能输出的结果。
- 实验(Experimentation):进行测试实验,确认测试结果和预期是否符合。分析是否需要修改测试策略和方法。如有需要,进入“收集”阶段。
CPIE模型很好地总结了探索式测试的基本思想。和传统式测试相比,探索式测试弱化了流程,强调实践,边学边测,持续改进。
探索式测试优缺点:
- 优点:能够更快地进行测试,能够得到更有效的测试点,能够更高效地发现产品缺陷。
- 缺点:探索式测试也有一定的局限性:容易将焦点集中在缺陷发现上而偏离对需求的验证,对基本测试点的测试和覆盖容易不足,测试点不易复用,不易积累。
此外,探索式测试对人的要求很高,包括测试者的思维能力,分析能力,总结能力,持续改进、追求卓越的意愿,等等。
5.2 选择合适的探索式测试方法
第一步:对产品的特性进行“分区”。

图9 相互重叠的情况
第二步:根据不同的分区来选择适合这个分区的探索式测试方法。
5.3 开展探索式测试

图10 探索式测试
1.确定探索式测试任务
首先,我们需要确定任务的范围。以下3种思路,可以帮助我们来确定这个测试任务的范围:
- 思路1:进行全局场景探索。
- 思路2:进行特性漫游探索。
- 思路3:进行局部功能点探索。
所谓全局场景探索,就是指准备进行探索的对象是整个系统;特性漫游探索是指准备进行探索的对象是整个特性;而局部功能点探索是指准备进行探索的对象是某个具体的功能。

图11 3种探索关系
2.设计探索地图并执行探索式测试
探索地图就是测试者根据被测对象的特点,使用探索式测试方法分析得到的测试点,然后就可以按照测试点对被测对象进行探索式测试,并记录测试结果。如图12所示:

图12 探索地图
前面,我们特别指出 4.1 测试点不等于测试用例,为什么在探索式测试的时候我们又可以用测试点来进行产品测试呢?
这是因为,探索式测试是一边学习、一边设计、一边执行的测试,很多测试点都是我们边测试边确定的,确定后就会立即去执行验证,我们的测试目标是清晰的,即使测试点写得比较粗,也是知道该怎么去测试的;另外,在探索式测试的执行中,我们知道现在测试的是什么,接下来应该测试什么,也能保证我们以一个比较合理的顺序执行。所以,使用探索式测试是能够直接用“测试点”来进行产品测试的,这也是“探索式测试”速度快、效果高的优势所在。
探索式测试还有个优势就是能够根据测试结果及时调整测试点,更有效地发现产品缺陷。
为了避免测试者陷入无休止的探索中,每个探索任务都需要确定一个完成时间,比如1小时、2小时,时间到了就需要停止测试,并以此来制订探索式测试计划。
3.探索式测试总结
探索式测试者每执行完一个任务,都需要围绕如何有效地发现产品缺陷,立即进行总结:
- 总结使用哪些方法能够更有效发现产品的问题。
- 总结本次探索式测试中的教训。
探索式测试完成后,团队中的探索式测试者可以坐在一起分享本次探索式测试中的总结、案例等。然后大家再将这些经验、教训运用到下一次探索式测试中。

浙公网安备 33010602011771号