按照是否查看程序内部结构,我们可以将测试方法分为白盒测试、灰盒测试以及黑盒测试
从白盒的角度来测试,需要分析函数内部的逻辑结构,包括函数的结构,内部局部数据的定义引用,函数内部各个控制语句组成的不同路径等是否合法。
从黑盒的角度来讲,函数内部的逻辑结构不需要了解,只需要测试人员了解其功能即可,如该函数实现的是排序的功能,从黑盒的角度来将,不关心排序是如何实现的,用了什么样的算法,只需要输入若干数据,检测函数处理后的结果是不是进行了排序就可以了。
1、白盒测试的概念
白盒测试有多种称法,如玻璃盒测试、透明盒测试、开放盒测试、结构化测试,基于代码的测试,逻辑驱动测试等。白盒测试时一种测试用例方法,在这里盒子指的是被测的软件,白盒,顾名思义即盒子是可视的,我们可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要我们对系统内部的结构和工作原理有一个清楚地了解,并且基于这个知识来设计用例。
2、使用白盒测试方法产生的测试用例的作用
(1)保证一个模块中的所有独立路径至少被使用一次;
(2)对所有逻辑值均需测试true和false;
(3)在上下边界及可操作范围内运行所有循环;
(4)检查内部数据结构以确保其有效性。
3、为什么要进行白盒测试?
是因为软件自身的缺陷:
(1)逻辑错误和不正确假设与一条程序路径被运行的可能性成反比;
(2)我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的基础上被执行。
(3)笔误是随机的。当一个程序被翻译为程序设计语言源代码时,有可能产生某些笔误,很多将被语法检查机制发现,但是,其他的会在测试开始时才会被发现。
4、白盒测试常用的技术
白盒测试技术一般可被分为静态分析和动态分析两类技术。
(1)静态分析技术:控制流分析,数据流分析,信息流分析。
(2)动态分析技术:**逻辑覆盖率测试**,程序插装等。
【动态分析技术里面的 **逻辑覆盖率测试** 比较重要,之后会单独写一篇做具体说明。】
5、白盒测试的优点
(1)迫使测试人员去仔细的思考软件的实现;
(2)可以检测代码中的每条分支和路径;
(3)揭示隐藏在代码中的错误;
(4)对代码的测试比较彻底;
(5)最优化。
(6)白盒测试的缺点
(1)昂贵;
(2)无法检测代码中遗漏的路径和数据敏感性错误;
(3)不验证规格的正确性。
1、黑盒测试的概念
黑盒测试又叫功能测试(Function Testing),只是因为在黑盒测试中,主要关注与被测软件的功能实现,而不是内部逻辑。在黑盒测试中,被测对象的内部结构,运作情况对测试人员是不可见的,测试人员对被测产品的验证主要是根据其规格,验证其余规格的一致性。
2、黑盒测试能够发现的错误有:
(1)功能错误或遗漏;
(2)界面错误;
(3)数据结构或外部数据库访问错误;
(4)性能错误;
(5)初始化和终止错误。
3、最常见的黑盒测试有
最常见的黑盒测试有:功能性测试、容量测试、安全性测试、稳定性测试、可靠性测试等等。
4、黑盒测试的测试用例设计方法
(1)等价类划分方法;
(2)边界值分析方法;
(3)错误推测方法;
(4)因果图方法;
(5)判定表驱动分析方法;
(6)正交实验设计方法;
(7)功能图分析方法。
5、黑盒测试的优点
(1)对于更大的代码单元来说(子系统甚至系统级)比白盒测试效率要高;
(2)测试人员不需要了解实现的细节,包括特定的编程语言;
(3)测试人员和编码人员是彼此独立的;
(4)从用户的视角进行测试,很容易被大家理解和接受;
(5)有助于暴露任何规格不一致或有歧义的问题;
(6)测试用例可以在规格完成之后马上进行。
6、黑盒测试的缺点
(1)只有一小部可能的输入被测试到,要测试的每个可能的输入流几乎是不可能的;
(2)没有清晰的和简明的规格,测试用例是很难设计的;
(3)如果测试人员不被告知开发人员已经执行过的用例,在测试数据上会存在不必要的重复。
(4)会有很多程序路径没有被测试到。
(5)不能直接针对待定的程序段,这些程序可能非常复杂(因此可能隐藏更多的问题)。
1、灰盒测试的概念
白盒和黑盒这两类测试时从完全不同的出发点,并且是两个完全对立点,反映了事物的两个极端,两种方法各有侧重,不能替代。但是在现代测试理念中,这两种测试往往不是决然分开的,一般在白盒测试中交叉使用黑盒测试的方法,在黑盒测试中交叉使用白盒测试的方法。灰盒测试就是介于白盒测试和黑盒测试之间的测试。
2、最常见的灰盒测试是集成测试。