软件测试培训教程

更新时间:2023-03-20 05:22:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

软件测试的目标与原则Myers在其软件测试著作中对软件测试的目标提 在其软件测试著作中对软件测试的目标提 出以下观点: 出以下观点: 软件测试是为了发现错误而运行程序的过程; ①软件测试是为了发现错误而运行程序的过程; ②一个好的测试用例能够发现至今尚未发现的 错误; 错误; ③一个成功的测试是发现了至今尚未发现的错 误的测试。 误的测试。

软件测试的步骤在本书中,从软件工程的角度: 在本书中,从软件工程的角度: 将单元测试与详细设计对应起来, 将单元测试与详细设计对应起来,即在详细设计阶段就应 制定出单元测试计划; 制定出单元测试计划; 而集成测试又称为综合测试, 而集成测试又称为综合测试,可以把概要设计和集成测试 对应起来,在概要设计阶段就可以制定集成测试计划; 对应起来,在概要设计阶段就可以制定集成测试计划; 将功能测试、性能(行为)测试、 将功能测试、性能(行为)测试、验收测试统称为验收测 也称确认测试),与软件系统需求分析阶段对应起来, ),与软件系统需求分析阶段对应起来 试(也称确认测试),与软件系统需求分析阶段对应起来, 在需求分析阶段就应制定出验收准则和验收测试计划, 在需求分析阶段就应制定出验收准则和验收测试计划,验 收测试应提交经用户确认的软件产品; 收测试应提交经用户确认的软件产品; 最后,将软件、 最后,将软件、硬件等要素构成一个完整的基于计算机的 系统,再进行系统测试,使系统测试与系统定义相对应, 系统,再进行系统测试,使系统测试与系统定义相对应, 即在系统定义阶段就应制定系统测试计划。 即在系统定义阶段就应制定系统测试计划。

软件测试的步骤

部件 代码 部件 代码

单元测试 单元测试

设计 规格说明 集成测试

系统 功能需求 功能测试

其他 软件需求 性能测试 功能 系统

用户需求 规格说明

用户 环境 安装测试

验收测试 验证, 验证, 生效的 软件

…部件 代码 单元测试 测试后 的模块

集成后 的模块

被接受 的系统 在使用中的系统

测试步骤

软件测试的步骤系统工程 需求分析 概要设计 设计、 设计、编码 单元测试 集成测试 验收测试 系统测试

软件工程的开发与测试的关系

测试阶段的信息流正确的程序

软件配置 测试 测试配置 预期结果 测试结果 评价

错误

排错

可靠性 可靠性预测 错误统计 模型

测试阶段的信息流

14.1.3 测试阶段的信息流测试的输入流有软件配置和测试配置。 测试的输入流有软件配置和测试配置。 软件配置由需求规格说明、设计说明、 软件配置

由需求规格说明、设计说明、源 代码等组成; 代码等组成; 测试配置包括测试计划、测试用例( 测试配置包括测试计划、测试用例(其中 包括预期的结果)、测试工具等组成。 包括预期的结果)、测试工具等组成。 )、测试工具等组成

测试结果评价经常发现严重的错误并需要修改软件, 经常发现严重的错误并需要修改软件, 则软件的质量和可靠性一定不高, 则软件的质量和可靠性一定不高,需要 进一步测试; 进一步测试; 如果测试所发现的错误不多且易于改正, 如果测试所发现的错误不多且易于改正, 软件功能看起来也较完善, 软件功能看起来也较完善,则需考虑两 种可能: 种可能: 1)软件质量和可靠性确实令人满意; )软件质量和可靠性确实令人满意; 2)测试不全面,很可能还潜伏着严重错误; )测试不全面,很可能还潜伏着严重错误; 如果测试过程没有发现任何错误,则很 如果测试过程没有发现任何错误, 有可能是测试配置不合理。 有可能是测试配置不合理。

软件测试中常见的错误类型按照错误的影响和造成的后果进行分类, 按照错误的影响和造成的后果进行分类, 可分为:较小错误,中等错误, 可分为:较小错误,中等错误,较严重 错误,严重错误,非常严重的错误, 错误,严重错误,非常严重的错误,最 严重的错误。 严重的错误。 按照软件生存周期各个阶段分类, 按照软件生存周期各个阶段分类,可分 问题定义错误、 为:问题定义错误、需求分析规格说明 错误、设计错误、编码错误等等。 错误、设计错误、编码错误等等。 这里重点介绍一种按照错误的性质和范 围进行分类的方法, 围进行分类的方法,可以将错误分为如 下几类: 下几类:

按照错误的性质和范围进行分类 1.功能错误 . 需求规格说明错误。 ①需求规格说明错误。主要是指其中有 错误、多余或遗漏的功能, 错误、多余或遗漏的功能,有二义性 或自相矛盾。 或自相矛盾。 设计实现错误。 ②设计实现错误。设计或实现的功能不 是规格说明或用户所要求的功能。 是规格说明或用户所要求的功能。

按照错误的性质和范围进行分类2.系统错误 . 外部接口错误。如与打印机的接口错误。 ①外部接口错误。如与打印机的接口错误。 内部接口错误。 ②内部接口错误。指各程序模块间的联系存在错 如输入/输出 数据保护、子程序访问等。 输出、 误。如输入 输出、数据保护、子程序访问等。 硬件结构错误。如错误地理解I/O指令 指令、 ③硬件结构错误。如错误地理解 指令、中断 处理、设备启动和初始化等而引起的错误。

处理、设备启动和初始化等而引起的错误。 软件结构错误。 ④软件结构错误。由于软件结构不合理或不清晰 所引起的错误。往往在系统满载时才能发现。 所引起的错误。往往在系统满载时才能发现。 操作系统错误。 ⑤操作系统错误。该类错误是由于不了解操作系 统而引起的,操作系统本身也有错误。 统而引起的,操作系统本身也有错误。 控制与顺序错误。包括事件的时间顺序不正确、 ⑥控制与顺序错误。包括事件的时间顺序不正确、 等待一个不可能发生的事件等等。 等待一个不可能发生的事件等等。 资源管理错误。既资源使用不当。资源死锁等。 ⑦资源管理错误。既资源使用不当。资源死锁等。

按照错误的性质和范围进行分类3.加工错误(算法错误) .加工错误(算法错误) 计算与操作错误。指计算、 ①计算与操作错误。指计算、函数求值和一般 操作过程中的错误。 操作过程中的错误。 初始化错误。如忘记了初始化工作区、 ②初始化错误。如忘记了初始化工作区、数据 错误地对循环变量赋初值, 区,错误地对循环变量赋初值,不正确的初 始化等等。 始化等等。 局部控制和次序错误。如遗漏路径、 ③局部控制和次序错误。如遗漏路径、不可达 到的代码段、循环嵌套或终止条件不正确、 到的代码段、循环嵌套或终止条件不正确、 死循环等等。 死循环等等。 逻辑错误。如多分支、判断条件不正确等。 ④逻辑错误。如多分支、判断条件不正确等。

按照错误的性质和范围进行分类4.数据错误 . 动态数据错误。 ①动态数据错误。 静态数据错误。 ②静态数据错误。静态数据指直接或间接地出现 在程序或数据库中的数据, 在程序或数据库中的数据,其内容和格式都是 固定的。因此在内容或格式上都可能存在错误。 固定的。因此在内容或格式上都可能存在错误。 ③数据内容错误。是指由于内容被破坏或被错误 数据内容错误。 地解释而造成的错误。 地解释而造成的错误。 数据结构错误。 ④数据结构错误。包括数据结构说明错误和数据 结构使用错误。 结构使用错误。 数据属性错误。 ⑤数据属性错误。数据属性是指数据内容的含义 或语义,如整数、字符等。 或语义,如整数、字符等。数据属性错误是指 对数据属性的错误解释和错误使用而导致的错 误。

按照错误的性质和范围进行分类5.代码错误 . 代码错误主要包括语法错误、键入错误、 代码错误主要包括语法错误、键入错误、 对语句的理解错误等。 对语句的理解错误等。 例如, 例如,Myers(1976)指出,美国第一个 ( )指出, 去金星的太空任务的失

败是由于在一个 Fortran do循环中缺少一个逗号。 循环中缺少一个逗号。 循环中缺少一个逗号

软件测试的常用方法1.静态测试 . 静态测试是采用人工检测和计算机辅助静态分 析的方法对程序进行检测。 析的方法对程序进行检测。 人工检测是指靠人工走查程序或评审软件。 人工检测是指靠人工走查程序或评审软件。这 种走查与评审主要针对编码的质量和软件开发 各个阶段的文档, 各个阶段的文档,特别是总体设计和详细设计 阶段的错误。 能发现30%~70%的逻辑设计和 阶段的错误 。 能发现 的逻辑设计和 编码错误。 编码错误。 计算机辅助静态分析是指利用静态分析软件工 具对程序进行静态分析, 具对程序进行静态分析,主要检测变量是否用 参数是否匹配、循环嵌套是否有错、 错、参数是否匹配、循环嵌套是否有错、是否 有死循环和永远执行不到的死代码等等。同时, 有死循环和永远执行不到的死代码等等。同时, 它还可对程序的特性进行分析。 它还可对程序的特性进行分析。

软件测试的常用方法2.动态测试 . 动态测试是指事先设计好一组测试用例, 动态测试是指事先设计好一组测试用例, 然后通过运行程序来发现错误。 然后通过运行程序来发现错误。 动态测试有两种测试方法: 动态测试有两种测试方法: 黑盒测试; 黑盒测试; 白盒测试。 白盒测试。

用黑盒法测试时,必须在所有可 能的输入条件和输出条件中确定测试数 据。是否要对每个数据都进行穷举测试 呢? 例如测试一个程序,需输入 3 个 整数值。微机上,每个整数可能取值有 216 个 , 3 个 整 数 值 的 排 列 组 合 数 为 216×216×216=248≈3×1014 。 假 设 此 程序执行一次为1毫秒,用这些所有的数 据去测试要用1万年!但这还不能算穷举 测试,还要输入一切不合法的数据。可 见,穷举地输入测试数据进行黑盒测试 是不可能的。

白盒测试又称为结构测试或逻辑驱动测试, 此方法是将测试对象比作一个打开的盒子, 它允许测试人员利用程序内部的逻辑结构 和相关信息来设计或选择测试用例,对穿 过软件的逻辑路径进行测试,可以在不同 点检查程序的状态,以确定实际状态与预 期状态是否一致。

表面看来,白盒测试是可以进行完全的测试的,从理论上讲 也应该如此。只要能确定测试模块的所有逻辑路径,并为 每一条逻辑路径设计测试用例,并评价所得到的结果,就 可得到100%正确的程序。但实际测试中,这种穷举法是 无法实现的,因为即使是很小的程序,也可能会出现数目 惊人的逻辑路径。如图所示是一个小程序的流程图。

循 环 小 于 等 于 2

0 次

图中,一个圆圈代表一行源程序代码(或一个语句块)。其 中有五条通路,左边曲线箭头表示执行次数不超过20次循 环。这样的执行路径就有520个,近似为1014个可能的路 径。如果1 ms完成一个测试,由此测试程序需3170年。 由此看出,即使精确地实现了白盒测试,也不能断言测 试过的程序全正确,因为实行穷举测试,由于工作量过大, 需用时间过长,实施起来是不现实的。这就是程序测试的 经济学问题。既然在测试阶段穷举法测试是不可行的,那 么为了节省时间和资源,提高测试效率,就必须精心设计 测试用例。需从大量的可用测试用例中精选出少量的测试 数据,使得采用这些测试数据能够达到最佳的测试效果, 即能高效地、尽可能多地发现隐藏的错误。测试只能发现 错误,并不能保证程序没有错误。

本文来源:https://www.bwwdw.com/article/x711.html

Top