软件测试考试期末复习(二) 白盒测试

2、白盒测试

静态白盒测试

是指进行代码检查与走查。

代码检查:是一系列规程和错误检查技术的集合,是以组为单位来阅读代码的人工测试方式。
代码走查:代码走查是开发人员与架构师集中讨论代码的过程。
桌面检查:桌面检查是一种比较古老的人工查找错误的方法,可以理解为代码编写人员对照错误列表来对程序进行推演测试数据的过程。此过程一般由单人完成。

动态白盒测试

逻辑覆盖法和基本路径法两部分内容,这是动态白盒测试的测试用例设计的两种方法

1、逻辑覆盖法

1、语句覆盖

语句覆盖是相对较弱的测试标准。语句覆盖的定义是:测试时,首先设计若干测试用例(越少越好),然后运行被测程序,使程序中的每一个可执行语句至少执行一次。

优点:可通过源码观察直观地得到测试用例,无须细分每个判定表达式。
缺点:只对程序逻辑中的可执行语句的显式错误起作用,隐藏在程序中的其他错误无法准确测试。

2、 判定覆盖

判定覆盖(分支覆盖)是比语句覆盖稍强的覆盖标准。判定覆盖是设计若干测试用例,运行被测程序,使程序中每个判断的真假分支至少运行一次

优点:判定覆盖所测试的路径比语句覆盖多一倍,因此具有比语句覆盖更强的测试能力,而且判定覆盖与语句覆盖一样简单,无须细分每个判定即可得到测试用例。
缺点:一般程序中的判断语句是由多个逻辑条件组合而成,因此仅仅判断其最终结果,而忽略每个条件的各种取值情况,必定会导致部分测试路径遗漏。

3、条件覆盖

条件覆盖是指设计若干个测试用例,使这些测试用例运行时,被测试程序中的条件语句所有可能结果至少出现一次,即每个条件都满足至少一次。

优点:一般而言条件覆盖比判定覆盖要强,因为条件覆盖使判定条件中每个条件都取到了不同的结果,而判定覆盖无法保证这一点。
缺点:条件覆盖只能保证每个条件都取到不同的结果,但无法保证每种判定结果都满足。

4、判定/条件覆盖

判定/条件覆盖是指使判断中每个条件的所有可能取值至少执行一次(条件覆盖),与此同时还保证每个判断本身所有结果也至少执行一次(判定覆盖)

优点:判定/条件覆盖比前面讲解的逻辑覆盖更严格,更严谨,并且弥补了判定覆盖和条件 覆盖各自的缺陷。
缺点:当程序中还有多个判断结构时,容易出现不同的条件组合导致不同的结果,但判定/条件覆盖并未考虑这种条件组合的情况。

5、条件组合覆盖

条件组合覆盖又称组合覆盖,是指每个判断语句中的各个条件的各种可能组合都至少执行一次,因此条件组合覆盖的测试用例可满足判定覆盖、条件覆盖以及判定/条件覆盖

优点:条件组合覆盖可以同时满足判定覆盖、条件覆盖、判定/条件覆盖,可弥补三者的不足,从而对程序做更严格的测试,覆盖率更高。
缺点:条件组合需要考虑程序中所有的判断结构,并将判断结构中的各条件的所有可能组合都至少执行一次,因此设计的 测试用例数量较多,执行所花费的时间也会更长。

6、路径覆盖

路径覆盖是考虑所有可能执行的路径,路径覆盖是程序可执行路径的全覆盖,是以上 6 种逻辑覆盖测试用例设计方法中覆盖率最高的,但它也有缺点。

优点:路径覆盖是 6 种逻辑覆盖方法中 覆盖率最高的白盒测试用例设计方法。
缺点:当需要考虑程序中所有可能执行的路径,尤其是判断结果比较多时,测试用例的设计量就会很大,测试用例的编写就会比其他方法耗时更多,整个测试过程也会被拉长。

2、基本路径法

基本路径法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径的集合,然后根据可执行路径进行测试用例设计的方法。此方法设计出的测试用例需保证被测程序的每个可执行语句至少执行一次。

基本路径法包括以下4个步骤:

1、 画程序控制流图

程序控制流图是描述程序控制流的一种图示方法。

计算环形复杂度需要画出程序的控制流图。控制流图中只有两种图形符号。
:控制流图中的圆被称为流图的结点,表示一个或多个无分支的语句或源程序语句。
箭头:控制流图中的箭头被称为边或连接,代表控制流。
在基本路径测试法中,任何过程设计都要被翻译成控制流图。不同的结构对应不同的控制流图,如图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mcGaSIhM-1620530063584)(软件测试基础.assets/image-20210509095517183.png)]

在将程序的流程图转换为控制流图时,需要注意以下几点:

  • 选择或分支结构的分支汇聚处又一个汇聚结点。
  • 边和结点圈定的范围叫做区域。在计算区域数时,图形外的区域也应记为一个区域。
  • 若判断结构的表达式包含一个或多个逻辑运算符(OR、AND、NAND、NOR)连接的复合条件表达式,则需要修改为一系列只有单条件的嵌套判断

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-99iaB6BE-1620530063586)(软件测试基础.assets/image-20210509095703752.png)]

2、 计算程序环形复杂度

McCabe 复杂性度量。从程序的环形复杂度可导出程序基本路径集中的独立路径条数,这是确保程序中每个可执行语句至少执行一次的测试用例数目的上界

环形复杂度有 3 种计算方法。
控制流图中的区域数等于环形复杂度。
环形复杂度 V(G)=E-N+2, E为控制流图中的边数,N为控制流图中的结点数。
环形复杂度 V(G)=P+1, P为数据流图中的判定结点数。
因此,例基本路径法的例子的环形复杂度计算如下:

例子的区域数为 4
V (G)=11-9+2=4
V (G)=3+1=4

3、 导出测试用例

根据环形复杂度和程序结构来设计测试用例数据输入和预期结果。

根据环形复杂度的计算可得出基本路径法的 例子的 4 条独立路径(一条独立路径是和其他独立路径相比至少引入了一个新处理语句或一个新判断的程序通路)。
路径1:1→4→7→结束语句
路径2:1→4→8→9→11→结束语句
路径3:1→4→8→9→10→结束语句
路径4:1→4→8→13→结束语句
接下来根据上述独立路径来设计测试用例,并根据测试用例来输入数据,使程序分别执行上述的 4 条独立路径。

4、 准备测试用例

确保基本路径集中的每一条路径的执行。

根据基本路径法的例子中的判断结点给出的条件,选择合适的数据来确保上述 4 条路径均得到执行。 满足该例子的基本路径集的测试用例如下表所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HB8oZJUu-1620530063588)(软件测试基础.assets/image-20210509100124815.png)]

猜你喜欢

转载自blog.csdn.net/weixin_46195957/article/details/116562354