白盒测试—软件测试入门9
在实际的工作中,我们可能会很少会用到白盒测试,因为白盒测试常常是程序员会做的事情。我们所需要的就是看得懂。这篇文章就先来了解下,具体怎样能看懂,我会在后续的文章中慢慢更新的。
白盒测试的定义:
(又称结构测试)把测试对象看做一个个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确的工作。
a、白盒测试==透明盒测试==逻辑驱动测试==基于代码的测试
b、黑盒测试==数据驱动测试==基于功能的测试
c、测试被测单元内部的逻辑结构
d、测试测试用例可以覆盖代码中可执行语句、分支(判定)、条件、基本路。
内容:
(1)程序结构(2)源代码
目的:
a、保证关键路径被执行
b、便于衡量测试完整性
c、可以执行到判定的真、假分支
d、检查内存泄露(是否内存被占满,却没有得到释放)
e、检查程序异常处理能力
f、检查代码是否符合规范(可靠、可读、可移植)
为什么要做白盒测试?
往往一个缺陷不是由一个原因引起的,而此时看代码更容易看出缺陷产生的原因,并且更省时间。
白盒测试逻辑覆盖:
1、语句覆盖 2、判定覆盖 3、条件覆盖 4、判定/条件覆盖 5、多重条件覆盖 6、路径测试
语句覆盖:
基本思想:设计若干条测试用例,保证程序中所有可执行语句,至少被执行一次。
优点:通过程序流程图,可以很直观的看出可执行语句,很便利设计测试用例
缺点:没有考虑判定所有取值情况,判定里的条件更没有考虑完全
测试结果:代码覆盖率达到了100%,所有程序语句执行了一次,并且程序还正常计算出了结果。
遗留缺陷:没有发现最简单的bug。
判定覆盖:
1、使得程序中的每一个判断至少获得一次“真”和一次“假”的执行。
2、即:使得程序流程图中的每一个真假分支至少被执行一次
基本思想:设计若干条测试用例,保证程序中每一个判定的真分支、假分支(如果是多分支结构,判定的所有取值情况都要考虑到)至少被执行一次
优点:考虑到了判定的所有取值情况,实现了语句覆盖
缺点:判定里的条件取值情况没有考虑
条件覆盖:
基本思想:设计若干条测试用例,保证每个判定中每个条件的取值情况,至少被执行一次
优点:考虑了判定中每个条件的取值情况
缺点:满足条件覆盖,不一定满足判定覆盖
判定条件覆盖:
基本思想:设计若干条测试用例,保证程序中每个判定中的每个条件的取值情况至少执行一次,并且要保证每个判定的所有取值情况至少执行一次
优点:既考虑到了判定的取值情况,又考虑到了判定中每个条件的取值情况
缺点:由于某些编译器的原因,条件的取值情况并没有被执行。
条件组合覆盖:
基本思想:将一个判定中的所有条件的所有取值情况,进行条件组合,设计若干条测试用例,保证每个条件组合至少要执行一次
优点:满足了判定—条件覆盖
缺点:线性的增加了测试用例的数量
路径覆盖:
就是设计足够的测试用例,覆盖程序中所有可能的路径。这是最强的覆盖准则。
但在路径数目很大时,真正做到完全覆盖是很困难的,必须把覆盖路径数目压缩到一定限度。
基本路径测试:
它是在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计标准:设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。
控制流程图:
a.节点:控制流图中的一个圆圈,就叫一个节点
b、判定节点:一个圆圈有两条或两条以上的边出发,这个圆圈就叫判定节点。
c.汇聚节点:一个圆圈有两条有两条或两条以上的边止于该圆圈,该圆圈就叫汇聚节点
d、边(连接):控制流图中的箭头,就叫边或者连接。
区域:由边和节点确定的范围就叫做区域(注意:如果计算区域个数时:范围外也要算作一个区域)
计算程序环路复杂度:
进行程序的基本路径测试时,程序的环路复杂性给出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。
环路复杂性(圈复杂度)计算:
(1)将环路复杂性定义为控制流程图中的区域数。
(2)设E(edge)为控制流图的边数,N(node)为图的节点数,则定义环路复杂性为V
有一个计算式是:
(G)=E-N
(3)若设P为控制流图中的判定节点数,则有v(G)=p+1。(不适用于多分支情况)
总结:
满足判定覆盖一定满足语句覆盖
满足判定覆盖不一定满足条件覆盖
满足条件覆盖不一定满足判定覆盖
满足判定-条件覆盖一定满足条件、判定覆盖
条件组合覆盖一定满足条件、判定覆盖
抱歉,时间短暂,迁就一下以上就是关于白盒测试的所有内容了。下篇文章会讲关于黑盒测试的内容。如果有想要会白盒测试的,那将是一条漫长的征途,我会在后续的文章中慢慢更一些关于java以及python的基础语法知识,帮助想要简单了解的那些小伙伴。有兴趣的小伙伴可以加861268173这个qq群,群里也会分享慢慢分享一些专业的知识,会做问题的解答。适合想要进入此专业的小伙伴,相信你能收获到很多实际的帮助。