需要特别指出的是,我们要想通过图论中的“三个等式”和“算法”来确定流程中的最小线性无关路径,流程需要遵循如下约定。
约定1:“流程图”的“入口”和“出口”不作为边数计算,如图4-53所示。
约定2:一个“流程图”只有一个“入口点”和一个“出口点”。
有“两个输入”(图4-54);
有“两个输出”(图4-55);
它们都不符合“约定2”。
不符合“约定2”,可能会使得图论中的三个等式失效。以图4-55所示(存在“两个输出”)为例。
使用等式1:7(边数)-7(节点数)+2=2
使用等式2:2(判定数)+1=3
使用等式3:1(区域数)+1=2
这样“等式2”和“等式1”“等式3”不再等价,因此我们也可以通过这样的方法,来判断当前的流程图是否符合要求。但是我们也不能说只要这三个等式是等价的,流程图就没有问题。我们来分析一下如图4-54所示的流程图,它的三个等式依然是等价的:
使用等式1:10(边数)-8(节点数)+2=4
使用等式2:3(判定数)+1=4
使用等式3:3(区域数)+1=4
如果我们对产品的业务功能建模后,绘出的流程图确实存在“多个输入”,或者“多个输出”,在对其进行最小线性无关覆盖分析之前,我们先要对这个流程图进行分解,使其满足“约定2”。这时系统中最小线性无关路径的总数,等于被分解的每个流程中最小线性无关路径的总和:
式中 TIP——系统中最小线性无关路径的总和;
IPn——每个流程的最小线性无关路径的总和;
n——系统被分解后包含的流程的个数。
以图4-5所示的流程图为例,我们可以将其拆分为如图4-56所示两个流程图,保证分解后的流程图只有“一个输入”和“一个输出”。
然后再分别对这两个流程图进行最小线性无关路径分析。
对“流程1”,包含的最小线性无关路径数为2:
使用等式1:6(边数)-6(节点数)+2=2
使用等式2:1(判定数)+1=2
使用等式3:1(区域数)+1=2
对“流程2”,包含的最小线性无关路径数为3:
使用等式1:6(边数)-5(节点数)+2=3
使用等式2:2(判定数)+1=3
使用等式3:2(区域数)+1=3
整个系统包含的最小线性无关路径的总数为2+3=5个(而不是之前我们得到的4个)。
需要特别指出的是,对流程1,等式2中的判定数为什么是1,而不是2呢?
让我们来回忆一下本节的开头对“判定”的定义:有一条或多条入边和有两条出边的分支节点。有两条出边是判定的必要条件。而流程1中的d2,因为拆分的原因,只有一个出边,所以在流程1中,d2不是判定。在流程1中,符合判定条件的只有d1。
3. 使用路径分析法来设计基础测试用例
模型,在这里就是流程图绘制好了之后,接下来我们就使用路径分析法来覆盖这个模型,设计基础测试用例。
上一节我们介绍了路径分析法中的四种覆盖方法,包括语句覆盖、分支覆盖、全覆盖和最小线性无关覆盖。我们可以根据被测对象的优先级、测试阶段来选择合适的覆盖策略。一般来说,在单元测试阶段,我们会主要使用语句覆盖或分支覆盖的方式来设计测试用例;在集成测试和系统测试阶段,我们会主要使用最小线性无关覆盖;而对其中一些特别重要的部分,使用全覆盖;对一些不那么重要的部分,使用语句覆盖或分支覆盖。
接下来我们继续以“PC连接WiFi”中的测试点1~测试点4为例,使用最小线性无关覆盖的方式来设计基础测试用例。
举例:对“PC连接WiFi”功能测试中测试点1~测试点4使用最小线性无关覆盖的方式来设计基础测试用例
在上一节中,我们已经对测试点1~测试点4绘制了业务流程图,如图4-57所示。
这个流程图有“两个输出”,按照上一节的描述,我们需要将这个流程图拆成两个“子流程图”,保证每个“子流程图”均只有“一个输入”和“一个输出”。
子流程1如图4-58所示。
对该“子流程”进行分析,它所包含的:
“边”数:9;
“节点”数:8;
“判定”数:2(注意,“备选WiFi是否可用”和“连接成功?”这两个“判定”,在“子流程1”中只有“一个输出”,不属于“判定”);
“区域”数: 2。
该子流程包含的最小线性无关路径数为3。
使用最小线性无关覆盖中介绍的算法,得到该系统中的最小线性无关路径的集合,见表4-16。
子流程2如图4-59所示。
对该“子流程”进行分析,它所包含的:
“边”数:7;
“节点”数:7;
“判定”数:1 (注意,“首选WiFi是否可用”“是否加密”和“连接成功?”这三个“判定”,在“子流程2”中均只有“一个输出”,不属于“判定”);
“区域”数:1。
该子流程包含的最小线性无关路径数为2。
使用最小线性无关覆盖中介绍的算法,得到该系统中的最小线性无关路径的集合,见表4-17。
综上,整个流程中包含的最小线性无关路径数目为3+2=5条,集合见表4-18。
本文选自《测试架构师修炼之道:从测试工程师到测试架构师》第四章,本站经机械工业出版社和作者的授权。
版权声明:51Testing软件测试网获机械工业出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。