这里写自定义目录标题
黑盒测试
黑盒测试,又称功能测试。黑盒测试的重点是被测软件的功能实现,而不是内部逻辑。简单来说,黑盒测试就是测试人员不知道软件的具体实现代码,测试人员根据使用需求,设定一系列输入,通过与期望的输出进行比较,进完成测试。
(图片来源Xu Hanchuan老师课件)
黑盒测试常见的测试:
在大多数的黑盒测试中,最常见的有:功能性测试、容量测试、安全性测试、负载测试、恢复性测试、标杆测试、稳定性测试、可靠性测试等。
黑盒测试常用的方法:
等价类划分、边界值分析、因果图分析法、错误推断法
等价类划分:
等价类分为两种:有效等价类、无效等价类。
有效等价类是对于程序的规格说明(类似于使用规则)来说是合理的、有意义的输入数据构成的集合,而无效等价类则是对程序的规格说明不合理的或者无意义的输入数据构成的集合。
用有效等价类可检验程序是否实现了规格说明中所规定的功能需求,而用无效等价类可检验程序在不符合规则的数据输入下,是否会有异常。(对于实际应用来说,用有效等价类的测试正确看起来更像是看基础牢固,功能实现的体现;用无效等价类的测试正确看起来更像是处理好边角,对特殊情况也能有好的应对方法)
尽管看起来有效等价类涵盖的范围更大,但是不能说无效等价类没有有效等价类重要,个人认为,问题常常会出现在无效等价类的输入上,因为现在常常是问题导向,更多的关注点会放在实现功能上,对于异常的处理可能就没有那么周全,一个好的程序员往往能够在实现功能的基础上,处理好异常状态。
边界值分析:
边界值分析是针对输入数据或输出结果的边界值进行测试,其常常是等价类划分的补充(一些问题可能隐藏在数据边界上,而忽略边界和集合内部的区别,可能会忽略边界异常)
边界值分析要选取等价类的所有边界作为测试,不能只挑选某个边界(因为所有边界都可能出现不符合期望或异常状态),而边界值分析还考虑输出的测试情况。
因果图分析法、错误推断法:
因果图分析法是考虑多个条件组合对输入产生输出的影响,而错误推断法则是测试人员根据直觉、经验有针对性的编写测试用例的方法(此两个方法只做简要介绍,想要了解更多详情请自行搜索)
白盒测试
白盒测试,相对于黑盒测试。白盒,代表着盒子(软件)是可视的(即内代码实现可知),因此白盒测试需要对系统内部的结构和工作原理有一个清楚的了解,并且基于此了解,设计相关测试用例进行测试。
(图片来源Xu Hanchuan老师课件)
白盒测试常见的方法:
语句测试、分支/判定测试、条件测试、数据流测试、基本路径测试
语句测试是将使每条代码都能够并且至少执行一次(多分支的结构中,语句测试只会考虑某一条具体的路径,并不会考虑多条路径的组合)
分支/判定测试是将所有逻辑判断、条件判断的语句的各种情况至少执行一次(比如if条件为真、为假;switch的所有case情况的遍历等)
条件测试是将所有逻辑判断的真、假情况都执行至少一次(看上去是包含在分支/判定测试中的)
数据流测试是在程序执行时跟踪数据(变量)的定义与使用(看上去类似于debug的过程)
基本路径测试是将所有可能组合的路径都至少执行一次
黑盒测试与白盒测试的优缺点
二者的优点
黑盒测试 | 白盒测试 |
---|---|
适用于功能测试、可用性测试及可接受性测试 | 利于提高代码的覆盖率 |
可测试长、复杂的程序的工作逻辑 | 有效提高代码的质量 |
二者的缺点
黑盒测试 | 白盒测试 |
---|---|
输入数据集等价类的覆盖率可能较低 | 所有路径无法全部测试 |
某些bug无法测试出来 | 可能会缺少某些功能需求测试 |
对软件的使用说明存在依赖 | 测试的系统庞大时测试开销大 |
总结
黑盒测试的方法更适用于软件需求方,例如软件厂商、软件用户等,他们的输入数据随机性较大,同时也不乏一定的异常输入,在软件厂测试、软件用户的使用过程中,发现bug随即反馈给相关人员,也就算完成一定意义上的黑盒测试,因此,黑盒测试常常在软件各个阶段主动或被动的使用。
白盒测试的方法更适用于软件开发方,他们有一定的编程的基础,对于软件的构成通过代码能够有清晰的了解,并基于此对潜在的问题通过分析、测试进行发掘,并加以改正。因此,这种方法能够高效地定位问题所在,从而有效提高软件代码的质量。也正是因为白盒测试对测试人员有一定的要求,白盒测试常常在软件的开发过程、公开测试后的修复过程、日常运行的修复过程中使用。
总之,黑盒测试和白盒测试都是十分重要的方法,根据黑盒测试和白盒测试的特点,结合自身测试需求选择适宜的方法,才能有效地提高测试的效果。