黑盒测试就当整个程序是个黑盒子,我们看不到它里面做了些什么事情,只能通过输入输出看是否能得到我们所需的来测试。
而白盒测试可以当盒子是透明的,里面的一切代码都看的清楚,从而我们可以通过去测内部结构来测试。
白盒测试也称结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。
根据程序的控制结构设计测试用例
白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行测试,是一种穷举路径的测试方法。但即使每条路径都测试过了,仍然可能存在错误。因为:
穷举路径测试无法检查出程序本身是否违反了设计规范,程序本身就是一个错误的程序
穷举路径测试不可能查出程序因为遗漏路径而出错
穷举路径测试发现不了一些与数据相关的错误
白盒测试:检查程序的内部结构、逻辑、循环和路径。常用测试用例设计方法有:
逻辑覆盖:以程序的内部逻辑结构为基础,分为语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖等
基本路径测试:在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例。
语句覆盖是指选择足够多的测试用例,使得程序中的每一条可执行语句至少被执行一次。它以程序中每条可执行语句是否都被执行到为测试终止的标准
判断覆盖也叫分支覆盖,即设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。
以一段程序为例,画出流程图,图上标注了路径,abcde
条件覆盖的思想是使每个判断中每个条件的可能取值至少满足一次,对上面的判断覆盖进行了细化,将括号里面的x,y进行了细化
上面的测试用例在达到条件覆盖的同时也达到了 100%的判断覆盖标准。但是并不能保证达到 100%条件覆盖标准的测试用例都能达到 100%判断覆盖标准
如下表,两个用例下,P1和P1是相同的
所以条件覆盖的同时,又满足了判断覆盖,就出现了下面这种
判断-条件覆盖:判断条件实际上就是将前两种方法结合起来的设计方法,它是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判定条件中的所有条件可能取
值至少执行一次,同时,所有判断的可能结果至少执行一次
达到 100%判断-条件覆盖标准一定能够达到 100%条件覆盖,100%判定覆盖和100%语句覆盖。
条件组合覆盖
基本思想是使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。它与条
件覆盖的差别是它不是简单的要求每个条件都出现“真”与“假”两种结果,而是让这些结果的所有可能组合都出现一次。
a.条件组合只针对同一个判断语句内存在多个条件的情况,让这些添加的取值进行笛卡尔乘积组合。
b.不同的判断语句内的条件取值之间无需组合
c.对于单条件的判断语句,只需要满足自己的所有取值即可
基本路径覆盖
设计所有的测试用例,来覆盖程序中所有可能的独立的执行路径
即遍历所有可能的路径
普遍认为六种逻辑覆盖的强弱关系,从弱到强的是:
语句覆盖——>判定覆盖——>条件覆盖——>判定-条件覆盖——>条件组合覆盖——>路径覆盖,但路径覆盖不好在图中画出
黑盒测试
测试软件产品已经实现的功能是否符合功能设计要求,不需测试软件产品的内部结构和处理过程。
黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打
开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序
是否能适当地接收输入数锯而产生正确的输出信息。
“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷
多个,因此不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
“黑盒”的两种基本方法
黑盒测试有两种基本方法,即“通过测试”和“失败测试”。
在进行“通过测试”时,实际上是确认软件能做什么,而不会考验其能力如何。软件测试员只运用最简单、直观的测试案例。
在设计和执行测试案例时,总是先进行通过测试。在进行破坏性试验之前,看一看软件基本功能是否能够实现。
在确信了软件正确运行之后,就可以采取各种手段通过搞垮软件来找出缺陷。
纯粹为了破坏软件而设计和执行的测试案例,被称为失败测试或迫使出错测试。
黑盒测试的优、缺点
(1)优点
a.比较简单,不需要了解程序内部的代码以及实现。
b.与软件内部实现无关。
c.从用户角度出发,很容易的知道用户会用到哪些功能,会遇到哪些问题。
d.在做软件自动化测试时较为方便。
e.基于软件开发文档,所以也能知道软件实现了文档中的哪些功能。
(2)缺点
a.不可能覆盖所有代码,覆盖率较低,大概只能达到总代码量的 30%,因为只测试功能代码,还有很多辅助功能实现的代码不测试
b.自动化测试的复用性较低。
黑盒测试的测试用例设计方法
(1)等价类划分法
分为有效等价类和无效等价类,无效等价类其实就是不合法输入集合
(2)边界值分析法
(3)错误推测法
(4)因果图法
(5)判定表
(6)功能图法