当前位置:文档之家› 软件测试与维护

软件测试与维护

9

方式


其他技术

确认测试——软件合格性测试

目的


检查系统的功能和性能、检查文档 功能或性能特征符合需求规格说明,被接受 发现与规格说明的偏差,创建缺陷列表,并修复 发现软件分析阶段的错误,会涉及到《需求分析报告》 α测试:由有代表性的最终用户在开发者的现场进行的,开发 者在后面观看,并记录错误和使用问题。 β测试:在一个或者多个最终用户场所进行,开发者通常不在 场
软件测试与维护
王传栋 南京邮电大学计算机学院
内容与要求

知识点

(1)知识点一:软件测试 (2)知识点二:软件调试 (3)知识点三:软件维护内容与分类 (4)知识点四:维护的策略与过程 (5)知识点五:维护的副作用 了解软件测试的概念、目的和原则,掌握常用的黑盒、白盒测 试方法,了解软件测试的基本步骤和各种测试的目的、内容和 方法,了解程序调试的方法和原则;了解软件维护的概念,内 容和策略和分类方法;解软件维护副作用的定义以及软件维护 副作用的分类方法。
true false
21
黑盒测试

侧重于软件的功能需求, 试图发现以下类型的错误:

不正确或遗漏的功能 接口错误 数据结构或外部数据库访问错误 行为或性能错误 初始化和终止错误 等价类划分法 边界值分析法 错误推测法(正交数组测试) 因果图法
22

测试用例的组织

黑盒测试
4
测试策略

软件过程是一个螺旋过程,沿着流线每螺旋前进一圈都会 降低软件的抽象层次

系统工程定义软件的角色,引出软件需求分析 需求分析建立软件的信息域、功能、行为、性能、约束和确认标准 沿着螺旋向内,经过设计阶段,最后到达编码阶段

软件测试也可以放在螺旋模型中来考虑,沿着流线每向外 螺旋前进一圈都拓宽了测试范围
如:A =2 B=0, X= ? A=1 B=?, X =0
18
白盒测试

条件覆盖

一个判定语句是由多个条件组合而成的复合判定 构造一组测试用例,使得每一判定语句中每个逻辑条件可能值 至少满足一次
true false true false true or false
Function js(float A, float B, float X) { If (A>1 && B=0) X=X/A ; If (A=2 || X>1) X=X+1 ; } true false true false

等价类划分

有效等价类——是指对软件规格说明而言,是有意义的、合理 的输入数据所组成的集合

检验程序是否实现了规格说明中预先规定的功能和性能

无效等价类——是指对软件规格说明而言,是无意义的、不合 理的输入数据所构成的集合

鉴别程序异常处理的情况,检查被测对象的功能和性能的实现是否有不 符合规格说明要求的地方 若输入条件指定一个范围,则可以定义1个有效和2个无效等价类 若输入条件需要特定的值,则可以定义1个有效和2个无效等价类 若输入条件指定集合的某个元素,则可以定义1个有效和1个无效等价类 若输入条件为布尔值,则可以定义1个有效和1个无效等价类
2

教学基本要求

基本概念

软件测试


软件测试的根本目标:尽可能多地发现并排除软件中潜藏的错 误,最终把一个高质量的软件系统交给用户使用,测试目标决 定了测试方案和测试用例的设计 观念:测试并不是证明程序是正确的,而是发现错误。 对测试出现的错误进行诊断,确定错误的位置、原因,并改正 错误。 是软件生命周期的最后一个阶段,指软件交付使用之后,为了 改正错误或满足用户新的需求而修改软件的过程。
如:A = 2 / A != 2 X > 1 / X !> 1 如:A > 1 / A !> 1 B = 0 / X != 0
true or false
19
白盒测试

条件判定组合覆盖,设计足够的测试用例

使得判定中每个条件的所有可能(真&假)至少出现一次 并且每个判定本身的判定结果(真&假)也至少出现一次
23

等价类划分的指导原则:

黑盒测试

边界值分析



对输入或输出的边界值进行测试的一种黑盒测试方法 通常作为对等价类划分法的补充,这种情况下,其测试用例 来自等价类的边界 为什么使用边界值分析法? 无数的测试实践表明,大量的故障往往发生在输入定义域或 输出值域的边界上,而不是在其内部。因此,针对各种边界 情况设计测试用例,通常会取得很好的测试效果 示例:NextDate函数的边界值分析测试用例 在NextDate函数中,隐含规定了变量mouth和变量day的取 值范围为1≤mouth≤12和1≤day≤31 ,并设定变量year的取 值范围为1912≤year≤2050
3

程序调试


软件维护

测试目的与原则

目的

测试是程序的执行过程,目的是发现错误; 一个好的测试用例在于能够发现迄今为止尚未发现的错误; 一次成功的测试在于发现了迄今为止尚未发现错误的测试。

原则


应当把‚尽早地和不断地进行测试‛作为座右铭 测试应避免程序员自己进行 测试用例包括测试数据和与其对应的预期输出结果 测试用例应包括合理的和不合理的输入数据 注意错误群集的地方 严格执行测试计划,排除测试的随意性 全面检查每一次测试结果 妥善保存测试计划、测试用例、出错统计和最终的分析报告

保证一个模块中的所有独立路径至少被执行1次 所有的逻辑判定均需测试取真(true)和取假(false)两个方面 在上下边界及其可操作的范围内执行所有的循环 检验内部数据结构以确保其有效性 逻辑错误和错误假设,与路径的可能执行是成反比的 我们总是认为那条路径不可能被执行; 事实上,现实总是与直觉相反 印刷错误是随机的;很可能包含一些未经测试的路径
true false true false true false
Function js(float A, float B, float X) { If (A>1 && B=0) X=X/A ; If (A=2 || X>1) X=X+1 ; } true false true false
true or false

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


准备测试用例,强制执行每条路径
15
白盒测试

导出测试用例
V(G) =6, 路径: ① 1,2,10,11,13 ② 1,2,10,12,13 ③ 1,2,310,11,13 ④ 1,2,3,4,5,8,9,2,… … ⑤ 1,2,3,4,5,6,8,9,2,… … ⑥ 1,2,3,4,5,6,7,8,9,2,…
14
白盒测试

导出测试用例

设计或源码 流图 计算流图环复杂性

V(G) = 简单决策数+1 or 封闭区域数+ 1 or E(边数)-N(点数)+2 独立路径数V(G) =4,提供了保证所有语句至少执行一次所需的测试数量 的上限 路径1: 路径2: 路径3: 路径4: 1,2,3,6,7,8 1,2,3,5,7,8 1,2,4,7,8 1,2,4,7,2,4,...7,8
true false
20
白盒测试

多条件覆盖(条件组合覆盖)

设计足够的测试用例,使得每个判定中条件的各种可能组合都 至少出现一次
true false true false true false
Function js(float A, float B, float X) { If (A>1 && B=0) X=X/A ; If (A=2 || X>1) X=X+1 ; } true false true false true false

为什么要覆盖?

13
白盒测试

逻辑覆盖法:一种白盒测试技术,实现语句覆盖

计算过程设计的逻辑复杂性测量,指导定义执行路径的集合 执行路径集合导出的测试用例,保证每一条语句至少执行一次 语句覆盖,试图覆盖所有语句 判定覆盖,试图覆盖所有判定点,判定点值的‚真‛或‚假‛ 条件覆盖,试图覆盖所有判定条件 判定/条件覆盖,试图覆盖所有判定点和判定条件 条件组合覆盖,试图覆盖所有判定条件的各种组合
16
白盒测试

语句覆盖——基本路径测试

使程序中每个语句至少都能够被执行一次 语句:赋值语句、条件语句、分支语句、循环语句
Function js(float A, float B, float X) { If (A>1 && B=0) X=X/A ; If (A=2 || X>1) X=X+1 ; }
基于线程的测试 自顶向下或自底向上集 成策略 集成测试 基于使用的测试 簇测试
确认测试 高端测试 系统测试
注: OO软件没有明显的层次控制 结构,因此传统的自顶向下 和自底向上集成策略已没有 太大意义 类的成分间的直接或间接相 互作用,每次将一个操作集 成到类中往往是不可能的
6
测试步骤

单元测试

α测试与β测试:关注点是客户使用


10
系统测试

关注点是系统集成

软件与硬件系统、支持软件、数据信息等配套协同工作 测试超出软件过程范围,不仅仅由软件工程师执行 恢复测试:通过各种方式强制地使软件发生故障,并验证其能适 当恢复 安全测试:验证系统内的保护机制,是否能够实际保护系统不受 非法入侵 压力测试: 目的是破坏程序,以非正常的数量、频率或容量的方 式执行系统 性能测试,与压力测试结合,测试软件在集成环境中的运行性能 部署测试:配置测试,在多平台及OS环境中测试软件的安装与 运行
相关主题