软件工程第七章软件测试
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
参数是否正确; ▪ 全局量的定义在各模块中是否一致;
35
❖在做内外存交换时要考虑:
▪ 文件属性是否正确;
▪ OPEN与CLOSE语句是否正确; ▪ 缓冲区容量与记录长度是否匹配; ▪ 在进行读写操作之前是否打开了文件; ▪ 在结束文件处理时是否关闭了文件; ▪ 正文书写/输入错误, ▪ I/O错误是否检查并做了处理。
设计说明书和源程序清单,了解该模 块的I/O条件和模块的逻辑结构,主要 采用白盒测试的测试用例,辅之以黑 盒测试的测试用例,使之对任何合理 的输入和不合理的输入,都能鉴别和 响应。
33
34
(1) 模块接口测试 ❖在单元测试的开始,应对通过被测模块
的数据流进行测试。测试项目包括: ▪ 调用本模块的输入参数是否正确; ▪ 本模块调用子模块时输入给子模块的
❖如果测试发现不了错误,可以肯定,测 试配置考虑得不够细致充分,错误仍然 潜伏在软件中。
16
测试与软件开发各阶段的关系
❖软件开发过程是一个自顶向下,逐步细 化的过程
❖软件计划阶段定义软件作用域 ❖软件需求分析建立软件信息域、功能和
性能需求、约束等 ❖软件设计 ❖把设计用某种程序设计语言转换成程序
代码
6
❖ 换言之,测试的目的是
▪ 想以最少的时间和人力,系统地找 出软件中潜在的各种错误和缺陷。 如果我们成功地实施了测试,我们 就能够发现软件中的错误。
▪ 测试的附带收获是,它能够证明软 件的功能和性能与需求说明相符合。
▪ 实施测试收集到的测试结果数据为 可靠性分析提供了依据。
▪ 测试不能表明软件中不存在错误, 它只能说明软件中存在错误。
对于白盒测试,即使每条路径都测试了,程序仍 可能有错。 例如要求编写一个升序的程序,错编成 降序程序(功能错), 就是穷举路径测试也无法发 现。再如由于疏忽漏写了路径, 白盒测试也发现不 了。
27
所以,黑盒法和白盒法都不能使测试达到彻底。为 了用有限的测试发现更多的错误,需精心设计测试用 例。黑盒法、 白盒法是设计测试用例的基本策略, 每一种方法对应着多种设计测试用例的技术,每种技 术可达到一定的软件质量标准要求。
31
单元测试 (Unit Testing)
❖单元测试又称模块测试,是针对软件设 计的最小单位 ─ 程序模块,进行正确性 检验的测试工作。其目的在于发现各模 块内部可能存在的各种差错。
❖单元测试需要从程序的内部结构出发设 计测试用例。多个模块可以平行地独立 进行单元测试。
32
1. 单元测试的内容 ❖在单元测试时,测试者需要依据详细
36
(2) 局部数据结构测试 ❖不正确或不一致的数据类型说明 ❖使用尚未赋值或尚未初始化的变量 ❖错误的初始值或错误的缺省值 ❖变量名拼写错或书写错 ❖不一致的数据类型 ❖全局数据对模块的影响
37
(3) 路径测试
❖选择适当的测试用例,对模块中重要的 执行路径进行测试。
❖应当设计测试用例查找由于错误的计算、 不正确的比较或不正常的控制流而导致 的错误。
▪ 驱动模块 (driver) ▪ 存根模块 (stub) ── 存根模块
41
42
❖如果一个模块要完成多种功能,可以将 这个模块看成由几个小程序组成。必须 对其中的每个小程序先进行单元测试要 做的工作,对关键模块还要做性能测试。
❖对支持某些标准规程的程序,更要着手 进行互联测试。有人把这种情况特别称 为模块测试,以区别单元测试。
源自文库28
Contents
软件危机 (1.2) 7.3 软件测试过程
29
30
❖集成测试把已测试过的模块组装起来, 主要对与设计相关的软件体系结构的构 造进行测试。
❖验收测试(确认测试)则是要检查已实 现的软件是否满足了需求规格说明中确 定了的各种需求,以及软件配置是否完 全、正确。
❖系统测试把已经经过确认的软件纳入实 际运行环境中,与其它系统成份组合在 一起进行测试。
4
(1) 软件测试是为了发现错误而执行程序的过程。 (2) 好的测试用例能够发现至今尚未发现的错误。 (3) 成 功的测试是发现至今尚未发现的错误的测试。
因此,测试阶段的基本任务应该是根据软件开发 各阶段的文档资料和程序的内部结构,精心设计一组 “高产”的测试用例,利用这些用例执行程序,找出 软件中潜在的各种错误和缺陷。
11
12
测试信息流
13
测试信息流
❖软件配置:软件需求规格说明、软件 设计规格说明、源代码等;
❖测试配置:测试计划、测试用例、测 试程序等;
❖测试工具:测试数据自动生成程序、 静态分析程序、动态分析程序、测试 结果分析程序、以及驱动测试的测试 数据库等等。
14
❖测试结果分析:比较实测结果与预期 结果,评价错误是否发生。
1.
该方法把被测试对象看成一个黑盒子,测试人员 完全不考虑程序的内部结构和处理过程,只在软件的 接口处进行测试, 依据需求说明书,检查程序是否 满足功能要求。因此, 黑盒测试又称为功能测试或 数据驱动测试。
23
通过黑盒测试主要发现以下错误: (1) 是否有不正确或遗漏了的功能。 (2) 在接口上,能否正确地接受输入数据, 能 否产生正确的输出信息。 (3) 访问外部信息是否有错。 (4) 性能上是否满足要求等。
24
用黑盒法测试时,必须在所有可能的输入条件和输 出条件中确定测试数据。是否要对每个数据都进行穷 举测试呢?
例如测试一个程序,需输入 3 个整数值。微机上,每 个整数可能取值有216个,3个整数值的排列组合数为 216×216×216=248≈3×1014。假设此程序执行一次为 一毫秒, 用这些所有的数据去测试要用1万年!但这 还不能算穷举测试, 还要输入一切不合法的数据。可 见,穷举地输入测试数据进行黑盒测试是不可能的。
44
▪ 各个子功能组合起来,能否达到预期 要求的父功能;
▪ 全局数据结构是否有问题; ▪ 单个模块的误差累积起来,是否会放
大,从而达到不能接受的程度。 在单元测试的同时可进行集成测试, 发现并排除在模块连接中可能出现 的问题,最终构成要求的软件系统。
45
❖子系统的集成测试特别称为部件测试, 它所做的工作是要找出组装后的子系统 与系统需求规格说明之间的不一致。
25
2.
该方法把测试对象看作一个打开的盒子, 测试人 员须了解程序的内部结构和处理过程,以检查处理过 程的细节为基础, 对程序中尽可能多的逻辑路径进行 测试,检验内部控制结构和数据结构是否有错, 实际 的运行状态与预期的状态是否一致。
26
白盒法也不可能进行穷举测试,企图遍历所有的路 径, 往往是做不到的。如测试一个循环20次的嵌套 的IF语句, 循环体中有5条路径。测试这个程序的执 行路径为520, 约为1014 , 如果每毫秒完成一个路 径的测试, 测试此程序需3170年!
❖排错(调试):对已经发现的错误进行 错误定位和确定出错性质,并改正这 些错误,同时修改相关的文档。
❖修正后的文档再测试:直到通过测试 为止。
15
❖通过收集和分析测试结果数据,对软件 建立可靠性模型
❖利用可靠性分析,评价软件质量:
▪ 软件的质量和可靠性达到可以接 受的程度;
▪ 所做的测试不足以发现严重的错 误;
17
❖测试过程是依相反顺序安排的自底向上, 逐步集成的过程。
18
Contents
7.2 软件软测件试危方机法(1与.2技) 术
19
7.2.1
1. 静态测试
静态测试是指被测试程序不在机器上运行,而是 采用人工检测和计算机辅助静态分析的手段对程序进 行检测,
(1) 人工测试:是指不依靠计算机而靠人工审查程 序或评审软件。人工审查程序偏重于编码质量的检验, 而软件审查除了审查编码还要对各阶段的软件产品进 行检验。
5
软件测试的目的
❖基于不同的立场,存在着两种完全不同 的测试目的。
❖从用户的角度出发,普遍希望通过软件 测试暴露软件中隐藏的错误和缺陷,以 考虑是否可接受该产品。
❖从软件开发者的角度出发,则希望测试 成为表明软件产品中不存在错误的过程, 验证该软件已正确地实现了用户的要求, 确立人们对软件质量的信心。
❖对基本执行路径和循环进行测试可以发 现大量的路径错误。
38
(4) 错误处理测试 ❖出错的描述是否难以理解 ❖出错的描述是否能够对错误定位 ❖显示的错误与实际的错误是否相符 ❖对错误条件的处理正确与否 ❖在对错误进行处理之前,错误条件是否
已经引起系统的干预等
39
(5) 边界测试 ❖注意数据流、控制流中刚好等于、大于
6. 严格执行测试计划,排除测试的随意性。 7. 应当对每一个测试结果做全面检查。 8. 妥善保存测试计划,测试用例,出错统
计和最终分析报告,为维护提供方便。
9
软件测试的对象
❖软件测试并不等于程序测试。软件测试 应贯穿于软件定义与开发的整个期间。
❖需求分析、概要设计、详细设计以及程 序编码等各阶段所得到的文档,包括需 求规格说明、概要设计规格说明、详细 设计规格说明以及源程序,都应成为软 件测试的对象。
7
软件测试的原则
1. 应当把“尽早地和不断地进行软件测 试”作为软件开发者的座右铭。
2. 测试用例应由测试输入数据和对应的 预期输出结果这两部分组成。
3. 程序员应避免检查自己的程序。 4. 在设计测试用例时,应包括合理的输
入条件和不合理的输入条件。
8
5. 充分注意测试中的群集现象。 经验表明,测试后程序中残存的错误数 目与该程序中已发现的错误数目成正比。
❖通常,把模块组装成为系统的方式有两 种 ▪ 一次性组装方式 ▪ 增殖式组装方式
46
1. 一次性组装方式 ❖它是一种非增殖式组装方式。也叫做整
20
(2) 计算机辅助静态分析: 指利用静态分析工具 对被测试程序进行特性分析,从程序中提取一些信息, 以便检查程序逻辑的各种缺陷和可疑的程序构造。如 用错的局部量和全程量、不匹配参数、不适当的循环 嵌套和分支嵌套、 潜在的死循环及不会执行到的代码 等。还可能提供一些间接涉及程序欠缺的信息、 各种 类型的语句出现的次数、变量和常量的引用表、标识 符的使用方式、过程的调用层次及违背编码规则等。 静态分析中还可以用符号代替数值求得程序结果, 以 便对程序进行运算规律的检验。
43
集成测试(Integrated Testing)
❖集成测试 (集成测试、联合测试) ❖通常,在单元测试的基础上,需要将所
有模块按照设计要求组装成为系统。这 时需要考虑的问题是:
▪ 在把各个模块连接起来的时侯,穿越
模块接口的数据是否会丢失; ▪ 一个模块的功能是否会对另一个模块
的功能产生不利的影响;
10
❖为把握软件开发各个环节的正确性,需 要进行各种确认和验证工作。
❖确认(Validation),是一系列的活动和过 程,目的是想证实在一个给定的外部环 境中软件的逻辑正确性。
▪ 需求规格说明确认 ▪ 程序确认 (静态确认、动态确认)
❖验证(Verification),试图证明在软件生 存期各个阶段,以及阶段间的逻辑协调 性、完备性和正确性。
软件工程第七章软件测试
7.1软件测试概述
7.1.1软件测试的目的
统计资料表明,测试的工作量约占整个项目开发 工作量的40%左右,对于关系到人的生命安全的软 件(如飞机飞行自动控制系统),测试的工作量还要 成倍增加。
那么,为什么要花这么多代价进行测试? 其目的何 在? 它是“说明程序能正确地执行它应有的功能”, 还是“表明程序没有错误”。如果是这样一个目的, 就要朝着“证明程序正确”这个目标靠拢,无意识地 选择一些不易暴露错误的例子。因此G.J.Myers对软 件测试的目的提出了以下观点:
21
2.
动态测试指通过运行程序发现错误。一般意义上 的测试大多是指动态测试。为使测试发现更多的错误, 需要运用一些有效的方法。 测试任何产品,一般有 两种方法:一是测试产品的功能,二是测试产品内部 结构及处理过程。对软件产品进行动态测试时, 也 用这两种方法,分别称为黑盒测试法和白盒测试法。
22
7.2.2
或小于确定的比较值时出错的可能性。 对这些地方要仔细地选择测试用例,认 真加以测试。 ❖如果对模块运行时间有要求的话,还要 专门进行关键路径测试,以确定最坏情 况下和平均意义下影响模块运行时间的 因素。
40
2. 单元测试的步骤 ❖模块并不是一个独立的程序,在考虑
测试模块时,同时要考虑它和外界的 联系,用一些辅助模块去模拟与被测 模块相联系的其它模块。
35
❖在做内外存交换时要考虑:
▪ 文件属性是否正确;
▪ OPEN与CLOSE语句是否正确; ▪ 缓冲区容量与记录长度是否匹配; ▪ 在进行读写操作之前是否打开了文件; ▪ 在结束文件处理时是否关闭了文件; ▪ 正文书写/输入错误, ▪ I/O错误是否检查并做了处理。
设计说明书和源程序清单,了解该模 块的I/O条件和模块的逻辑结构,主要 采用白盒测试的测试用例,辅之以黑 盒测试的测试用例,使之对任何合理 的输入和不合理的输入,都能鉴别和 响应。
33
34
(1) 模块接口测试 ❖在单元测试的开始,应对通过被测模块
的数据流进行测试。测试项目包括: ▪ 调用本模块的输入参数是否正确; ▪ 本模块调用子模块时输入给子模块的
❖如果测试发现不了错误,可以肯定,测 试配置考虑得不够细致充分,错误仍然 潜伏在软件中。
16
测试与软件开发各阶段的关系
❖软件开发过程是一个自顶向下,逐步细 化的过程
❖软件计划阶段定义软件作用域 ❖软件需求分析建立软件信息域、功能和
性能需求、约束等 ❖软件设计 ❖把设计用某种程序设计语言转换成程序
代码
6
❖ 换言之,测试的目的是
▪ 想以最少的时间和人力,系统地找 出软件中潜在的各种错误和缺陷。 如果我们成功地实施了测试,我们 就能够发现软件中的错误。
▪ 测试的附带收获是,它能够证明软 件的功能和性能与需求说明相符合。
▪ 实施测试收集到的测试结果数据为 可靠性分析提供了依据。
▪ 测试不能表明软件中不存在错误, 它只能说明软件中存在错误。
对于白盒测试,即使每条路径都测试了,程序仍 可能有错。 例如要求编写一个升序的程序,错编成 降序程序(功能错), 就是穷举路径测试也无法发 现。再如由于疏忽漏写了路径, 白盒测试也发现不 了。
27
所以,黑盒法和白盒法都不能使测试达到彻底。为 了用有限的测试发现更多的错误,需精心设计测试用 例。黑盒法、 白盒法是设计测试用例的基本策略, 每一种方法对应着多种设计测试用例的技术,每种技 术可达到一定的软件质量标准要求。
31
单元测试 (Unit Testing)
❖单元测试又称模块测试,是针对软件设 计的最小单位 ─ 程序模块,进行正确性 检验的测试工作。其目的在于发现各模 块内部可能存在的各种差错。
❖单元测试需要从程序的内部结构出发设 计测试用例。多个模块可以平行地独立 进行单元测试。
32
1. 单元测试的内容 ❖在单元测试时,测试者需要依据详细
36
(2) 局部数据结构测试 ❖不正确或不一致的数据类型说明 ❖使用尚未赋值或尚未初始化的变量 ❖错误的初始值或错误的缺省值 ❖变量名拼写错或书写错 ❖不一致的数据类型 ❖全局数据对模块的影响
37
(3) 路径测试
❖选择适当的测试用例,对模块中重要的 执行路径进行测试。
❖应当设计测试用例查找由于错误的计算、 不正确的比较或不正常的控制流而导致 的错误。
▪ 驱动模块 (driver) ▪ 存根模块 (stub) ── 存根模块
41
42
❖如果一个模块要完成多种功能,可以将 这个模块看成由几个小程序组成。必须 对其中的每个小程序先进行单元测试要 做的工作,对关键模块还要做性能测试。
❖对支持某些标准规程的程序,更要着手 进行互联测试。有人把这种情况特别称 为模块测试,以区别单元测试。
源自文库28
Contents
软件危机 (1.2) 7.3 软件测试过程
29
30
❖集成测试把已测试过的模块组装起来, 主要对与设计相关的软件体系结构的构 造进行测试。
❖验收测试(确认测试)则是要检查已实 现的软件是否满足了需求规格说明中确 定了的各种需求,以及软件配置是否完 全、正确。
❖系统测试把已经经过确认的软件纳入实 际运行环境中,与其它系统成份组合在 一起进行测试。
4
(1) 软件测试是为了发现错误而执行程序的过程。 (2) 好的测试用例能够发现至今尚未发现的错误。 (3) 成 功的测试是发现至今尚未发现的错误的测试。
因此,测试阶段的基本任务应该是根据软件开发 各阶段的文档资料和程序的内部结构,精心设计一组 “高产”的测试用例,利用这些用例执行程序,找出 软件中潜在的各种错误和缺陷。
11
12
测试信息流
13
测试信息流
❖软件配置:软件需求规格说明、软件 设计规格说明、源代码等;
❖测试配置:测试计划、测试用例、测 试程序等;
❖测试工具:测试数据自动生成程序、 静态分析程序、动态分析程序、测试 结果分析程序、以及驱动测试的测试 数据库等等。
14
❖测试结果分析:比较实测结果与预期 结果,评价错误是否发生。
1.
该方法把被测试对象看成一个黑盒子,测试人员 完全不考虑程序的内部结构和处理过程,只在软件的 接口处进行测试, 依据需求说明书,检查程序是否 满足功能要求。因此, 黑盒测试又称为功能测试或 数据驱动测试。
23
通过黑盒测试主要发现以下错误: (1) 是否有不正确或遗漏了的功能。 (2) 在接口上,能否正确地接受输入数据, 能 否产生正确的输出信息。 (3) 访问外部信息是否有错。 (4) 性能上是否满足要求等。
24
用黑盒法测试时,必须在所有可能的输入条件和输 出条件中确定测试数据。是否要对每个数据都进行穷 举测试呢?
例如测试一个程序,需输入 3 个整数值。微机上,每 个整数可能取值有216个,3个整数值的排列组合数为 216×216×216=248≈3×1014。假设此程序执行一次为 一毫秒, 用这些所有的数据去测试要用1万年!但这 还不能算穷举测试, 还要输入一切不合法的数据。可 见,穷举地输入测试数据进行黑盒测试是不可能的。
44
▪ 各个子功能组合起来,能否达到预期 要求的父功能;
▪ 全局数据结构是否有问题; ▪ 单个模块的误差累积起来,是否会放
大,从而达到不能接受的程度。 在单元测试的同时可进行集成测试, 发现并排除在模块连接中可能出现 的问题,最终构成要求的软件系统。
45
❖子系统的集成测试特别称为部件测试, 它所做的工作是要找出组装后的子系统 与系统需求规格说明之间的不一致。
25
2.
该方法把测试对象看作一个打开的盒子, 测试人 员须了解程序的内部结构和处理过程,以检查处理过 程的细节为基础, 对程序中尽可能多的逻辑路径进行 测试,检验内部控制结构和数据结构是否有错, 实际 的运行状态与预期的状态是否一致。
26
白盒法也不可能进行穷举测试,企图遍历所有的路 径, 往往是做不到的。如测试一个循环20次的嵌套 的IF语句, 循环体中有5条路径。测试这个程序的执 行路径为520, 约为1014 , 如果每毫秒完成一个路 径的测试, 测试此程序需3170年!
❖排错(调试):对已经发现的错误进行 错误定位和确定出错性质,并改正这 些错误,同时修改相关的文档。
❖修正后的文档再测试:直到通过测试 为止。
15
❖通过收集和分析测试结果数据,对软件 建立可靠性模型
❖利用可靠性分析,评价软件质量:
▪ 软件的质量和可靠性达到可以接 受的程度;
▪ 所做的测试不足以发现严重的错 误;
17
❖测试过程是依相反顺序安排的自底向上, 逐步集成的过程。
18
Contents
7.2 软件软测件试危方机法(1与.2技) 术
19
7.2.1
1. 静态测试
静态测试是指被测试程序不在机器上运行,而是 采用人工检测和计算机辅助静态分析的手段对程序进 行检测,
(1) 人工测试:是指不依靠计算机而靠人工审查程 序或评审软件。人工审查程序偏重于编码质量的检验, 而软件审查除了审查编码还要对各阶段的软件产品进 行检验。
5
软件测试的目的
❖基于不同的立场,存在着两种完全不同 的测试目的。
❖从用户的角度出发,普遍希望通过软件 测试暴露软件中隐藏的错误和缺陷,以 考虑是否可接受该产品。
❖从软件开发者的角度出发,则希望测试 成为表明软件产品中不存在错误的过程, 验证该软件已正确地实现了用户的要求, 确立人们对软件质量的信心。
❖对基本执行路径和循环进行测试可以发 现大量的路径错误。
38
(4) 错误处理测试 ❖出错的描述是否难以理解 ❖出错的描述是否能够对错误定位 ❖显示的错误与实际的错误是否相符 ❖对错误条件的处理正确与否 ❖在对错误进行处理之前,错误条件是否
已经引起系统的干预等
39
(5) 边界测试 ❖注意数据流、控制流中刚好等于、大于
6. 严格执行测试计划,排除测试的随意性。 7. 应当对每一个测试结果做全面检查。 8. 妥善保存测试计划,测试用例,出错统
计和最终分析报告,为维护提供方便。
9
软件测试的对象
❖软件测试并不等于程序测试。软件测试 应贯穿于软件定义与开发的整个期间。
❖需求分析、概要设计、详细设计以及程 序编码等各阶段所得到的文档,包括需 求规格说明、概要设计规格说明、详细 设计规格说明以及源程序,都应成为软 件测试的对象。
7
软件测试的原则
1. 应当把“尽早地和不断地进行软件测 试”作为软件开发者的座右铭。
2. 测试用例应由测试输入数据和对应的 预期输出结果这两部分组成。
3. 程序员应避免检查自己的程序。 4. 在设计测试用例时,应包括合理的输
入条件和不合理的输入条件。
8
5. 充分注意测试中的群集现象。 经验表明,测试后程序中残存的错误数 目与该程序中已发现的错误数目成正比。
❖通常,把模块组装成为系统的方式有两 种 ▪ 一次性组装方式 ▪ 增殖式组装方式
46
1. 一次性组装方式 ❖它是一种非增殖式组装方式。也叫做整
20
(2) 计算机辅助静态分析: 指利用静态分析工具 对被测试程序进行特性分析,从程序中提取一些信息, 以便检查程序逻辑的各种缺陷和可疑的程序构造。如 用错的局部量和全程量、不匹配参数、不适当的循环 嵌套和分支嵌套、 潜在的死循环及不会执行到的代码 等。还可能提供一些间接涉及程序欠缺的信息、 各种 类型的语句出现的次数、变量和常量的引用表、标识 符的使用方式、过程的调用层次及违背编码规则等。 静态分析中还可以用符号代替数值求得程序结果, 以 便对程序进行运算规律的检验。
43
集成测试(Integrated Testing)
❖集成测试 (集成测试、联合测试) ❖通常,在单元测试的基础上,需要将所
有模块按照设计要求组装成为系统。这 时需要考虑的问题是:
▪ 在把各个模块连接起来的时侯,穿越
模块接口的数据是否会丢失; ▪ 一个模块的功能是否会对另一个模块
的功能产生不利的影响;
10
❖为把握软件开发各个环节的正确性,需 要进行各种确认和验证工作。
❖确认(Validation),是一系列的活动和过 程,目的是想证实在一个给定的外部环 境中软件的逻辑正确性。
▪ 需求规格说明确认 ▪ 程序确认 (静态确认、动态确认)
❖验证(Verification),试图证明在软件生 存期各个阶段,以及阶段间的逻辑协调 性、完备性和正确性。
软件工程第七章软件测试
7.1软件测试概述
7.1.1软件测试的目的
统计资料表明,测试的工作量约占整个项目开发 工作量的40%左右,对于关系到人的生命安全的软 件(如飞机飞行自动控制系统),测试的工作量还要 成倍增加。
那么,为什么要花这么多代价进行测试? 其目的何 在? 它是“说明程序能正确地执行它应有的功能”, 还是“表明程序没有错误”。如果是这样一个目的, 就要朝着“证明程序正确”这个目标靠拢,无意识地 选择一些不易暴露错误的例子。因此G.J.Myers对软 件测试的目的提出了以下观点:
21
2.
动态测试指通过运行程序发现错误。一般意义上 的测试大多是指动态测试。为使测试发现更多的错误, 需要运用一些有效的方法。 测试任何产品,一般有 两种方法:一是测试产品的功能,二是测试产品内部 结构及处理过程。对软件产品进行动态测试时, 也 用这两种方法,分别称为黑盒测试法和白盒测试法。
22
7.2.2
或小于确定的比较值时出错的可能性。 对这些地方要仔细地选择测试用例,认 真加以测试。 ❖如果对模块运行时间有要求的话,还要 专门进行关键路径测试,以确定最坏情 况下和平均意义下影响模块运行时间的 因素。
40
2. 单元测试的步骤 ❖模块并不是一个独立的程序,在考虑
测试模块时,同时要考虑它和外界的 联系,用一些辅助模块去模拟与被测 模块相联系的其它模块。