软件工程系统测试
3.软件测试在软件生存周期中横跨两个阶段:模 块和单元测试在编码阶段,综合测试在独立的
测试阶段;
4.软件测试的工作量一般占软件开发总工作量的 40%以上,有的测试成本占到其它步骤总成本 的3—5倍。
2021/3/27
CHENLI
4
软件测试的目标
1. 软件测试是为了发现错误而执行程序的过程; 2. 测试是程序的执行过程,目的在于发现错误;
CHENLI
14
自顶向下集成
方法: 从主控制模块开始,沿着程序的控制层次向
下移动,逐渐把各个模块结合起来。在把附属 于(及最终附属于)主控制模块的那些模块组 装到程序结构中去时,或者使用深度优先的策 略,或者使用宽度优先的策略。
2021/3/27
CHENLI
15
自顶向下集成
把模块结合进软件结构的具体过程由下述4个步骤完成: 第一步,对主控制模块进行测试,测试时用存根程序
2021/3/27
CHENLI
7
软件测试的原则(2)
4.集中测试容易出错的程序段。测试统计结果表明: 一段程序中发现的错误越多,则其中存在错误的概 率也就越大。为了提高测试效率,在深入测试时, 要集中测试那些容易出错的程序段。
5.开发小组与测试小组应分离,二者在思想上、方法 上是不一样的,前者是建设性的,后者是“破坏性” 的。因此二者分离是成立测试小组的基本要求。
2. 局部数据结构
3. 重要的执行通路
2021/3/27
CHENLI
12
4. 出错处理通路
当评价出错处理通路时,应该着重测试下述一 些可能发生的错误:
(1) 对Байду номын сангаас误的描述是难以理解的;
(2) 记下的错误与实际遇到的错误不同;
(3) 在对错误进行处理之前,错误条件已经引起系 统干预;
(4) 对错误的处理不正确;
同。
平行 新旧两个系统同时运行进行比较,避免风险的同时给用户 测试 2对021新/3/系27统一段熟悉的时间。 CHENLI
运行 阶1段1
单元测试
在单元测试期间着重从下述5个方面对模块进行 测试。 1. 模块接口
主要检查下述几个方面:参数的数目、次序、 属性或单位系统与变元是否一致;是否修改了只 作输入用的变元;全局变量的定义和用法在各个 模块中是否一致。
过程 发现错误、改正错误、重新测试的过程; 是一个推理的过程;
方式 执行是有规程的;
测试 由独立的测试组在不了解软件设计的 人员 条件下完成;
工具 大多数测试的执行和设计可由工具支持。
2021/3/27
CHENLI
执行要求程序员进行必要的 推理;
由了解详细设计的程序员完 成;
程序员能用的工具主要是调
系统 将经过测试的子系统装配成一个完整的系统来测试,检验
测试 系统是否确实能实现需求规格说明书中的功能,以及系统的
动态特征是否符合预定要求。系统测试是指整个计算机系统( 包括软硬件)的测试,可与系统的安装和验收相结合进行。
集中测 试阶段
验收 在用户的参与下,把软件系统作为单一的实体进行测试, 验收 测试 使软件系统能满足用户的需要。测试内容与系统测试基本相 阶段
动态测试; (2)动态测试包括:测试用例、执行被测程序和分析执
行结果并发现错误的过程。
2021/3/27
CHENLI
10
软件测试步骤
步骤
测试内容
时间
单元 将每一个模块作为一个单独的测试单元,保证每个模块作 编码
测试 为一个单元能正确运行。
阶段
子系统 将经过单元测试的模块放在一起形成一个子系统来测试, 测试 以测试模块间的接口正确性作为主要任务。
试器。
6
软件测试的原则(1)
1.设计测试用例,要给出测试的预期结果。一个测试用 例,必须由两部分组成:对输入数据的描述及其这 些输入数据所产生的程序预期结果的精确描述。
2.设计非法输入用例。当有非法输入时,测试程序 是否能够拒绝接受那些非法输入并给出提示信息。
3.进行回归测试,对程序的任何修改,使用以前测试 用例,重新进行测试,有助于发现修改程序引起 的新错误。
(5) 描述错误的信息不足以帮助确定造成错误的位 置。
5. 边界条件
2021/3/27
CHENLI
13
集成测试
不论是子系统测试还是系统测试,都兼有检测和组 装两重含义,通常称为集成测试。
由模块组装成程序时有两种方法: 1、非渐增式测试方法 2、渐增式测试方法: a.自顶向下 b.自底向上。
2021/3/27
软件实现
软件测试
软件测试基本概念 软件测试技术 实例
2021/3/27
CHENLI
2
软件测试基本概念
什么是软件测试?目标是什么? 测试步骤 测试阶段信息流
2021/3/27
CHENLI
3
软件测试的概念
1.软件测试是按照特定的规则,发现软件错误的 过程;
2.软件测试是对软件规格说明、设计和编码的最 后复审;
代替所有直接附属于主控制模块的模块; 第二步,根据选定的结合策略(深度优先或宽度优先),
每次用一个实际模块代换一个存根程序(新结合进 来的模块往往又需要新的存根程序); 第三步,在结合进一个模块的同时进行测试;
第四步,为了保证加入模块没有引进新的错误,可能
需要进行回归测试(即,全部或部分地重复以前做
3. 软件测试中需要数据,即为测试而精心设计的测试用 例,利用测试用例去运行程序,帮助发现程序错误;
4. 一个好的测试用例在于能发现至今未发现的错误;
5. 一个成功的测试是发现了至今未发现的错误的测试。
6. 软件测试绝对不是要证明程序的正确性, 也证明不 了程序的正确性.
2021/3/27
CHENLI
5
软件测试与软件调试的区别
内容
软件测试
软件调试
目的 从一个侧面证明程序员的失败;
方法 从已知条件开始,使用预先定义的程序, 且有预知的结果,不可预见的仅是程序是 否通过测试;
证明程序员的正确;
从不可知内部条件开始,除 统计性调试外,结果是不可 预见的;
约束 有计划并且要进行测试设计;
不受时间约束;
2021/3/27
CHENLI
8
软件测试方法和技术
软件测试
人工测试 (代码复审)
机器测试 (动态测试)
代码会审 走查和排练 办公桌检查
白盒测试技术 黑盒测试技术
2021/3/27
CHENLI
9
软件测试方法和技术
1.人工测试 代码复审采用人工方式进行,目的在于检查程序
的静态错误。
2.机器测试 (1)在设定的测试数据上执行被测程序的过程,也称为