黑盒和白盒测试

黑盒测试:是测试中的比较重要的手段。又称为数据驱动的测试或者输入输出驱动测试。
所谓黑盒,也就是说相当于把一个东西用一个黑盒子装着,就比如说手机,外表一个壳子,里面的电路结构我们并不知道,这个黑盒也是这个意思,那么我们应该怎样来发现内部存在怎么样的问题呢?是否符合我们的要求?这就需要测试,这种在不知道内部结构的情况下进行的测试叫做黑盒测试。
怎么测试?
测试的标准就是“穷举输入测试”。

  • 比如在三角形的测试中,我们需要输入很多的例子,在编程语言整型所在的范围内,这个测试用例是非常巨大的,这显然有点不现实。
  • 比如说我们要对一个C++编译器进行黑盒穷举测试。不仅要创建代表所有有效的C++测试用例(可以想象这是一个无穷数),还需要测试所有无效的C++测试用例,以确保编译器能够检测出他们是无效的。
  • 也就是说,编译器必须进行测试,确保其不会执行不应该执行的操作。(正确编译一个语法上不正确的代码)
  • 例如:一个航班预订系统这样的数据库应用程序中,比如数据库查询,航班预约这样的事务处理需要上一次的事务的执行情况来确定。因此,不仅要测试所有有效的和无效的事务,还要测试所有可能的事务处理顺序。
  • 有两层含义:一是我们无法测试一个程序以确保他是无错的。二是软件测试需要考虑的一个基本问题是软件测试的经济学。也就是说,由于穷举测试是不可能的,测试投入的目标在于 通过有线的测试用例,最大限度的提高发现的问题的数量,来取得最好的测试效果。
    白盒测试:
  • 又称为逻辑驱动的测试。允许检查内部结构,这种测试策略对程序的逻辑结构进行检查,从中获得测试数据。(这种测试方式往往忽略了程序的规范性)
  • 可以通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条桐庐是否能够按照预定要求正确工作。
    白盒测试的主要方法有:逻辑驱动,基路测试,主要用于软件验证。
    穷举路径测试:即如果使用测试用例执行了程序中所有可能的控制流路径,那么程序有可能得到了完全的测试。
    其实和穷举输入测试方法类似,穷举路径测试方法也是不可行的,都是需要无穷多个测试用例,并且还不能保证程序一定会正确。但是会不会有一种方法 可以结合黑盒白盒测试,出现一种很方便实用的测试方法呢?后面会继续学习。
    黑盒白盒测试对开发语言的支持:
    白盒测试工具是对源代码进行测试,测试的主要内容包括词法分析和语法分析,静态错误分析,动态监测等。目前测试工具主要支持的开发语言包括:标准C,C++,VisualC++,Java,VisualJ++等
原文地址:https://www.cnblogs.com/chan0311/p/9427310.html