一、黑盒测试
- 黑盒测试:不用关注里面的代码逻辑和结构,只需要看相应的输入是否对应着和需求一致的输出。
- 黑盒测试是在界面上进行测试,但不是界面测试(静态测试),黑盒测试属于动态测试。
- 例如整个搜索功能,界面把后台处理的过程都屏蔽掉了。只关心界面这个功能的输入是否有相应的输出。
- 系统测试和验收测试都属于黑盒测试
- 黑盒测试设计测试用例的方法有:等价类、边界值、因果图、场景法、错误猜测法、正交法。具体方法博客:https://blog.csdn.net/ccyzq/article/details/121987274
优点
- 比较简单,不需要了解程序内部的代码及实现;
- 与软件的内部实现无关;
- 从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;
- 基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;
- 在做软件自动化测试时较为方便。
缺点
- 不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的 30%;
- 自动化测试的复用性较低。
二、白盒测试
- 白盒测试就是针对代码的测试,不关心系统功能外部的输入和输出,要关心系统的代码的实现,对代码的逻辑和结构进行测试。
- 单元测试是白盒测试的一种手段。
- 测试方法有六种,
- 语句覆盖,就是每条语句知道执行一次;
- 路径覆盖,程序当中的每一条可能的路径至少被执行一次;
- 判定覆盖,就是每个分支都要至少执行一次,当if为真为假都要执行;
- 条件覆盖,要是每个判断当中每一个条件的可能取值至少执行一次;
- 条件组合覆盖,每个判断的所有可能的条件取值组合都至少执行一次;
- 判定组合覆盖,需要同时满足判定覆盖和条件覆盖,需要去设计足够的一个测试用例,使得判断当中的每个条件的所有可能取值true或者false至少执行一次,同时要使得整个判定的结果真与假也要被至少执行一次;
优点:
- 帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。
缺点:
- 程序运行会有很多不同的路径,不可能测试所有的运行路径;
- 测试基于代码,只能测试 开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;
- 系统庞大时,测试开销会非常大。
三、灰盒测试
- 介于黑盒测试和白盒测试之间。灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。
- 灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
- 接口测试属于灰盒测试。