7. 实现
通常把编码和测试统称为实现。
所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。
目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。
7.2 软件测试基础
测试用例:所谓测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果;测试用例是执行测试的最小实体。
白盒测试主要用于对模块的测试,包括:程序模块中的所有独立路径至少执行一次;对所有逻辑判定的取值(“真”与“假”)都至少测试一次;在上下边界及可操作范围内运行所有循环;测试内部数据结构的有效性等。
黑盒测试可用于各种测试,它试图发现以下类型的错误:不正确或遗漏的功能;界面错误;数据结构错误或外部信息(如外部数据库)访问错误;性能错误;初始化和终止错误。
7.2.3 测试方法
测试任何产品都有两种方法:
- 如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;【黑盒测试】
- 如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行。【白盒测试】
对于软件测试而言,黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息(例如数据库或文件)的完整性。黑盒测试又称为功能测试。
白盒测试法与黑盒测试法相反,它的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试。
7.2.4 测试步骤
大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成,因此,大型软件系统的测试过程基本上由下述几个步骤组成。
- 模块测试
- 子系统测试
- 系统测试
- 验收测试
- 平行运行
7.3 单元测试
7.3.2 代码审查
审查小组最好由下述4人组成:
- 组长,应该是一个很有能力的程序员,而且没有直接参与这项工程。
- 程序的设计者
- 程序的编写者
- 程序的测试者
7.4 集成测试
7.4.1 自顶向下集成
178
7.4.2 自底向上集成
179
7.5 确认测试
7.5.3 Alpha 和 Beta 测试
alpha测试与beta测试的区别:网页链接
7.6 白盒测试技术
7.6.1 逻辑覆盖
- 语句覆盖
- 判断覆盖
- 条件覆盖
- 判定/条件覆盖
- 条件组合覆盖
- 点覆盖
- 边覆盖
- 路径覆盖
7.6.2 控制结构测试
- 基本测试路径
- 条件测试
- 循环测试
7.7 黑盒测试技术
7.7.1 等价划分
7.7.2 边界值分析
7.7.3 错误推测
7.8 调试
7.8.2 调试途径
- 蛮干法
- 回溯法
- 原因排除法
7.9 软件可靠性
7.9.1 基本概念
- 软件可靠性:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。
- 软件的可用性:软件可用性是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。
7.9.2 估算平均无故障时间的方法
软件的平均无故障时间 MTTF
习题
- 什么是模块测试和集成测试?它们各有什么特点?
- 模块测试是对每个单独的模块,分别用黑盒和白盒测试技术,测试它的功能是否正确,检查模块控制结构中的特定路径并发现最大数量的错误。其特点是:主要应用白盒测试的技术,对多个模块的测试可以并发的进行。
- 集成测试是把模块装配在一起形成完整的软件包,在装配的同时进行测试。特点是:可能发生接口问题。