610 likes | 791 Views
第 1 部分 软件测试概述. 袁玉宇 yuanyuyu@263.net yuanyy@cesi.ac.cn yuyu_yuan4@hotmail.com. 本部分课程目标. 软件缺陷的定义 软件缺陷产生的原因 软件测试的目标 软件测试的特征 软件测试的数学基础. 需求规 格说明. 系统测试. 集成测试. 概要设计. 详细设计. 单元测试. 编码. 软件的生命周期. “ 臭虫 ” 的由来. 人们将软件错误称为 “ 臭虫 ” ,这是因为第一个有记载的电脑故障是由线路上的臭虫造成的。就是我们通常称的 “ BUG ” 。. 软件失败的术语描述.
E N D
第 1部分 软件测试概述 袁玉宇 yuanyuyu@263.net yuanyy@cesi.ac.cn yuyu_yuan4@hotmail.com
本部分课程目标 • 软件缺陷的定义 • 软件缺陷产生的原因 • 软件测试的目标 • 软件测试的特征 • 软件测试的数学基础
需求规 格说明 系统测试 集成测试 概要设计 详细设计 单元测试 编码 软件的生命周期
“臭虫”的由来 人们将软件错误称为“臭虫”,这是因为第一个有记载的电脑故障是由线路上的臭虫造成的。就是我们通常称的“BUG”。
软件失败的术语描述 缺点(defect) 问题 (problem) 谬误 (fault) 矛盾(inconsistency) 失败(failure) 偏差(variance) 毛病 (incident) 特殊(feature) 异常 (anomaly) 错误 (error) 缺陷(bug)
软件失败的几个定义 • 错误:人类会犯错误。 • 缺陷:缺陷是错误的结果。 • 失效:当缺陷执行时会发生失效。 • 事故:当出现失效时,可能会也可能不会呈现给用户。
软件缺陷 • 软件未达到产品描述表明的功能。 • 软件出现了产品描述指明不会出现的错误。 • 软件功能超出产品描述指明范围。 • 软件未达到产品描述虽未指出但应达到的目标。 • 软件测试人员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
软件缺陷的分类 • 以出现相应错误的开发阶段来划分; • 以相应失效产生的后果来划分; • 以解决难度来划分; • 以不解决会产生的风险来划分; • 根据异常出现的频率来划分。
软件缺陷产生的原因 软件缺陷产生的原因有很多,但最主要的原因要归咎于产品描述
常见导致错误的根源 • 缺乏有效的沟通,或者没有进行沟通; • 软件复杂度 • 不断变更的需求 • 时间的压力 • 缺乏文档的代码 • 软件开发工具
软件测试员的目标 发现软件缺陷
测试的目标——证明 • 获取系统在可接受范围内可用的信心; • 尝试在非正常情况和条件下的功能和特性; • 保证一个工作产品是完整的并且可用或可被集成。
测试的目标——检测 • 发现缺陷、错误和系统不足; • 定义系统的能力和局限性; • 提供组件、工作产品和系统的质量信息。
测试的目标——预防 • 澄清系统的规格和性能; • 提供预防或减少可能制造错误的信息; • 在过程中尽早检测错误; • 确定问题和风险,并且提前确认解决这些问题和风险的途径。
错误 错误 需求规 格说明 缺陷解决 修复 错误 缺陷 设计 错误 缺陷隔离 缺陷 编码 事故 缺陷分类 缺陷 测试 软件测试的生命周期
S P 规格说明 (预期的) 程序 (观察的) 软件测试的理解
规格说明 (预期的) 程序 (观察的) S P 2 6 5 1 4 3 测试用例 (已检验) 8 7 T 软件测试用例的理解
规格说明 (预期的) 程序 (观察的) S P 测试用例 黑盒测试技术(功能)
规格说明 (预期的) 程序 (观察的) S P 测试用例 白盒测试技术(结构)
软件测试的特征 • 软件测试具有一定的风险 • 软件缺陷的寄生虫性 • 软件测试的杀虫剂现象 • 软件测试的不修复原则 • Pareto原则
完全测试程序是不可能的 原因: • 输入量太大 • 输出结果太多 • 软件实现途径太多 • 软件说明书没有客观标准
软件测试是有风险的行为 如果决定不去测试所有的情况,那就是选择了风险 。
软件缺陷的寄生虫性 找到的软件缺陷越多,就说明软件缺陷越多 • 原因: • 程序员的疲倦 • 程序员往往犯同样的错误 • 某些软件的缺陷其实是大灾难的征兆
软件测试的杀虫剂现象 软件测试越多,其免疫力越强的现象 • 克服方法: • 不断编写不同的新的测试程序 • 对程序的不同部分进行测试
软件测试的不修复原则 并非所有软件缺陷都能修复 • 不需要修复软件缺陷的原因: • 没有足够的时间 • 不算真正的软件缺陷 • 修复的风险太大 • 不值得修复
Pareto原则 Pareto原则暗示着测试发现的错误中的80%很可能起源于程序模块中的20%。
软件测试中的误区 • 调试和测试是一样的; • 测试组应当为保证质量负责; • 把测试作为新员工的一个过渡工作; • 关注测试的执行而忽略测试的设计; • 测试自动化是万能的; • 测试时枯燥乏味,缺乏创造力的工作。
测试人员的离散数学 离散数学包括:集合论、函数、关系、命题逻辑和概率论。
集合论—集合定义 集合有三种方式定义: • 简单列出集合的元素 • 给出辨别规则 • 通过其他集合构建
集合论—空集 • 空集采用符号 表示,在集合中占有特殊位置。 • 空集不包含元素。 • 空集是唯一的,即不会有两个空集。 • 如果集合被规则定义为永远失败, 那么该集合就是空集。
集合论—集合关系 定义: A是B的子集 A是B的真子集 A是B的相等集合。
集合论—子集划分 • 定义:子集划分 • 由于划分是一组子集, 因此可以把单个子集看做是划分的元素。 • 划分可以保证完备性和无冗余性。
函数 • 函数的定义 • 函数的定义域与值域 • 函数的类型 • 函数的合成
关系—集合之间的关系 • 集合之间的关系的定义 • 关系的势的定义 • 关系的参与的定义
关系—单个集合上的关系 • 关系的四个特殊属性 • 排序关系的定义 • 等价关系的定义
命题逻辑 • 命题的定义 • 逻辑操作符 • 逻辑表达式 • 逻辑等价
概率论 • 事件的概率的定义 • 概率论在测试中的应用
测试人员的图论 • 本课程主要介绍:无向图和有向图。
图—图的定义 • 定义: 图G=(V,E)有节点的有限(并且非空)集合V和节点无需对偶集合E组成。 V={n1,,n2 ,……,nm} 和 E={e1, e2,…..,ep} 其中每条边ek={ni,nj} ,ni 、nj∈V。
图—基本概念 • 节点的度 • 图的关联距阵 • 图的相邻距阵
图—路径 • 路径的定义 • 路径的连接性 • 压缩图 • 圈数
有向图—定义 • 定义: 有向图(或框图)G=(V,E)包含:一个节点的有限集合V={n1,,n2 ,……,nm},一个边的集合E={e1, e2,…..,ep},其中每条边ek=〈ni,nj〉是节点ni 、nj∈V的一个有序对偶。
有向图—基本概念 • 内度与外度 • 节点的类型 • 有向图的相邻距阵
有向图—基本概念 • 路径与半路径 • 可到达性距阵 • n-连接性 • 强组件
用于测试的图—程序图 • 定义 给定一个采用命令式程序设计语言编写的程序,其程序图是一种有向图,其中: 节点是程序语句,边表示控制流(从节点I到节点j有一条边,当且仅当对应节点j的语句可以立即在节点I对应的语句之后执行。
用于测试的图—有限状态机 • 定义 有限状态机是一种有向图,其中状态是节点,转移是边。 源状态和吸收状态是初始节点和终止节点,路径被建模为通路。 大多数有限状态机表示方法都要为边(转移)增加信息,已指示转移的原因合作为转移的结果要发生的行动。
用于测试的图—Petri网 • 定义 Petri网是一种双向有向图(P,T,In,Out),其中,P和T是不相交的节点集合,In和Out是边集合, In c PXT,Out c TXP。