4.1 白盒测试
4.2 黑盒测试
4.3 白盒测试和黑盒测试的比较
4.4 灰盒测试
4.5 静态测试
4.6 动态测试
针对代码通常可以使用白盒测试方法,通过对代码内部逻辑的测试来保证代码质量。
白盒测试原理
使用白盒测试方法得到的测试用例能够达到以下目的。
●保证一个模块中的所有独立路径至少使用一次。
●对所有逻辑值均测试true和false。
●在上下边界及可操作范围内运行所有循环。
●检查内部数据结构以确保其有效性。
白盒测试的常用技术:
●静态分析技术:主要有控制流分析技术、数据流分析技术、信息流分析技术。
●动态分析技术:主要有逻辑覆盖率测试(分支测试、路径测试等)、程序插装等。
白盒测试的优缺点
白盒测试的优点如下:
●迫使测试人员仔细地思考软件的实现方式。
●可以检测代码中的每条分支和路径。
●揭示隐藏在代码中的错误。
●对代码的测试比较彻底。
●可以优化测试。
白盒测试的缺点如下:
●成本昂贵。
●无法检测代码中遗漏的路径和数据敏感性错误。
●无法验证规格的正确性。
针对软件系统通常可以使用白盒测试方法,通过对软件系统外在特性的检查来保证软件系统质量。
黑盒测试试图发现以下类型的错误:
●功能错误或者遗漏
●界面错误
●数据结构或外部数据库访问错误
●性能错误
●初始化和终止错误
黑盒测试用于回答以下问题
●如何测试功能的有效性?
●何种类型的输入会产生好的测试用例?
●系统是否对特定的输入值尤其敏感?
●如何分隔数据类的边界?
●系统能够承受何种数据率和数据量?
●特定类型的数据组合会对系统产生何种影响?
黑盒测试的常用技术
黑盒测试的优缺点:
黑盒测试的优点如下:
●对于更大的代码单元(子系统甚至系统级)来说,黑盒测试比白盒测试的效率要高
●测试人员不需要了解实现的细,包括特定的编程语言
●测试人员和编码人员是彼此独立的
●从用户的视角进行测试,很容易被人们理解和接受
●有助于暴露任何规格不一致或有歧义的问题
●测试用例可以在确定规格之后马上进行
黑盒测试的缺点如下:
●只有一小部分可能的输入被测试到,要测试每个可能的输入流几乎是不可能的
●没有清晰和简明的规格,测试用例是很难设计的
●如果测试人员不知道开发人员已经执行过的用例,那么在测试数据上会存在不必要的重复
●会有很多程序路径没有被测试到
●不能直接针对特定的程序段,这些程序可能非常复杂
白盒测试的优点
1、能仔细考虑软件的实现。
2、可检测代码中的每条分支和路径。
3、揭示隐藏在代码中的错误。
4、对代码的测试比较彻底。
白盒测试的缺点
1、昂贵。
2、无法检测代码中遗漏的路径和数据敏感性错误。
3、不验证规格的正确性。
黑盒测试的优点
1、对于子系统甚至系统,效率要比白盒测试高。
2、测试人员不需要了解实现的细节,包括特定的编程语言。
3、测试人员和编程人员彼此独立。
4、从用户的角度进行测试,很容易理解和接受。
5、有助于暴露规格的不一致或有歧义的问题。
6、测试用例可以在规格完成后马上进行。
黑盒测试的缺点
1、只有一小部分输入被测试到,要测试每个可能的输入几乎不可能。
2、没有清晰、简明的规格,测试用例很难设计。
3、如果测试人员不被告知开发人员已经执行过的用例,在测试数据上会存在不必要的重复。
4、有很多程序路径没有被测试到。
5、不能直接针对特定程序段测试,而这些程序段可能很复杂,有可能隐藏更多的问题。
6、大部分和研究相关的测试都是直接针对白盒测试的。
灰盒测试是白盒测试和黑盒测试之间的测试,比如集成测试。
**静态测试(static testing)**就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。
包括对代码测试、界面测试和文档测试三个方面:
对于代码测试,主要测试代码是否符合相应的标准和规范。
对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。
对于文档测试,主要测试用户手册和需求说明是否符合用户的实际需求。
动态测试(dynamic testing),指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运行程序。
黑盒测试有可能是动态测试(运行程序,看输入输出),也有可能是静态测试(不运行,只看界面)
白盒测试有可能是动态测试(运行程序并分析代码结构),也有可能是静态测试(不运行程序,只静态察看代码)
动态测试有可能是黑盒测试(运行,只看输入输出),也有可能是白盒测试 (运行并分析代码结构)
静态测试有可能是黑盒测试(不运行,只察看界面),也有可能是白盒测试(不运行,只察看代码)
继续学习,未完待续。。。