4.4.4 流程类测试设计:路径分析法
使用“四步测试设计法”对流程类的测试点进行测试设计,整体方法如图4-45所示。
1.通过绘制业务流程图来建模
对流程类的测试点,建模就是绘制这些测试点代表的业务流程图。在这个步骤中需要特别注意的地方是:
测试者要充分理解和测试点相关的功能业务流程,确保流程图的正确性。
测试者要和产品设计者充分交流,保证绘出的流程图能够正确覆盖产品的设计。
如果开发已经提供了该功能的流程图,测试者需要仔细审核流程图的正确性,如有必要可以重新绘制。
以“PC连接WiFi”为例,我们来对测试点1~测试点4进行测试建模。
举例:对“PC连接WiFi”中的测试点1~测试点4进行测试建模
在4.4.3节中讨论流程类测试点的特征时,我们已经分析出测试点1~测试点4为流程类,见表4-14。
接下来我们就来为测试点1~测试点4绘制相关的业务流程图,建立测试模型,如图4-46所示。
2.路径分析法
对流程类的测试点,我们把模型建立好了之后(即绘出了流程图),就会使用路径分析法来“覆盖”这个流程图,设计基础测试用例。在介绍如何做之前,我先为大家简要介绍路径分析法。
路径是指完成一个功能用户所执行的步骤,即通过程序代码的一条运行轨迹。以图4-21所示的“流程”为例,图4-47中的“P1—e1—d1—e4—d2—e7—d3—e10—P5”,就是一条“路径”。
所谓路径分析法,就是指对能够覆盖流程的各种路径进行分析,得到一个路径的集合。在测试时,我们只需要按照这个路径集合进行测试即可。
不同的覆盖策略,能够得到不同的路径集合。常见的覆盖策略有语句覆盖、分支覆盖、全覆盖和最小线性无关覆盖。
为了后续叙述问题更为方便,我们先来对组成流程的“元素”进行定义,见表4-15。
1)语句覆盖
语句覆盖是指覆盖系统中所有判定和过程的最小路径集合。
对图4-48所示的例子来说,按照上述规则,只需两条路径即可满足语句覆盖。
仔细分析语句覆盖的路径,就会发现语句覆盖的覆盖程度是比较弱的,它不会考虑流程中的“判定”以及这些“判定”“过程”之间的相互关系,如果测试只按照“语句覆盖”的方式来进行测试,就很容易出现遗漏。拿上面的例子来说,即使我们执行了语句覆盖中的所有路径,流程中所有“真假混合”的路径(如“P1—d1—P2—d2—d3—P5”)都没有执行到。
2)分支覆盖
分支覆盖是指覆盖系统中每个判定的所有分支所需的最小路径数。
对图4-48所示的例子来说,满足分支覆盖的路径集合和语句覆盖的路径集合是一样的。“路径1”覆盖的是所有“判定”结果为“真”的情况,“路径2”覆盖的是所有“判定”结果为“假”的情况。
分支覆盖考虑了流程中的“判定”,但是没有考虑这些“判定”之间的关系。分支覆盖也是一种不是很强的覆盖。
3)全覆盖
全覆盖是指100%地覆盖系统所有可能的路径的集合。
对图4-48所示的例子来说,根据排列组合算法,可以得到它的“全路径”一共有2×2×2=8条,如图4-49所示。
全覆盖包含了系统所有可能的路径,覆盖能力一流,但是除非你测试的是一个微型的系统,对普通系统来说,随着判定增加而呈指数类型增长的路径数使得需要测试的路径数目非常庞大,完全超出了一个测试团队能够承担的正常工作量,在实际中很难按此执行。
4)最小线性无关覆盖
仔细分析全覆盖,就会发现全覆盖的路径中有很多会被重复执行的路径片段,如路径3和路径6中的d1—e2—P2—e3。我们希望能有这样的一种覆盖方式,仅保证流程图中每个路径片段能够被至少执行一次,在这种覆盖策略下得到的最少路径组合,就是最小线性无关覆盖。
有三个等式可以用于计算一个流程中的最小线性无关路径的数目(《图与超图》C.Berge荷兰):
等式1:一个系统中的线性无关路径(IP)=边数(E)-节点数(N)+2
等式2:一个系统中的线性无关路径(IP)=判定数(P)+1
等式3:一个系统中的线性无关路径(IP)=区域数(R)+1
这三个等式是等效的。如图4-50所示。
图4-50 三个等效的等式
按照这些等式,可以得出这个流程中的线性无关路径数为4个:
使用等式1:10(边数)-8(节点数)+2=4
使用等式2:3(判定数)+1=4
使用等式3:3(区域数)+1=4
使用图4-51所示的算法可以帮助我们获得流程中所有线性无关路径。
按照上述算法,以图4-51所示为例,我们可以得到图4-52所示的4条线性无关
路径:
本文选自《测试架构师修炼之道:从测试工程师到测试架构师》第四章,本站经机械工业出版社和作者的授权。
版权声明:51Testing软件测试网获机械工业出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。