白盒测试

举报
Jet Ding 发表于 2020/09/29 10:40:02 2020/09/29
【摘要】 白盒测试(也称为透明盒测试、开盒测试、玻璃盒测试、透明盒测试、基于代码的测试或结构测试)是一种软件测试方法,其中被测试项目的内部结构/设计/实现是测试者已知的。测试者选择输入到代码中的运行路径,并确定适当的输出。

1      引言

白盒测试(也称为透明盒测试、开盒测试、玻璃盒测试、透明盒测试、基于代码的测试或结构测试)是一种软件测试方法,其中被测试项目的内部结构/设计/实现是测试者已知的。测试者选择输入到代码中的运行路径,并确定适当的输出。

在这个过程中,编程知识和实现知识是必不可少的。

 

白盒测试是超越用户界面的测试,深入到系统的细枝末节。

 

这种方法之所以如此命名,是因为在测试者的眼中,软件程序就像一个白色/透明的盒子;在盒子里面,人们可以清楚地看到。

2      定义

白盒测试是基于组件或系统内部结构分析的测试。

白盒测试设计技术是基于对组件或系统内部结构的分析,推导和选择测试案例的程序编写技术 

3      工作流程

白盒测试的工作流程如下:

 

l  输入:

n  需求、功能规格、设计文件、源代码。

l  处理过程:

n  进行风险分析,以指导整个过程。

l  适当的测试计划:

n  设计测试用例,以覆盖整个代码。执行漂洗-重复,直到软件中无法发现错误。同时,将测试结果进行展示交流。

l  输出结果:

n  准备整个测试过程的最终报告。

4      测试技术

4.1    语句覆盖

 在这种技术中,目的是至少遍历所有语句一次。因此,每一行代码都要进行测试。在流程图的情况下,每个节点必须至少遍历一次。由于所有的代码行都被覆盖,有助于指出有问题的代码。

 

(语句覆盖案例)

4.2    分支覆盖

在这种技术中,测试用例的设计是为了使所有决策点的每个分支至少被遍历一次。在一个流程图中,所有的边缘都必须至少遍历一次。

 


(需要4个测试案例,使所有分支都被覆盖,即流程图的所有边缘都被覆盖。)

4.3    条件覆盖

在这一技术中,必须涵盖所有个别条件,如下所示:

 

     1.   READ X, Y

     2.   IF(X == 0 || Y == 0)

     3.   PRINT ‘0

 

在这个例子中,有2个条件,X==0Y==0。现在,测试这些条件的值是TRUEFALSE。一个可能的例子是:

 

#TC1 – X = 0, Y = 55

#TC2 – X = 5, Y = 0

 

4.4    多条件覆盖

在这种技术中,所有可能的条件结果的可能组合都至少测试一次。让我们考虑下面的例子:

 

     1.   READ X, Y

     2.   IF(X == 0 || Y == 0)

     3.   PRINT ‘0

     #TC1: X = 0, Y = 0

     #TC2: X = 0, Y = 5

     #TC3: X = 55, Y = 0

     #TC4: X = 55, Y = 5

 

因此,两个单独的条件需要四个测试用例。

同样,如果有n个条件,则需要2n 个测试用例。

4.5    基础路径测试

在这种技术中,根据代码或流程图制作控制流程图,然后计算环形复杂度(Cyclomatic Complexity),确定独立路径的数量,以便为每个独立路径设计最少的测试案例。

步骤:

1.         制作相应的控制流程图

2.         计算环形复杂度

3.         寻找独立路径

4.         设计与每个独立路径对应的测试用例 

4.5.1    流程图的符号

它是一个由节点和边组成的定向图。每个节点代表一个语句序列,或一个决策点。一个谓语节点是代表一个决策点,它包含一个条件,在这个条件之后,图就会分裂。区域以节点和边为界。

 


4.5.2    环形复杂度(Cyclomatic Complexity

它是衡量软件逻辑复杂度的指标,用来定义独立路径的数量。对于一个图GV(G)是它的环形复杂度。

 

4.5.2.1   计算V(G)

l  V(G)=P+1,其中P是流程图中的谓语节点数。

l  V(G) = E - N + 2,其中E是边的数量,N是节点的总数。

l  V(G) =图中非重叠区域的数量。

 

4.5.2.2   例子

V(G)=4(使用上述任何一个公式)

独立路径数=4

 

#P11 – 2 – 4 – 7 – 8

#P21 – 2 – 3 – 5 – 7 – 8

#P31 – 2 – 3 – 6 – 7 – 8

#P41 – 2 – 4 – 7 – 1 – . . . – 7 – 8

 

4.6    循环(Loop)测试

循环被广泛使用,是许多算法的基础,因此,循环测试非常重要。错误经常发生在循环的开始和结束处。

 

4.6.1    简单循环

对于大小为n的简单循环,测试用例设计为:

l  完全跳过这个循环

l  只能通过一次循环

l  2次传递

l  m次传递,其中m<n

l  n-1个答案n+1次传递

 

4.6.2    嵌套循环

对于嵌套循环,所有的循环都被设置为最小计数,我们从最里面的循环开始。对最内层的循环进行简单的循环测试,然后向外进行,直到所有的循环都被测试完毕。

 

4.6.3    并联的循环

独立的循环,一个接一个。对每个循环都要进行简单的循环测试。

如果它们不是独立的,就像嵌套循环一样对待。

5      测试人员及开发人员

测试员,通常也是开发人员,研究网页上某个字段的实现代码,确定所有合法(有效和无效)和非法的输入,并根据预期的结果验证输出,这也是通过研究实现代码确定的。

 

白盒测试就像一个机械师的工作,检查发动机,看看汽车为什么不动。

6      测试适用级别

白盒测试法适用于以下级别的软件测试:

 

l  单元测试:

n  适用于单元内的测试路径。

l  集成测试:

n  适用于单元之间的测试路径。

l  系统测试:

n  用于测试子系统之间的路径。

 

总体而言,它主要应用于单元测试。

7      优势

l  白盒测试是非常彻底的,因为整个代码和结构都经过测试。

l  它的结果是优化代码,消除错误,并有助于消除额外的代码行。

l  它可以在较早的阶段开始,因为它不需要任何接口。

l  易于自动化。

8      劣势

l  主要缺点是成本很高。

l  重新设计代码和重写代码需要重新编写测试用例。

l  与黑盒测试相比,测试人员需要对代码和编程语言有深入的了解。

l  由于对存在的代码进行了测试,所以无法检测出缺失的功能。

l  如果实现变化过于频繁,测试脚本的维护可能是一个负担。

l  由于这种测试方法与被测试的应用程序密切相关,因此可能无法随时获得满足各种实现/平台的工具。

l  非常复杂,有时也不现实。

9      参考

https://www.geeksforgeeks.org/differences-between-black-box-testing-vs-white-box-testing/

https://en.wikipedia.org/wiki/White-box_testing

http://softwaretestingfundamentals.com/white-box-testing/

https://www.guru99.com/white-box-testing.html

https://www.geeksforgeeks.org/software-engineering-white-box-testing/

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。