• 沒有找到結果。

软件⼯工程 (Software Engineering)

N/A
N/A
Protected

Academic year: 2022

Share "软件⼯工程 (Software Engineering)"

Copied!
124
0
0

加載中.... (立即查看全文)

全文

(1)

软件⼯工程

(Software Engineering)

▪  7. 质量量保证

(2)

7.1 软件质量量保证

a. 单元测试

7.2 软件测试策略略

b. 集成测试 c. 系统测试 d. 验收测试

7.3 软件测试技术

a. 软件测试技术 b. ⽩白盒测试

c. ⿊黑盒测试

(3)

Page . 3 Page . 3

质量量相关

审查产品相关的各个方面 质量的过程

元素:过程控制、作业管理等

能力:知识、技能、经验和资历等 软要素:⼈人员廉正、⽂文化、团队合作

建立体系并确保体系按要求 运作,以提供内外部的信任

定义

内容

目标

质量控制 QC

CON QUALITY TROL

(4)

质量量相关

系统监测和评估工程的各个方面,

最大限度提高质量最低标准

原料、文档、产品和组件,以及涉及 产品的管理、生产和检测过程等质量 管理

适合用途:该产品应符合预期的目的 一次成功:错误应该被淘汰

含义

内容

原则

质量保证 QA

ASSU QUALITY RANCE

(5)

Page . 5 Page . 5

质量量相关

质量计划和协调等管理活动 需求、设计模型开发成本测 试计划的成本相关培训成本。

技术审查成本

数据收集和度量估算成本 测试和调试成本

内部失效成本:交付前发现错误的成本 --返工、修复故障模式分析

评估成本

预防成本 失效成本

质量成本:追求质量过程或在履行质量有关活动中引起的费用以及质量不 佳引起的下游费用等所有费用。

(6)

软件质量量相关

软件质量:明确表示是否符合功能和性能要求,明确地记载开发标准和所有 专业开发软件的期望的隐性特点

符合明确规定的功能和性能要求 关

符合明确的开发标准

符合所有软件开发专业的共性、隐性标准,如易用性、可维护性等

(7)

Page . 7 Page . 7

软件质量量相关

审查 •  评审既定标准是否得到遵守。如IEEE、ISO、GB/T等 监督

•  对比文档中描述的执行和实际操作步骤,确保执行过程采取适当步 骤和操作方式

审计

•  确保开发过程使用了恰当的质量控制措施,以符合相应的标准或过 程。

软件质量保证(SQA):遵照一定的软件生产标准、过程和步骤对软件质量进

行评估的活动。

(8)

软件质量量相关

软件质量保证(SQA)活动

编写、审查管理计划,确保计划中相 关过程、程序和标准是适当的,明确 的,具体的,可审核,以及管理计划 的QA

要求是完整的,可测试的

软件概念和启动阶段 需求阶段

确保遵守管理计划中经审批的设计标准 确保所有的软件需求分配给软件组件 保证测试验证方法存在,并且不断更新

保证接口控制文档和标准中指定的内容一致 确保所有修改内容得到解决

确保已批准的设计被置于配置管理之下

体系结构(概要)设计阶段

(9)

Page . 9 Page . 9

软件质量量相关

软件质量保证(SQA)活动

确保批准的设计标准得到遵守 保证分配的模块在详细设计中 确保所有修改内容得到解决

详细设计阶段

实施阶段

确保为所有交付项目进行测试

测试计划和程序有效执行,问题解决与报告 保证测试报告是完整和正确的

验证测试已经完成,软件和文件准备交付 参与测试前再审,并保证所有行动项目完成

集成和测试阶段

设计与构建相一致 所有的交付项目的状态 配置管理活动和软件开发库 不符合项目报告和纠正措施系统 保证最终产品的性能,

及所有交付材料齐备

⽀支持⼯工程和操作阶段

验收和交付阶段

使用较短开发周期来升级和更正软件

(10)

软件评审

同行评估产品技术的含量和质量

管理人员代表评估当前工作,决 定后续安排

外部人员评估软件产品的规范性、

标准化程度、合同履履⾏行行情况等

同行 评审

管理 评审

审计 评审

⼀一个过程或会议期间进⾏行行 的软件产品的审核,由项 目人员、管理人员,用户

、客户、用户代表或其他 有关各方对一个软件产品 进行评论或批准

软件评审 常见形式

(11)

Page . 11 Page . 11

软件可靠性

软件可靠性:是指在给定时间内,特定环境下软件无错运行的概率

指能够避免或者检测重大错误的能力 可靠性

度量:平均失效时间、平均维修时间 评估指标

在某个时间点上程序能够按照需求执行的概率 可用性

度量:失效在维护中所占比重

(12)

7.1 软件质量量保证

a. 单元测试

7.2 软件测试策略略

b. 集成测试 c. 系统测试 d. 验收测试

7.3 软件测试技术

a. 软件测试技术 b. ⽩白盒测试

c. ⿊黑盒测试

(13)

Page . 13 Page . 13

软件测试策略略含义

要求

灵活性:有足够的可塑性来应付所有的大软件系统

格:保证对项目进程进行合理的计划和跟踪管理

软件测 试策略

软件测试策略为软件开发人员、质量保证组织、和客户提供了一个路线图 规定了测试的主要步骤

为保证可行性,须考虑人力成本、时间和资源

故应结合:测试计划、测试用例设计、测试执行、测试结果数据的收集与分析

(14)

软件测试策略略 V 模型

用户需求

需求分析 概要设计

详细设计

程序设计

验收测试

系统测试

集成测试 单元测试

V 模型非常明确地标明了测试过程中存在的不同级别,并且清楚地描

述了这些测试阶段和开发过程期间各阶段对应关系。

(15)

Page . 15 Page . 15

软件测试策略略 V 模型

单元测试

主要目的是验证软件模块 是否按详细设计的规格说 明正确运行

集成测试

主要目的是检查多个模块 间是否按概要设计说明的 方式协同工作。

系统测试

主要目的是验证整个系统 是否满足需求规格说明。

验收测试

从用户的角度检查系统是否 满足合同中定义的需求,以 及以确认产品是否能符合业 务上的需要。

(16)

回归测试

1、测试中,如有缺陷修正、

功能增加,变化的部分必 须再测试。

2、软件的修改可能会导致 新的缺陷及其他问题。为 防止,需再测试。

回归测试:指有选择地重 新测试系统或其组件,

以验证对软件的修改没 有导致不希望出现的影 响,以及系统或组件仍 然符合其指定的需求。

回归测试应该尽量采用 自动化测试。

what

WHY BY

(17)

Page . 17 Page . 17

回归测试

范围

缺陷再测试:重新运行所有发现故障的测试,而新的软件版本已经修正了这 些故障。

功能改变的测试:测试所有修改或修正过的程序部分。

新功能测试:测试所有新集成的程序。

完全回归测试:测试整个系统。

回归测试可以在所有的测试级别执行,并应用于功能和非功能测试中。

(18)

在着手开始测试之前,要

对产品的需求进行量化。 明确指出测试目标。

为每类用户建立描述交互

场景的用例。 建立一个强调“快速循环

测试”的测试计划。

设计一个能够测试自身是

否“强壮”的软件。 在进行测试之前,对软件 进行有效的正式技术审核。

使用正式技术审核来评估

测试策略和测试用例本身。 为测试过程建立一种持续 的改进方法。

(19)

Page . 19 Page . 19

软件测试策略略基本步骤

计划与准备阶

段 执行阶段 返工与回归测 试阶段

制定计划

编写与评审测试用例

编写测试脚本和准备测试环境

搭建测试环境 构造测试数据

执行测试并记录问题 确认问题

撰写测试报告

单元测试、集成测试和系统测试

(20)

7.1 软件质量量保证

a. 单元测试

7.2 软件测试策略略

b. 集成测试 c. 系统测试 d. 验收测试

7.3 软件测试技术

a. 软件测试技术 b. ⽩白盒测试

c. ⿊黑盒测试

(21)

Page . 21 Page . 21

单元测试概念

单元测试 单元内涵

测试方法

主要依据

不同环境含义不同,面向 过程:函数、过程等,面 向对象:类、类中成员函 数等。

针对软件设计的最小单位 ─ 程序模块,进行正确性检验 的测试⼯工作。

单元测试需要从程序的内部 结构出发设计测试用例。多 个模块可以平⾏行行地独⽴立进⾏行行 单元测试。

详细设计

(22)

进⼊入和退出条件

√ 所用测试用例执行通过

单元测试覆盖率达到预定要求

单元测试未被执行的代码进行 正式审查。

√ 被测代码编译链接通过

被测代码静态检查工具检查通过

已完成至少一轮代码检视或走读

√ 单元测试用例的检视通过

√ 单元测试代码写完并通过检测

进入条件 退出条件

(23)

Page . 23 Page . 23

测试内容

单元测试

主要内容

(24)

测试内容

模块接口测试

√ 调用本模块的输入参数是否正确;

√ 本模块调用子模块时输入给子模块 的参数是否正确;

√ 全局量的定义在各模块中是否一致;

√ ⽂文件属性是否正确;

√ OPEN与

CLOSE

语句句是否正确;

√ 缓冲区容量量与记录⻓长度是否匹配;

√ 在进⾏行行读写操作之前是否打开了了⽂文件;

√ 在结束⽂文件处理理时是否关闭了了⽂文件;

√ 正⽂文书写/输⼊入错误,

√ I/

O

错误是否检查并做了了处理理。

内外存交换测试 数据流测试

(25)

Page . 25 Page . 25

测试内容

局部数据

结构测试

不正确或不一致的数据类型说明 使用尚未赋值或尚未初始化的变量

错误的初始值或错误的缺省值

变量量名拼写错或书写错误 不不⼀一致的数据类型

全局数据对模块的影响

(26)

测试内容

对模块中重要的执行路径进行 测试。

查找由于错误的计算、不正确的比 较或不正常的控制流而导致的错误。

对基本执行路径和循环进行测试 可以发现大量的路径错误。

重要 路径

计算、 控制流

基本、 循环

路径测试 内容

(27)

Page . 27 Page . 27

测试内容

在对错误进行处理之前,

错误条件是否已经引起系 统的干预等

对错误条件的处理 正确与否

显示的错误与实际 的错误是否相符 出错的描述是否

能够对错误定位 出错的描述是否

难以理解

错误处理测试

(28)

测试内容

•  注意数据流、控制流中刚好等于、大于或小于确定的比较值时 出错的可能性。对这些地方要仔细地选择测试用例,加以测试。

流边界

•  如果对模块运行时间有要求的话,还要专门进行关键路径测试,

以确定最坏情况下和平均意义下影响模块运行时间的因素。

关键路径

边界测试

(29)

Page . 29 Page . 29

测试⽤用例例设计

详细设计说 明书和源程 序清单

依据

该模块的 I/

O 条件和模 块的逻辑 结构

了解

主:白盒测 试 辅:黑盒测 试

手段

合理和不合 理输入的鉴 别

比较预计和 实际结果

结果

(30)

测试环境搭建

模块并非独立程序,进行测试时,要考虑它和外 界的联系,需用一些辅助模块去做相应模拟

用来模拟被测试模块的上一级模 块,相当于被测模块的主程序。

模拟被测试的模块所调用的模块,

而不是软件产品的组成的部分。

驱动 模块

模块 桩

(31)

目录 Contents

7.1 软件质量量保证

a. 单元测试

7.2 软件测试策略略

b. 集成测试 c. 系统测试 d. 验收测试

7.3 软件测试技术

a. 软件测试技术 b. ⽩白盒测试

c. ⿊黑盒测试

(32)

集成测试概念

含义

⽬目的

主要⽅方法

将软件集成起来后进行测试。

别名:子系统测试、组装测试、部件测试等。

检查诸如两个模块单独运行正常,但集成 起来运行可能出现问题的情况。

自顶向下的集成方法 自底向上的集成方法 SMOKE方法

(33)

Page . 33 Page . 33

⾃自顶向下的集成⽅方法

基本思想:该集成方式将模块按系统程序结构,沿控制层次自顶向下进行集成。

深度优先 广度优先

可以较早地验证主要 的控制和判断点

按深度方向,可首先 实现和验证一个完整 的软件功能。

是桩模块的开发量较大 控制结构清晰稳定;

高层接口变化较小;

底层接口未定义或经常可能被修改;

接口控制组件具有较大的技术风险,

需要尽早被验证;

希望尽早能看到产品的系统功能行为

优点 缺点 适用

(34)

⾃自顶向下的集成⽅方法

S1 S2 S3

A

B C D

S4 S5

A

B C D

1)

(2)

(3)

自顶向下—广度优先方式

B C D

E F

A

E F

A

(35)

Page . 35 Page . 35

⾃自顶向下的集成⽅方法

自顶向下—深度优先方式

A

B C D

E F

A

S1 S2 S3

A

B S2 S3

E A

B C S3

E

1)

2)

3)

4)

(36)

⾃自底向上的集成⽅方法

基本思想:从软件结构最底层的模块开始,按照接口依赖关系逐层向上集成以 进行测试。

每个模块调用其他底 层模块都已经测试,

不需要桩模块;

必须编写驱动模块;

缺陷的隔离和定位不 如自顶向下。

底层接口比较稳定;

高层接口变化比较频繁;

底层组件较早被完成。

优点 缺点 适用

(37)

Page . 37 Page . 37

⾃自底向上的集成⽅方法

A

B C D

E F

d2

C d1

E

d3

F

d4 B

E

d5

F D A

B C D

E F

(38)

应⽤用注意事项

实际⼯工作中,常综合使⽤用:⾃自底向上、⾃自顶向下

如:按进度选择优先测试已经完成的模块

If: 被测模块所调⽤用的模块未完成,⽤用⾃自顶向下,

打桩测试

If: 被测模块的上层模块未完成,⽤用⾃自底向上,

模拟根模块

(39)

Page . 39 Page . 39

SMOKE ⽅方法

将已经转换为代码的软件构件集成为构造(build)。一个 构造包括所有的数据文件、库、可复用的模块以及实现一个 或多个产品功能所需的工程化构件。

基本思想 目 标 方 法

设计暴露影响构造正确地完成其功能的错误的测试。

以发现极有可能造成项目延迟的业务阻塞错误。

每天将该构造与其他构造,及整个软件产品集成,冒烟测试。

两种方法:自顶向下,自底向上,均可。

(40)

测试⽤用例例的设计

02 01

03

04

通过性测试

等价类划分法 场景分析法 状态图法等

失效性测试

边界值法 错误猜测法 因果图法状态图法等

覆盖率

接口覆盖率

接⼝口路路径覆盖率等

注意接口

显性接口:函数调用

(API)

接⼝口隐形接⼝口:消息、

⽹网络协议等

(41)

目录 Contents

7.1 软件质量量保证

a. 单元测试

7.2 软件测试策略略

b. 集成测试 c. 系统测试 d. 验收测试

7.3 软件测试技术

a. 软件测试技术 b. ⽩白盒测试

c. ⿊黑盒测试

(42)

系统测试概念

含义

⽬目的

测试⽅方法

从用户使用的角度进行测试,将完成了集 成测试的系统放在真实的运行环境下进行。

功能确认和验证

黑盒测试

(43)

Page . 43 Page . 43

系统测试必要性

系统测试:软件开发过程必不可少的一环,软件质量保证的最重要环节。

测试内容方面 测试角度方面

面向:外部输入层测试,如不做,

则外部输入层向接口层转换的代 码就没有得到测试。

面向:系统所有组件相互协调,

单元、集成测试未做。

系统测试依据:需求规格说明

单元、集成测试依据:技术规格说明

(44)

系统测试内容

恢复测试

安全测试

配置测试 兼容性测试 本地化测试 文档测试

易用性测试等 压力测试

性能测试

功能测试

(45)

Page . 45 Page . 45

系统测试内容

含 义

•  在规定的一段时间内运 行软件系统的所有功能,

以验证这个软件系统有 无严重错误。

测试方法

•  黑盒测试

错误类型

•  功能错误或遗漏

•  界面错误

•  数据结构或外部数据库 访问错误

•  性能错误

•  初始化

功能测试

(46)

系统测试内容

检查系统是否满足在需求说明 书中规定的性能。

含义

结合

内容

性能 测试 常常要与压力测试结合进行,

硬件和软件检测同时进⾏行行。

响应时间吞吐量

辅助存储区,如缓冲区、工作

区的大小、处理精度等。

(47)

Page . 47 Page . 47

系统测试内容

测试方法 把输入数据速率提高一个数量级,确定输入功能将如何响应 压力测试:在系统运行环境不正常乃至发生故障的情况下,系统可以运行到 何种程度的测试

设计需要占⽤用最⼤大存储量量或其它资源的测试⽤用例例进⾏行行测试。

设计出在虚拟存储管理理机制中引起“颠簸 ” 的测试⽤用例例进⾏行行测试。

设计出会对磁盘常驻内存的数据过度访问的测试⽤用例例进⾏行行测试。

敏敏感性测试:压⼒力力测试的⼀一个变种。在程序有效数据界限内⼀一个⼩小范

围内的⼀一组数据可 能引起极端的或不不平稳的错误处理理出现,或者导

致极度的性能下降。

(48)

系统测试内容

恢复测试:是要证实在克服硬件故障后,系统能否正常地继续进行工作,

并不对系统造成任何损害。

手 段:人工干预等

测试方法 错误探测功能──系统能否发现硬件失效与故障;

设备故障时,能否切换或启动备⽤用的硬件;

故障发⽣生时,能否保护正在运⾏行行的作业和系统状态

系统恢复后,能否从最后记录下来的⽆无错误状态开始继续执⾏行行 作业等 掉电测试:电源中断时,能否保护当时的状态且不不毁坏数据,

然后在电源恢复时从保留留的断点处重新进⾏行行操作

(49)

Page . 49 Page . 49

系统测试内容

安全性测试:是要检验在系统中已经存在的系统安全性、保密性措施是否 发挥作用,有无漏洞。

主要攻击方法

正面、侧面或背面攻击系统中易受损坏的那些部分;

以系统输⼊入为突破⼝口,利利⽤用输⼊入的容错性进⾏行行正⾯面攻击

申请和占⽤用过多的资源压垮系统,以破坏安全措施,从⽽而进⼊入系统;

故意使系统出错,利利⽤用系统恢复的过程,窃取⽤用户⼝口令及其它有⽤用的信息;

通过浏览残留留在计算机各种资源中的垃圾(⽆无⽤用信息),以获取如⼝口令,安

全码,译码关键字等信息;

(50)

7.1 软件质量量保证

a. 单元测试

7.2 软件测试策略略

b. 集成测试 c. 系统测试 d. 验收测试

7.3 软件测试技术

a. 软件测试技术 b. ⽩白盒测试

c. ⿊黑盒测试

(51)

Page . 51 Page . 51

验收测试概念

验收测试

最后测试操作

部署软件之前的 最后一个测试操 作。

最后技术测试

技术测试的最 后一个阶段。

目的

确保软件准备 就绪

完成系统测试之

后,产品发布之

前所进⾏行行的软件

测试活动。

(52)

验收测试概念

时间节点

系统的有效性测试及 软件 配置审查通过之 后。

人员组织

以用户为主 开发⼈人员

质量量保证⼈人员

功能和性能外 测试内容

可移植性、兼容性、

可维护性、错误的恢 复功能等

测试数据

实际生产数据

(53)

Page . 53 Page . 53

验收测试过程

了解软件的质量要求和验收要求 编制《验收测试计划》《项目验收准则》

测试实施 测试环境搭建

测试和测试用例设计

测试结果分析 撰写测试报告

(54)

验收测试形式

主要形式

根据合同的验收测试 系统测试子集再测试

用户验收测试

客户 最终用户

现场测试 α测试

β测试 主要形式

根据合同的验收测试

⽤用户验收测试

系统测试⼦子集再测试

(55)

Page . 55 Page . 55

验收测试形式

目 的

评价FLURPS特性(功能、局 域化、可使⽤用性、可靠性、性 能和⽀支持)。尤其界⾯面和特⾊色

开始时间

编码结束后模块(⼦子系统)

测试完成后,系统测试过程 中产品达到⼀一定的稳定和可 靠程度后

含 义

用户在开发环境、模拟用户在 模拟实际操作环境下的测试

原 因

交付后,用户的实际使 用程序是⽆无法预测的

α 测试

(56)

测试人员

• 多个用户在实际使用环境下进行测试。这些用户返回有关错误信息给开发者。

测试 形式

• 开发者通常不在测试现场,开发者无法控制的环境下进行的软件现场应用。

测试 步骤

• 用户记录所有问题(真实的、主观的),定期向开发者报告。

测试 目标

• 产品的FLURPS。着重产品的支持性(文档、客户培训和支持产品生产能力)

开始 条件

• α测试达到一定的可靠程度时开始,测试的最后阶段,所有手册文本此阶段完全定稿。

β测试

(57)

Page . 57 Page . 57

测试停⽌止标准

软件是无法完全测试的 何时停止测试

测试阶

测试用 缺陷收 缺陷修 验收测

例 敛趋势 复率

覆盖率 缺陷度

质量成

(58)

测试停⽌止标准

测试经理

测试设计人员 测试自动化人员 测试管理员

测试人员

测试人员

开发团队 开发团队中配备测试人员 项目团队中若干测试团队

独立测试专家 单独测试部门

测试团队

(59)

目录 Contents

7.1 软件质量量保证

a. 单元测试

7.2 软件测试策略略

b. 集成测试 c. 系统测试 d. 验收测试

7.3 软件测试技术

a. 软件测试技术 b. ⽩白盒测试

c. ⿊黑盒测试

(60)

相关概念

在某种指定的条件下对系 统或组件操作,观察或记 录结果,对系 统或组件的 某些⽅方⾯面进⾏行行评估的过程。

分析软件各项目以检测现 有的结果和应有结果之间 的差异,并评估软件各项 目的特征的过程。

软件测试的定义

(61)

Page . 61 Page . 61

相关概念

软件缺陷 软件未实现产品说明书要求的功能。

软件出现了了产品说明书指明不不能出现的错误。

软件实现了了产品说明书未提及的功能。

软件未实现产品说明书虽未明确提及但应该实现的⽬目标。

软件难以理理解、不不易易使⽤用、运⾏行行缓慢或者 —— 从测试员的

⻆角度看 —— 最终⽤用户会认为不不好。

(62)

相关概念

对于每个测试级别,都要检 查开发活动的输出是否满足 具体的需求或与这些特定级 别相关的需求

确认(Validation)

保证软件特定开发阶 段的输出已经正确完 整地实现了了规格说明

验证(Verification)

(63)

Page . 63 Page . 63

相关概念

软件测试

•  找出软件缺陷,并确 保修复

软件质量保证

•  创建、执行改进过程并

防止缺陷的标准和方法

(64)

相关概念

功能性(functionality)

可移植性(portability)

质量与可靠性

01 03 02

06 04 05

可靠性(reliability)

可维护性(maintainability)

可用性(usability)

效率(efficiency)

(65)

Page . 65 Page . 65

相关概念

•  目标是发现软件缺陷的存在

软件测试

•  目标是定位与修复缺陷

软件调试

(66)

相关概念

测试用例(test case):是测试输入、执行条件、以及预期结果的集合,是为特定的目的开发 的,例如执行特定的程序路径或验证与指定的需求相符合。

输入条件 执行条件 预期结果

用户名 =yiyh ,密码为空 输入用户名称,按 “ 登

” 按钮。 显示警告信息 “ 请输入用 户名和密码!

输入条件 预期结果 实际结果

典型值

主题。设计者、类型、测试名称、状态、描述、优先级、comment、步骤名、步骤描述、

预期结果、评审人、评审备注、评审时间等……

(67)

Page . 67 Page . 67

⽬目标与原则

确认系统满足其预期的使用和用户的需要。

确认解决了所需解决的问题

为测试的过程建立责任和可解释性。

便于及早发现软件和系统的异常。

及早提供软件和系统的性能的评估。

为管理提供真实信息,以决定当前状态下发布产品在商业上的风险 鉴别出程序在功能等方面的异常集聚之处。

软件测试的目标

(68)

⽬目标与原则

软件测试的基本原则

穷尽测试是不不可能的

测试⽆无法显示潜伏的软件缺陷 测试活动应尽早进⾏行行

软件缺陷具有群聚性 注意“杀⾍虫剂”现象

尽量量由独⽴立的测试团队进⾏行行测试

(69)

Page . 69 Page . 69

评估准则

覆盖率 故障插入

一种统计方法,用于 评价遗留留在⼀一个程序 中的故障的数量量和种 类。

插⼊入故障到程序中,

观察测试中是否能够 检测出来。

变异测试:程序进行 两个或更多个变异,

然后用同样的测试用 例执行测试,评估探 测程序变异的能⼒力力。

编译分值

该指标和变异测试密 切相关。

(70)

主要测试⽅方法

黑盒测试

忽略系统或组件的内部机制,仅关注于那些响应所选择的输 入及相应执行条件的输出的测试形式

白盒测试

考虑系统或组件的内部机制的测试形式

灰盒测试

介于白盒测试与黑盒测试之间的一种测试,多用于集成测试 阶段,不仅关注输出、输入的正确性,同时也关注程序内部 的情况。

(71)

目录 Contents

7.1 软件质量量保证

a. 单元测试

7.2 软件测试策略略

b. 集成测试 c. 系统测试 d. 验收测试

7.3 软件测试技术

a. 软件测试技术 b. ⽩白盒测试

c. ⿊黑盒测试

(72)

⽩白盒测试

把测试对象看做一 个透明盒⼦子,允许 利利⽤用程序内部逻辑 结构及有关信息,

进⾏行行测试。

通过在不同点检查 程序的状态,确定 实际的状态是否与 预期的状态⼀一致。

又称为结构测试或 逻辑驱动测试。

(73)

Page . 73 Page . 73

⽩白盒测试

检查范围 对程序模块的所有独立的执行路径至少测试一次;

对所有的逻辑判定,取“真”与取“假”的两种情况都至 少测试一次;

在循环的边界和运⾏行行界限内执⾏行行循环体;

测试内部数据结构的有效性。

(74)

⽩白盒测试

▪  完全测试的困难性:对⼀一个具有多重选择和循环嵌套的程序,不不同 的路路径数⽬目可能是天⽂文数字。

例例: 执⾏行行路路径数⽬目: 5^20条

设: 每⼀一条路路径测试需要1毫

秒 ⼀一年年⼯工作365*24⼩小时

需: 3170 年年。

(75)

Page . 75 Page . 75

语句句覆盖

语句覆盖 分支覆盖 条件覆盖

条件组合覆盖

逻辑 覆盖

逻辑覆盖:以程序内部的逻辑结构为基础设计测试用例的技术。

(76)

语句句覆盖

程序流程图示例

L1(a->c->e)

L2(a->b->d)

L3(a->b->e)

L4(a->c->d)

(77)

Page . 77 Page . 77

语句句覆盖

程序流程图示例

(78)

语句句覆盖

程序流程图示例

(79)

Page . 79 Page . 79

语句句覆盖

程序流程图示例

(80)

语句句覆盖

程序流程图示例

L4 (a → c → d)

= { ( A > 1 ) and ( B = 0 ) } and { ( A = 2 ) or ( X A > 1 ) }

= ( A > 1 ) and ( B = 0 ) and ( A ≠ 2 ) and ( X A ≤ 1 )

(81)

Page . 81 Page . 81

语句句覆盖

then x=x/A end if

if (A=2) or (x>1) then x=x+1 end if

在图例中,正好所有的可执行语句都在 路径L1上,所以选择路径 L1设计测试 用例,就可以覆盖所有的可执⾏行行语句句

语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

if (A>1) and (B=0)

(82)

语句句覆盖

测试用例的设计格式如下

【输入的(A, B, X),输出的(A, B, X)】

为图例设计满足语句覆盖的测试用例是:

【(2, 0, 4),(2, 0, 3)】

覆盖 ace【L1】

( A =2 ) and ( B=0 ) or

( A >1 ) and ( B=0 ) and ( X A>1 )

(83)

Page . 83 Page . 83

分⽀支覆盖

选择路径L1和L2:

【(2, 0, 4),(2, 0, 3)】覆盖 ace【L1】

( A ≤ 1 ) and ( X ≤ 1 ) or

( B ≠ 0 ) and ( A ≠ 2 ) and ( X ≤ 1 )

( X A > 1)

【(1, 1, 1),(1, 1, 1)】覆盖 abd【L2】

( A = 2 ) and ( B = 0 ) or

( A > 1 ) and ( B = 0 ) and

选择路径L3和L4:

【(2, 1, 1),(2, 1, 2)】覆盖 abe【L3】

【(3, 0, 3),(3, 1, 1)】覆盖 acd【L4】

( A ≤ 1 ) a n d ( X > 1 ) o r ( B ≠ 0 ) a n d

( A = 2 ) o r ( B ≠ 0 ) a n d ( X > 1 )

( A > 1 ) a n d ( B = 0 ) a n d ( A ≠ 2 ) a n d

( X A ≤ 1 ) 分支覆盖:就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真 分支和取假分支至少经历一次。分支覆盖又称为判定覆盖。

(84)

条件覆盖

对于第一个判断: 对于第二个判断:

条件覆盖:设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执 行一次。

事先对所有条件的取值加以标记。

条件 A>1 取真为

T

1,取假为

T

1

条件 B=0 取真为

T 2

,取假为

T

2

条件A=2 取真为

T

3,取假为

T

3 条件X>1 取真为

T

4,取假为

T

4

测试用例 覆盖分支 条件取值

【(1, 0, 3),(1, 0, 4)】

【(2, 1, 1),(2, 1, 2)】 L3(b, e) L3(b, e)

T

1

T

2

T

3

T

4

T

1

T

2

T

3

T

4

(85)

Page . 85 Page . 85

条件组合覆盖

条件组合覆盖:设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合 至少执行一次。

事先对所有条件组合的取值加以标记。

① A>1, B=0

② A>1, B≠0

③ A≯ 1, B =0

④ A≯ 1, B≠0

⑤ A=2, X>1

⑥ A=2, X≯ 1

⑦ A≠2, X>1

⑧ A≠2, X≯ 1

T

1

T

2

T 1 T 2 T 1 T 2

T

1

T

2

T

3

T

4

T

3

T

4

T

3

T

4

T

3

T

4

测 试 用 例 覆盖组合

【(2, 0, 4), (2, 0, 3)】

覆盖条件

(L1) ①, ⑤

【(2, 1, 1), (2, 1, 2)】 (L3) ②, ⑥

【(1, 0, 3), (1, 0, 4)】 (L3)

【(1, 1, 1), (1, 1, 1)】 (L2)

T

1

T

2

T

3

T

4

T 1 T 2 T 3 T 4

T 1 T 2 T 3 T 4

③, ⑦

T 1 T 2 T 3 T 4

④, ⑧

设计测试用例,覆盖所有条件组合

(86)

循环测试

•  完全略略过循环体

•  执⾏行行⼀一次循环体

•  执⾏行行两次循环体

(87)

Page . 87 Page . 87

⽩白盒测试—控制流图覆盖测试

控制流图覆盖测试:是将代码转变为控制流图(CFG),基于其进行测试的技术。

程序的控制流图

结点:符号○ ,表示一个或多个无分支的PDL语句或源程序语句。

边:箭头,表示控制流的方向。

汇聚节点:在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。

区域:边和结点圈定的区域。对区域计数时,图形外的区域也应记为一个区域。

(88)

基本概念

单条件嵌套:如果判断中的条件表达式是由一个或多个逻辑运算符 (OR, AND, NAND,

NOR) 连接的复合条件表达式,则需要改为一系列只有单个条件的嵌套的判断。

(89)

Page . 89 Page . 89

节点、边覆盖

对图中每一个可到达的长度 小于(无向图)等于1 的路径中 至少存在⼀一条测试路路径覆盖。

显然,边覆盖包含节点覆盖,

且边覆盖也可以实现分⽀支覆 盖。

边覆盖

对图中的每个节点,至 少要有一条测试路径访 问该节点。显然,节点 覆盖=语句句覆盖

节点覆盖

(90)

路路径覆盖

路径覆盖测试:就是设计足够的测试用例,覆盖程序中所有可能的路径

测 试 用 例 覆盖路径

【(2, 0, 4), (2, 0, 3)】 ace (L1)

【(1, 1, 1), (1, 1, 1)】 abd (L2)

【(1, 1, 2), (1, 1, 3)】 abe (L3)

【(3, 0, 3), (3, 0, 1)】 acd (L4) 例

a

b c

d e

(91)

Page . 91 Page . 91

基本路路径覆盖

基本路径测试:将覆盖的路径数压缩到一定限度内,程序中的循环体最多只执行一次。

1 •  绘制程序控制流图

2 •  分析控制构造的环路复杂性 3 •  导出基本可执行路径集合

4 •  设计测试用例的,保证在测试中,程序的每一个可执行语句至少要执行一次。

(92)

基本路路径覆盖

程序的环路复杂性:程序基本路径集中的独立路径条数,这是确保程序中每个可执行语 句至少执行一次所必需的测试用例数目的上界。

独立路径:从控制流图来看,一条独立路径是至少包含有一条在其它独立路径中从未 有过的边的路径。

计算方法:V(G) = e−n+2。

其中,e 为图中边的数目;n 为节点数目。

(93)

Page . 93 Page . 93

基本路路径覆盖

确定线性独⽴立路路径的基本集合

从源节点(控制流图的⼊入⼝口点)开始,⼀一直⾛走到汇节点

(控制流图的出⼝口点)。该路路径作为基线路路径。

接下来,重新回溯基线路路径,依次“翻转”在判断节点上原来选择 的路路径。即,当遇到节点的出度⼤大于等于2时,必须选择不不同的边。

重复以上过程,直到得到的路路径数⽬目等于V(G)

(94)

基本路路径覆盖

计算程序环路复杂性:

V(G)=e(11)-n(9)+2=4 确定基本路径级:

path1:1 -

11

path2:1 - 2 - 3 - 4 - 5 - 10 - 1 - 11

path3:1 - 2 - 3 - 6 - 8 - 9 - 10 - 1 - 11

path4:1 - 2 - 3 - 6 - 7 - 9 - 10 - 1 - 11

基本路径集:path1,path2,

path3,path4

(95)

Page . 95 Page . 95

基本路路径覆盖

导出测试用例

确保基本路径集的每一条路径的执行。

选择测试用例

根据判断结点给出的条件,选择合适 用例以保证某一条路径可以被测试到 测试结果比较

测试执行后,与预期结果进行比较。

注意事项

非孤立的独立路径可以是另一条路径 测试的一部分。

(96)

7.1 软件质量量保证

a. 单元测试

7.2 软件测试策略略

b. 集成测试 c. 系统测试 d. 验收测试

7.3 软件测试技术

a. 软件测试技术 b. ⽩白盒测试

c. ⿊黑盒测试

(97)

Page . 97 Page . 97

⿊黑盒测试

测试对象看做一个黑 盒子,测试人员完全 不考虑程序内部的逻

辑结构和内部特性

只依据程序的需求规 格说明书,检查程序 的功能是否符合它的

功能说明

又叫做功能测试或数 据驱动测试。

(98)

⿊黑盒测试

检查范围 是否有不正确或遗漏了的功能?

在接口上,输入能否正确地接受? 能否输出正确的结果?

是否有数据结构错误或外部信息访问错误?

性能上是否能够满足要求?

是否有初始化或终止性错误?

(99)

Page . 99 Page . 99

⿊黑盒测试

完全测试的困难性:如果考虑所有可能的输入条件和输出条件中,黑盒测试同样 可能是天文数字。

可能采用的测试数据组:232×232=264 设:

每一条路径测试需要1毫秒 一年工作365 × 24小时 需:

5亿年。

程序P有输入量X和Y及输出量Z。在字长 为32位的计算机上运行。若X、Y取整数

例例

(100)

等价类划分

基本思想

把所有可能的输入数据,即程序的 输入域划分成若干部分,然后从每 一部分中选取少数有代表性的数据

做为测试用例。

测试步骤

划分等价类 选取测试用例

(101)

Page . 101 Page . 101

等价类划分

等价类:某个输入域的子集合。在该子集合中,各个输入数据对于揭露 程序中的错误都是等效的。

有效等价类:对于程序的规格说明 来说,是合理的,有意义的输入数 据构成的集合。

无效等价类:对于程序的规格说明 来说,是不合理的,无意义的输入 数据构成的集合。

同时考虑

(102)

等价类划分

原则1: 如果输入条件规定了取值范围,或值的个数,则 可以确立一个有效等价类和两个无效等价类。

输入条件 有效等价类 无效等价类

项数可以从1到999 1 ≤项数≤999 (1) 项数<1 (2);项数>999 (3)

在程序的规格说明中,对输⼊入条件有⼀一句句话:“…… 项数可以从1到999 ……”

例例

(103)

Page . 103 Page . 103

等价类划分

原则2:如果输入条件规定了输入值的集合,或者规定了“必须如

何”的条件,这时可确立一个有效等价类和一个无效等价类。

输入条件 有效等价类 无效等价类

以字母打头的……串 所有以字母打头的……串(1) 所有不是以字母打头的……串(2)

在Pascal语⾔言中对变量量标识符规定为“以字⺟母打头的……串串”。

例例

(104)

等价类划分

原则3:如果输入条件是一个布尔量,则可以确定一个有效等价类和 一个无效等价类。

输入条件 有效等价类 无效等价类

教师的在岗状态 是(1) 否(2)

在教师管理理系统中,教师的在岗状态为布尔量量,是或否

例例

(105)

Page . 105 Page . 105

等价类划分

原则4:如果规定了输入数据的一组值,而且要对每个输入值分别进行处理。可为每一个输入值 确立一个有效等价类,所有不允许的输入值集合为一个无效类。

输入条件 有效等价类 无效等价类

不同职称的分别计数 教授 (1);副教授 (2);讲师 (3);助教 (4)

不在{教授、副教授、讲师、助 教}中的其他值集合(5)

在教师上岗⽅方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理理。

例例

(106)

等价类划分

原则5:如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和 若干个无效等价类(从不同角度违反规则)。

一个语句必须以分号‘;’结束 以分号‘;’结束的语句

(1)

以‘:’结束

(2);以‘,’结束

(3);以‘ ’结束

(4):以LF结束

(5)等

Pascal语⾔言规定 “ ⼀一个语句句必须以分号 ; 结束 ” 。

输入条件 有效等价类 无效等价类

例例

(107)

Page . 107 Page . 107

等价类划分

等价类划分步骤

(一)

•  确定等价类

(二)

•  建立等价类表,列出所有划分出的等价类

(三) • 为每一个等价类规定一个唯一编号;

(四)

•  设计一个新的测试用例,尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,

直到所有的有效等价类都被覆盖为止;

(五)

• 设计一个新的测试用例,仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到 所有的无效等价类都被覆盖为止

(108)

等价类划分

▪  在某⼀一PASCAL语⾔言版本中规定:“标识符是由字

⺟母开头,后跟字⺟母或数字的任意组合构成。有效字 符数为不不超过8个。”

▪  并且规定:“标识符必须先说明,再使⽤用。” “在同

⼀一说明语句句中,标识符⾄至少必须有⼀一个。”

(109)

Page . 109 Page . 109

等价类划分

唯一编号

1、确定等价类 2、建立等价类表

3、为等价类唯一编号

输入条件 有效等价类 无效等价类

标识符个数 ≥1 个 (1) 0 个 (2)

标识符字符数 8 个 (3) 0 个 (4);>8 个 (5) 标识符组成 字母、数字的任意组合

(6); 非字母数字字符 (7);保 第一个字符 字 母 (9)

留字 (8) 非字母 (10) 标识符使用 先说明后使用 (11) 未说明已使用 (12)

(110)

等价类划分

4、设计用例,覆盖尽量多的有效 等价类

重复,直至覆盖所有有效等价类

① VAR x,T1234567:REAL;

BEGIN x := 3.414;

T1234567 := 2.732;

...…

(1), (3), (6), (9), (11)

(111)

Page . 111 Page . 111

等价类划分

重复,直至覆盖所有无效等价类

② VAR :REAL;

③ VAR x,:REAL;

(2) (4)

⑤ VAR T$:CHAR; (7)

⑥VAR GOTO:INTEGER; (8)

⑦ VAR 2T:REAL; (10)

⑧ VAR PAR:REAL; (12) BEGIN ...

PAP := SIN (3.14 * 0.8) / 6;

④ VAR T12345678:REAL; (5)

设计用例,仅覆盖一个无效等

价类

(112)

边界值分析

方法

原因

含义

边界指标

BY

HOW

WHAT WHY

黑盒测试方法

对等价类划分⽅方法的补充

大量的错误是发生在输入或输 出范围边界上边界测试可以查 出更更多的错误

相当于输入、输出等价类而 言,稍⾼高、低于其边界值的

⼀一些特定情况 确定边界情况

选取正好等于,刚刚⼤大于,

或刚刚⼩小于边界的值做为 测试数据做为测试数据。

(113)

Page . 113 Page . 113

边界值分析

在做三角形计算时,要输入三角形的三个边长:A、B和C。 我们应注意到这三个数值应当满足A>

0、B>0、C>0、A+B>C、A+C>B、B+C>A,才能构成三角形。

确定边界情况

如果把六个不等式中的任何一个大于号“>”错写成大于等于号“≥”,那就不能构成三角形。问 题恰出现在容易被疏忽的边界附近。

选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据

A、B、C比零稍大、等于的情况,任意两条边的和比第三条边稍大、等于的情况

(114)

边界值分析

三角形问题的边界值测试用例

序号 输入条件

预期输出 A

1 100

B

C

100

1

2 100

等腰三角形 非三角形 3 100

100

0

1

100

4 100

等腰三角形 非三角形 5 1

0

100

100

100

6 0

等腰三角形 非三角形 7 100

8 100

等腰三角形 非三角形 9

101

10 100

三角形 非三角形 11 199

12 200

100

100

100

199

100

200

199

99

200

100

100

100

100

100

等腰三角形 非三角形

(115)

Page . 115 Page . 115

状态测试

软件当前所处的条件或者 模式。除了极少数简单程 序外,均需选择重要的内 容进⾏行行测试

软件状态

在黑盒测试阶段,通 过对状态的测试间接 地加以验证功能

状态测试

建立状态转换图 根据状态转换图设计测试用例

(116)

状态测试

建立状态转换图

找出进入或退出某种状态时的设置条件 及输出结果。

找出从⼀一种状态转⼊入另⼀一种状态所需的 输⼊入和条件。

标识出软件可能进⼊入的每⼀一种独⽴立状态

(117)

Page . 117 Page . 117

状态测试

输入代码 输入事件 ip1 输入账号 ip2 输入密码

ip3 点击登录按钮 ip4 单击退出按钮

(1)列出所有输入事件 (2)从启动开始,第一轮状态分析 建立状态转换图

(118)

状态测试 建立状态转换图

(3)从启动开始,第二轮状态图分析,加入所有可能的输入

(119)

Page . 119 Page . 119

状态测试

根据状态转换图设计测试用例

原则 每种状态至少访问一次

测试看起来是最常见和最普遍的状态转换 测试状态之间最不常用的分支

测试所有错误状态及其返回值 测试状态的随机转换

(120)

静态分析⽅方法

不运行程序,通过检查和 阅读等手段来发现错误并 评估代码质量的测试技术

代码标准、质量监控提高可靠性 尽早通过源代码检查发现缺陷 代码审核定位易产生错误的模块

非常有效的质量保证手段 越来越多地被采用

作用.

含义. 适用.

(121)

Page . 121 Page . 121

静态分析⽅方法

01 03 02

06 04 05

追踪

返工 计划 准备

评审 会议

通用评审过程

概述

(122)

静态分析⽅方法

需求+设计+代码 需求

设计

静态分析的主要内容

缺陷产⽣生的原因

其它 编码

(123)

Page . 123 Page . 123

静态分析⽅方法

同事审查

适用于初次审查,要求最低的正式方 法,也称为伙伴审查

走查

开发组内部进行

审查

以会议形式,由开发组、测试组 和相关人 员联合进行。

A

B

C

静态分析类型 静态

分析

(124)

參考文獻

相關文件

有鑑於青年朋友在生涯發展的過程中,會面臨不同階段如求學、就業等抉

二、多元函数的概念 三、多元函数的极限

最终求得所有 4个基函数 (针对三次 Hermite插值). 代入 4个基函数

超定方程组QR分解算法 数据拟合确定常微分方程..

工程主管機關查核小組應就工程主辦機關所提缺失改善展延期限申請,審查是 否同意展延。其同意展延者,應函請工程主辦機關限期提報缺失改善結果,改善期 限最長以不逾三週 ( 日曆天

經過小學四年級輔助課程四十多小時密集式的活動,組員有不同程度及層面的學習和參

鉴于课程发展和教学方法的研究和实践一日千里,加上教育局课程发展处多 年来透过不同途径,搜集各界对历史课程及教学等方面的意见,课程发展议会于

上述定理, 即 Dini, Lipschitz, Dirichlet 判别法, 给出函数能展开成 Fourier 级数的充分条件... 下面罗列几个例子,