【知识梳理】软件测试核心技术 第4章

第4章 测试方法

4.1 白盒测试

4.2 黑盒测试

4.3 白盒测试和黑盒测试的比较

4.4 灰盒测试

4.5 静态测试

4.6 动态测试


4.1 白盒测试

针对代码通常可以使用白盒测试方法,通过对代码内部逻辑的测试来保证代码质量。

白盒测试原理

在这里插入图片描述

使用白盒测试方法得到的测试用例能够达到以下目的。

●保证一个模块中的所有独立路径至少使用一次。

●对所有逻辑值均测试true和false。

●在上下边界及可操作范围内运行所有循环。

●检查内部数据结构以确保其有效性。

白盒测试的常用技术:

●静态分析技术:主要有控制流分析技术、数据流分析技术、信息流分析技术。

●动态分析技术:主要有逻辑覆盖率测试(分支测试、路径测试等)、程序插装等。

白盒测试的优缺点

白盒测试的优点如下:

●迫使测试人员仔细地思考软件的实现方式。

●可以检测代码中的每条分支和路径。

●揭示隐藏在代码中的错误。

●对代码的测试比较彻底。

​ ●可以优化测试。

白盒测试的缺点如下:

●成本昂贵。

●无法检测代码中遗漏的路径和数据敏感性错误。

●无法验证规格的正确性。


4.2 黑盒测试

针对软件系统通常可以使用白盒测试方法,通过对软件系统外在特性的检查来保证软件系统质量。

黑盒测试的原理
在这里插入图片描述

黑盒测试试图发现以下类型的错误:

●功能错误或者遗漏

●界面错误

●数据结构或外部数据库访问错误

●性能错误

●初始化和终止错误

黑盒测试用于回答以下问题

●如何测试功能的有效性?

●何种类型的输入会产生好的测试用例?

●系统是否对特定的输入值尤其敏感?

●如何分隔数据类的边界?

●系统能够承受何种数据率和数据量?

●特定类型的数据组合会对系统产生何种影响?

黑盒测试的常用技术

  1. 没有用户参与的黑盒测试
    • 功能性测试
    • 容量测试、
    • 安全性测试
    • 负载测试
    • 恢复性测试
    • 标杆测试
    • 稳定性测试
    • 可靠性测试
  2. 用户参与的黑盒测试
    • 外场测试
    • 实验室测试

黑盒测试的优缺点:

黑盒测试的优点如下:

●对于更大的代码单元(子系统甚至系统级)来说,黑盒测试比白盒测试的效率要高

●测试人员不需要了解实现的细,包括特定的编程语言

●测试人员和编码人员是彼此独立的

●从用户的视角进行测试,很容易被人们理解和接受

●有助于暴露任何规格不一致或有歧义的问题

​ ●测试用例可以在确定规格之后马上进行

黑盒测试的缺点如下:

●只有一小部分可能的输入被测试到,要测试每个可能的输入流几乎是不可能的

●没有清晰和简明的规格,测试用例是很难设计的

●如果测试人员不知道开发人员已经执行过的用例,那么在测试数据上会存在不必要的重复

●会有很多程序路径没有被测试到

●不能直接针对特定的程序段,这些程序可能非常复杂


4.3 白盒测试和黑盒测试的比较

白盒测试的优点
1、能仔细考虑软件的实现。
2、可检测代码中的每条分支和路径。
3、揭示隐藏在代码中的错误。
4、对代码的测试比较彻底。

白盒测试的缺点
1、昂贵。
2、无法检测代码中遗漏的路径和数据敏感性错误。
3、不验证规格的正确性。

黑盒测试的优点
1、对于子系统甚至系统,效率要比白盒测试高。
2、测试人员不需要了解实现的细节,包括特定的编程语言。
3、测试人员和编程人员彼此独立。
4、从用户的角度进行测试,很容易理解和接受。
5、有助于暴露规格的不一致或有歧义的问题。
6、测试用例可以在规格完成后马上进行。

黑盒测试的缺点
1、只有一小部分输入被测试到,要测试每个可能的输入几乎不可能。
2、没有清晰、简明的规格,测试用例很难设计。
3、如果测试人员不被告知开发人员已经执行过的用例,在测试数据上会存在不必要的重复。
4、有很多程序路径没有被测试到。
5、不能直接针对特定程序段测试,而这些程序段可能很复杂,有可能隐藏更多的问题。
6、大部分和研究相关的测试都是直接针对白盒测试的。


4.4 灰盒测试

灰盒测试是白盒测试和黑盒测试之间的测试,比如集成测试。

4.5 静态测试

**静态测试(static testing)**就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。

包括对代码测试、界面测试和文档测试三个方面:

对于代码测试,主要测试代码是否符合相应的标准和规范。

对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。

对于文档测试,主要测试用户手册和需求说明是否符合用户的实际需求。

4.6 动态测试

动态测试(dynamic testing),指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运行程序。

黑盒测试有可能是动态测试(运行程序,看输入输出),也有可能是静态测试(不运行,只看界面)

白盒测试有可能是动态测试(运行程序并分析代码结构),也有可能是静态测试(不运行程序,只静态察看代码)

动态测试有可能是黑盒测试(运行,只看输入输出),也有可能是白盒测试 (运行并分析代码结构)

静态测试有可能是黑盒测试(不运行,只察看界面),也有可能是白盒测试(不运行,只察看代码)


继续学习,未完待续。。。

猜你喜欢

转载自blog.csdn.net/Restarting2019/article/details/129145183