第7章 软件测试
第 7 章 软 件 测 试
7.1 软件测试概述
7.2 测试方法
7.3 测试用例的设计
7.4 测试过程
7.5 调试
返回 主目录
1
第7章 软件测试
第 7 章 软 件 测 试
7.1软件测试概述
7.1.1软件测试的目的
统计资料表明,测试的工作量约占整个项目开发工作量
的40%左右,对于关系到人的生命安全的软件(如飞机飞行自
动控制系统),测试的工作量还要成倍增加。
那么,为什么要花这么多代价进行测试? 其目的何在?
它是“说明程序能正确地执行它应有的功能”,还是“表明
程序没有错误”。如果是这样一个目的,就要朝着“证明程
序正确”这个目标靠拢,无意识地选择一些不易暴露错误的
例子。因此G.J.Myers对软件测试的目的提出了以下观点:
2
第7章 软件测试
(1) 软件测试是为了发现错误而执行程序的过程。
(2) 一个好的测试用例能够发现至今尚未发现的错误。
(3) 一个成功的测试是发现了至今尚未发现的错误的测试。
因此,测试阶段的基本任务应该是根据软件开发各阶段的
文档资料和程序的内部结构,精心设计一组“高产”的测试
用例,利用这些用例执行程序,找出软件中潜在的各种错误
和缺陷。
3
第7章 软件测试
7.2 测 试 方 法
7.2.1静态测试与动态测试
1. 静态测试
静态测试是指被测试程序不在机器上运行,而是采用人
工检测和计算机辅助静态分析的手段对程序进行检测,方法
如下:
(1) 人工测试:是指不依靠计算机而靠人工审查程序或评
审软件。人工审查程序偏重于编码质量的检验,而软件审查
除了审查编码还要对各阶段的软件产品进行检验。
4
第7章 软件测试
(2) 计算机辅助静态分析: 指利用静态分析工具对被测试
程序进行特性分析,从程序中提取一些信息,以便检查程序逻
辑的各种缺陷和可疑的程序构造。如用错的局部量和全程量、
不匹配参数、不适当的循环嵌套和分支嵌套、 潜在的死循环及
不会执行到的代码等。还可能提供一些间接涉及程序欠缺的信
息、 各种类型的语句出现的次数、变量和常量的引用表、标识
符的使用方式、过程的调用层次及违背编码规则等。静态分析
中还可以用符号代替数值求得程序结果, 以便对程序进行运算
规律的检验。
5
第7章 软件测试
2. 动态测试
动态测试指通过运行程序发现错误。一般意义上的测试大
多是指动态测试。为使测试发现更多的错误,需要运用一些有
效的方法。 测试任何产品,一般有两种方法:一是测试产品
的功能,二是测试产品内部结构及处理过程。对软件产品进行
动态测试时, 也用这两种方法,分别称为黑盒测试法和白盒
测试法。
6
第7章 软件测试
7.2.2黑盒测试法与白盒测试法
1. 黑盒法
该方法把被测试对象看成一个黑盒子,测试人员完全不
考虑程序的内部结构和处理过程,只在软件的接口处进行测
试, 依据需求说明书,检查程序是否满足功能要求。因此,
黑盒测试又称为功能测试或数据驱动测试。
通过黑盒测试主要发现以下错误:
(1) 是否有不正确或遗漏了的功能。
(2) 在接口上,能否正确地接受输入数据, 能否产生正确
的输出信息。
(3) 访问外部信息是否有错。
(4) 性能上是否满足要求等。
7
第7章 软件测试
用黑盒法测试时,必须在所有可能的输入条件和输出条件
中确定测试数据。是否要对每个数据都进行穷举测试呢?例如
测试一个程序,需输入 3 个整数值。微机上,每个整数可能取
值有216个,3个整数值的排列组合数为216×216×216=248≈3×1014。
假设此程序执行一次为一毫秒, 用这些所有的数据去测试要用
1万年!但这还不能算穷举测试, 还要输入一切不合法的数据。
可见,穷举地输入测试数据进行黑盒测试是不可能的。
2. 白盒法
该方法把测试对象看作一个打开的盒子, 测试人员须了解
程序的内部结构和处理过程,以检查处理过程的细节为基础,
对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和
数据结构是否有错, 实际的运行状态与预期的状态是否一致。
8