黑盒测试与白盒测试(结合例子详细讲解)
·
前言
举个栗子
侦察兵进行侦察即为黑盒测试,卧底探清敌人内部为白盒测试。
作为侦察兵,他们只需要记录敌人的进出数量以及携带的火力,不需要管他们敌人的老巢。
作为卧底,他们需要了解敌军内部的结构,例如弹药库在哪,头领办公室在哪,敌军牢房路线等,他们不需要管有多少日本兵进出,只需调查出日本大营的一些内部信息即可。
由此:就可以看出黑盒测试与白盒测试的区别在于:是否需要了解“内部结构”
一、黑盒测试是什么?
黑盒测试也称:数据驱动测试(由数据驱动其进行测试)包括功能测试和性能测试。
黑盒测试:没有办法或不用了解事物的内部结构和运行机制,而把整个事物看成一个整体——黑盒子,通过分析事物的输入与输出(侦察兵观察敌军发兵数量)以及周边条件来分析和处理问题。
二、白盒测试是什么?
白盒测试也称:结构化测试或逻辑驱动测试。
白盒测试:能够看清事物的内部,即了解事物的内部结构和运行机制,通过剖析事物的内部结构和运行机制,来处理和解决问题。
结合栗子:潜入敌后的卧底,通过调查内部结构,例如画出到监狱的路线图,使其能够帮助部队营救被困战友。
常见白盒测试:
- 语句覆盖(Statement Coverage):使程序中每个可执行语句至少执行一次。(相当于卧底将敌军的所有细节,包括大营路线,火力配置等获取)
- 判定覆盖(Decision Coverage):使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。(相当于卧底将敌人大营的所有分叉路口两边画出)
- 条件覆盖(Condition Coverage):使每个判断中每个条件的可能取值至少满足一次。(由于判断条件中有多个条件,相当于卧底将敌人大营的东门钥匙或者北门钥匙搞到一把或者全部搞到)
- 判定/条件覆盖(Decision/Condition Coverage):所有条件可能至少执行一次取值,同时所有判断的可能结果至少执行一次。(相当于卧底将敌人的大门钥匙均获取)
- 条件组合覆盖(Branch Condition Combination Coverage):使得所有可能的条件取值组合至少执行一次(相当于卧底将敌人大营的大门钥匙以及大门内军官的办公室钥匙获取)
- 路径覆盖(Path Coverage):使得程序中所有的路径都至少执行一次 。(相当于卧底将敌人大营的所有路线画出)
三、判断某种方式是黑盒测试还是白盒测试
过去:人们常常把等价类划分法,边界值分析法,错误推测法归为黑盒测试。但是这不够恰当,例如:边界值分析方法,可以在系统外部输入中运用,也可以在代码内部边量测试中运用,前者为黑盒测试,后者为白盒测试。
举个栗子:
刚开始,侦察兵只能观察敌军进出大营的情况,此时为黑盒测试。
但是,当敌军全部出动时,此时其卡车相当于”敌人的老巢“,此时的侦察营看到的就是内部信息了。
总结
判定某种方法是否为黑盒测试方法,关键还是看是否针对被测对象内部结构还是针对被测对象的整体进行测试。
更多推荐
已为社区贡献6条内容
所有评论(0)