黑盒测试(Black-box Tesing)
黑盒测试又称功能测试、数据驱动测试或基于规格说明书的测试。注重于测试软件的功能性需求。
采用这种测试方法,测试者把被测程序看成一个黑盒子,完全不要考虑程序的内部结构和特性,只知道该程序输入和输出之间的关系或程序功能,依靠能够反映这一关系和程序功能的需求规格说明书,来自确定测试用例和推断测试结果的正确性。例如:Windows计算其程序,我们如果输入3.14159并按sqrt键,就会得到结果1.772453102341。使用黑盒子测试方式,不管软件计算圆周率的平方根要经历多少复杂运算,只关心他的运行结果。
白盒测试(White-box Tesing)
白盒测试又称结构测试、逻辑驱动测试或基于程序本身的测试。测试者把被测程序看成一个盒子,而这个盒子是打开着的,以程序的内容来设计测试数据。采用这种测试方法,测试人员对被测试程序的内部结构是清楚的。从程序的内部逻辑结构入手,按照一定的原则设计测试用例,对软件的逻辑路径进行测试,在程序的不同点检查程序的状态,来判定其实际情况是否和预期的状态相一致。
白盒测试要求对某些程序的结构特性做到一定程度的覆盖,或者说是“基于覆盖率的测试”,并以此为目标,引导我们朝着提高覆盖覆盖率的方向努力,找出那些已被忽视的程序错误。最常见的程序结构覆盖有:
(1)语句覆盖:程序中每一条语句至少被执行一次,这是最弱的逻辑覆盖准则。
(2)分支覆盖或判断覆盖:程序中的每一个分支至少走查一次,即每一条分支语句的真值执行一次,假值也执行一次。
(3)条件覆盖:当判定式中含有多个条件时,要求每个条件的取值均得到检验。
(4)判断/条件覆盖:同时考虑条件的组合及判定结果的检验。
(5)路径覆盖:使程序延所有可能的路径执行。