软件工程系统测试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

29
测试阶段信息流
30
软件测试技术
设计测试方案是测试阶段的关键技术问题。 测试方案包括具体的测试目的(例如,预定 要测试的具体功能),应该输入的测试数据和预 期的结果。 把测试数据和预期的输出结果称为测试用例。 其中最困难的问题是设计测试用的输入数据。
31
软件测试技术
两种常用的测试方法
白盒测试:结构测试
5
软件测试与软件调试的区别
内容 软件测试 软件调试 证明程序员的正确; 从不可知内部条件开始,除 统计性调试外,结果是不可 预见的; 不受时间约束; 是一个推理的过程; 目的 从一个侧面证明程序员的失败; 方法 从已知条件开始,使用预先定义的程序, 且有预知的结果,不可预见的仅是程序是 否通过测试; 约束 有计划并且要进行测试设计; 过程 发现错误、改正错误、重新测试的过程;
软件实现
软件测试
软件测试基本概念
软件测试技术
实例
2
软件测试基本概念
什么是软件测试?目标是什么? 测试步骤 测试阶段信息流
3
软件测试的概念
1.软件测试是按照特定的规则,发现软件错误的 过程; 2.软件测试是对软件规格说明、设计和编码的最 后复审; 3.软件测试在软件生存周期中横跨两个阶段:模 块和单元测试在编码阶段,综合测试在独立的 测试阶段; 4.软件测试的工作量一般占软件开发总工作量的 40%以上,有的测试成本占到其它步骤总成本的 3—5倍。
13
集成测试

不论是子系统测试还是系统测试,都兼有检测和组 装两重含义,通常称为集成测试。 由模块组装成程序时有两种方法: 1、非渐增式测试方法 2、渐增式测试方法: a.自顶向下 b.自底向上。

14
自顶向下集成

方法: 从主控制模块开始,沿着程序的控制层次 向下移动,逐渐把各个模块结合起来。在把附 属于(及最终附属于)主控制模块的那些模块 组装到程序结构中去时,或者使用深度优先的 策略,或者使用宽度优先的策略。
方式 执行是有规程的;
测试 由独立的测试组在不了解软件设计的 人员 条件下完成; 工具 大多数测试的执行和设计可由工具支持。
执行要求程序员进行必要的 推理;
由了解详细设计的程序员完 成; 程序员能用的工具主要是调 6 试器。
软件测试的原则(1)
1.设计测试用例,要给出测试的预期结果。一个测试 用例,必须由两部分组成:对输入数据的描述及其 这些输入数据所产生的程序预期结果的精确描述。 2.设计非法输入用例。当有非法输入时,测试程序 是否能够拒绝接受那些非法输入并给出提示信息。 3.进行回归测试,对程序的任何修改,使用以前测试 用例,重新进行测试,有助于发现修改程序引起 的新错误。
8
软件测试方法和技术
代码会审 人工测试 (代码复审) 软件测试 机器测试 (动态测试) 走查和排练 办公桌检查 白盒测试技术 黑盒测试技术
9
软件测试方法和技术
1.人工测试
代码复审采用人工方式进行,目的在于检查程 序的静态错误。 2.机器测试 (1)在设定的测试数据上执行被测程序的过程,也称 为动态测试; (2)动态测试包括:测试用例、执行被测程序和分析 执行结果并发现错误的过程。
26
确认测试


确认测试也称为验收测试,它的目标是验证软件的 有效性。 验证指的是保证软件正确地实现了某个特定要求的一 系列活动。 确认指的是为了保证软件确实满足了用户需求而进 行的一系列活动。 软件有效性的一个简单定义是: 如果软件的功能和 性能如同用户所合理期待的那样,软件就是有效的。
需求分析阶段产生的软件需求规格说明书,准确地描 述了用户对软件的合理期望,因此是软件有效性的标 准,也是进行确认测试的基础。 27
41
软件测试技术
三.由白盒测试产生的测试实例应具有下列功能:
1.保证在模块中的独立路径最少被检查一次;
2.检查每个逻辑判断的真假两种情况; 3.对每个循环变量的初值、中间值和终止进行检查; 4.检查程序的内部结构是否有效。 四.通过白盒测试发现的错误:
1.程序中的逻辑错误和不正确的假设和条件;
2.没预料到的意外路径;
黑盒测试:功能测试
32
软件测试技术

白盒测试把测试对象看做一个透明的盒子,它 允许测试人员利用程序内部的逻辑结构及有关 信息,设计或选择测试用例,对程序所有逻辑 路径进行测试。 通过在不同点检查程序的状态,确定实际的状 态是否与预期的状态一致。因此白盒测试又称 为结构测试或逻辑驱动测试。

33
软件测试技术
7
软件测试的原则(2)
4.集中测试容易出错的程序段。测试统计结果表明: 一段程序中发现的错误越多,则其中存在错误的概 率也就越大。为了提高测试效率,在深入测试时, 要集中测试那些容易出错的程序段。 5.开发小组与测试小组应分离,二者在思想上、方法 上是不一样的,前者是建设性的,后者是“破坏性” 的。因此二者分离是成立测试小组的基本要求。

黑盒测试是把测试对象看做一个黑盒子,测试 人员完全不考虑程序内部的逻辑结构和内部特 性,只依据程序的需求规格说明书,检查程序 的功能是否符合它的功能说明。 黑盒测试又叫做功能测试或数据驱动测试。

34
软件测试技术

白盒测试对程序模块的所有的执行路径至少测 试一次;对所有的逻辑判定,取“真”与取 “假”的两种情况都至少测试一次; 黑盒测试发现程序中的错误,必须在所有可能 的输入条件和输出条件中确定测试数据,来检 查程序是否都能产生正确的输出。
18
自底向上集成
第四步,去掉驱动程序,沿软件结构自下 向上移动,把子功能族组合起来形成更大 的子功能族。 上述第二步到第四步实质上构成了一个循 环。
19
自底向上结合
20
不同集成测试策略的比较
一般说来,一种方法的优点正好对应于另一种 方法的缺点。
自顶向下测试方法的主要优点:不需要测试驱动 程序,能够在测试阶段的早期实现并验证系统的主 要功能,而且能在早期发现上层模块的接口错误。 自顶向下测试方法的主要缺点:需要存根程序, 可能遇到与此相联系的测试困难,低层关键模块中 的错误发现较晚,而且用这种方法在早期不能充分 展开人力。 可以看出,自底向上测试方法的优缺点与上述 自顶向下测试方法的优缺点刚好相反。
21
不同集成测试策略的比较
混合策略:
(1)改进的自顶向下测试方法。基本上使用自顶向下的测试 方法,但是在早期使用自底向上的方法测试软件中的少 数关键模块。一般的自顶向下方法所具有的优点在这种 方法中也都有,而且能在测试的早期发现关键模块中的 错误;但是,它的缺点也比自顶向下方法多一条,即测 试关键模块时需要驱动程序。 (2) 混合法。对软件结构中较上层使用的自顶向下方法与 对软件结构中较下层使用的自底向上方法相结合。这种 方法兼有两种方法的优点和缺点,当被测试的软件中关 键模块比较多时,这种混合法可能是最好的折衷方法。
10
软件测试步骤
步骤
测试内容
时间 编码 阶段
单元 将每一个模块作为一个单独的测试单元,保证每个模块作 测试 为一个单元能正确运行。 子系统 将经过单元测试的模块放在一起形成一个子系统来测试, 测试 以测试模块间的接口正确性作为主要任务。 系统 将经过测试的子系统装配成一个完整的系统来测试,检验 测试 系统是否确实能实现需求规格说明书中的功能,以及系统的
确认测试( Alpha测试与Beta测试)
Alpha测试由用户在开发者的场所进行, 并且在开发者对用户的“指导”下进行测试。 Alpha测试是在受控的环境中进行的。

Beta测试由软件的最终用户们在一个或多 个客户场所进行。Beta测试是软件在开发者不 能控制的环境中的“真实”应用。
28
软件测试与开发各阶段关系
3.语法检查未发现的印刷或书写错误。
42
一、逻辑覆盖
逻辑覆盖:逻辑覆盖法是以程序内部的逻 辑结构为基础的设计测试用例的技术。从覆 盖源程序语句和路径的详尽程度分析,有以 下不同的覆盖标准: 语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖

35
软件测试技术
白盒方法穷尽测试实例:
36
软件测试技术

包含的不同执行路径数达520条,对 每一条路径进行测试需要1毫秒,假定一 年工作365 × 24小时,要想把所有路径 测试完,需3170年。
37
软件测试技术
黑盒方法穷尽测试实例:
38
软件测试技术

在字长为32位的计算机上运行。若X、Y 取整数,按黑盒方法进行穷举测试,可能采 用的测试数据组:
22
回归测试
回归测试是指重新执行已经做过的测试 的某个子集,以保证软件发生变化时没有带 来非预期的副作用。
23
回归测试
任何成功的测试都会发现错误,而且错误必 须被改正。每当改正软件错误的时候,软件配臵 的某些成分(程序、文档或数据)也被修改了。 回归测试就是用于保证由于调试或其他原因 引起的变化,不会导致非预期的软件行为或额外 错误的测试活动。
集中测 试阶段
动态特征是否符合预定要求。系统测试是指整个计算机系统( 包括软硬件)的测试,可与系统的安装和验收相结合进行。
验收 在用户的参与下,把软件系统作为单一的实体进行测试, 测试 使软件系统能满足用户的需要。测试内容与系统测试基本相 验收 阶段 运行 阶段 11
同。
平行 新旧两个系统同时运行进行比较,避免风险的同时给用户 测试 对新系统一段熟悉的时间。
4
软件测试的目标
1. 软件测试是为了发现错误而执行程序的过程; 2. 测试是程序的执行过程,目的在于发现错误;
Leabharlann Baidu3. 软件测试中需要数据,即为测试而精心设计的测试 用例,利用测试用例去运行程序,帮助发现程序错误;
4. 一个好的测试用例在于能发现至今未发现的错误; 5. 一个成功的测试是发现了至今未发现的错误的测试。 6. 软件测试绝对不是要证明程序的正确性, 也证明不 了程序的正确性.
24
回归测试
回归测试可以通过重新执行全部测试用例的一 个子集人工地进行,也可以使用自动化的捕获回放 工具自动进行。 利用捕获回放工具,软件工程师能够捕获测试 用例和实际运行结果,然后可以回放(即重新执行 测试用例),并且比较软件变化前后所得到的运行 结果。
25
回归测试集是指已执行过的测试用例的子集。 回归测试集包括3类不同的测试用例: (1)检测软件全部功能的代表性测试用例; (2)专门针对可能受修改影响的软件功能的附 加测试; (3)针对被修改过的软件成分的测试。
232×232=264
如果测试一 组数据需要1毫秒,一年工作 365× 24小时,完成所有测试需5亿年。
39
软件测试技术

软件的穷尽测试是不现实的,因此测试 无法证明正确性。

如何花最少的费用,得到最好的测试效 果?------测试用例的设计。
40
软件测试技术
一、白盒测试称为结构测试,测试者了解被测程序的 内部结构和处理过程,对程序的所有逻辑路径进行 测试,在不同点检查程序状态,确定实际状态与预 期状态是否一致。 二、白盒测试从程序的逻辑结构入手,按照一定的原 则,来设计测试用例和测试数据,因此白盒测试法 也称为逻辑覆盖法。
单元测试
在单元测试期间着重从下述5个方面对模块进 行测试。 1. 模块接口 主要检查下述几个方面:参数的数目、次序、 属性或单位系统与变元是否一致;是否修改了只 作输入用的变元;全局变量的定义和用法在各个 模块中是否一致。 2. 局部数据结构 3. 重要的执行通路
12
4. 出错处理通路 当评价出错处理通路时,应该着重测试下 述一些可能发生的错误: (1) 对错误的描述是难以理解的; (2) 记下的错误与实际遇到的错误不同; (3) 在对错误进行处理之前,错误条件已经引起 系统干预; (4) 对错误的处理不正确; (5) 描述错误的信息不足以帮助确定造成错误的 位臵。 5. 边界条件
第四步,为了保证加入模块没有引进新的错误,可能 需要进行回归测试(即,全部或部分地重复以前做 过的测试)。
16
自顶向下结合
17
自底向上集成
实现自底向上结合策略的步骤: 第一步,把低层模块组合成实现某个特定的软件子 功能的族; 第二步,写一个驱动程序(用于测试的控制程序), 协调测试数据的输入和输出; 第三步,对由模块组成的子功能族进行测试;
15
自顶向下集成
把模块结合进软件结构的具体过程由下述4个步骤完成: 第一步,对主控制模块进行测试,测试时用存根程序 代替所有直接附属于主控制模块的模块; 第二步,根据选定的结合策略(深度优先或宽度优先), 每次用一个实际模块代换一个存根程序(新结合进 来的模块往往又需要新的存根程序); 第三步,在结合进一个模块的同时进行测试;
相关文档
最新文档