1 软件测试背景

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ø 开发人员及开发过程之间管理不规范,约定不严 格,文档书写不完整,软件可维护性不好。
Ø 缺少严密有效的质量检验手段,交付给用户的软 件质量差,运行中出现许多问题,带来严重后 果。
Ø 系统更新换代难度大
Software Crisis !
软件工程
• 将系统化的、规范的、可度量的方法应用 于软件的开发、运行和维护的过程,即将 工程化应用于软件中。
软件测试的发展历程
• 在早期的软件开发过程中,将测试等同于“调试”, 目的是纠正软件中已经知道的故障。
• 50年代,软件测试开始与调试区别开来,成为一种 发现软件缺陷的活动。
• 80年代早期,测试不单纯是一个发现错误的过程, 而且包含软件质量评价的内容。
• 20世纪90年代,测试工具终于盛行起来。 • 2002年,软件测试做了进一步定义:“测试是为了
程序错误分类-按错误的性质和范围分类
5.代码错误
主要包括:语法错误;打字错误;对语句或指令不正 确理解所产生的错误。
软件缺陷按软件生存期阶段分类
Ø 软件缺陷的产生原因:
Ø 产品规格说明书(SRS)
Ø 没有写 Ø 不够全面,准确,细致 Ø 经常变更
Ø 软件的设计(Architecture)
Ø 这是软件的蓝图 Ø 描述不够清楚 Ø 框架的结合不够紧密和连贯 Ø 软件框架经常变动,不稳定
程序错误分类-按软件生存期阶段分类
2.规格说明错误
这类错误是指规格说明与问题定义不一致所产生的错误。 它们又可以细分成:
(1)不一致性错误:规格说明中功能说明与问题定义发 生矛盾。
(2)冗余性错误:规格说明中某些功能说明与问题定义 相比是多余的。
(3)不完整性错误:规格说明中缺少某些必要的功能说 明。
(2) 算法错误:算法选择不合适。主要表现为算法的基 本功能不满足功能要求、算法不可行或者算法的效率不 符合要求。
(3) 模块接口错误 :模块结构不合理 ;模块与外部数据 库的界面不一致,模块之间的界面不一致。
(4) 控制逻辑错误 :控制流程与规格说明不一致 ;控制 结构不合理。
(5) 数据结构错误:数据设计不合理;与算法不匹配; 数据结构不满足规格说明要求。
运行正确性
4
输入正确性
源程序
程序员:
我要让计算
3百度文库
机什么做?
理解正确性 编码正确性
ABC
D
ABC
BC
CB

软件测试
• 简单地说,软件测试就是为了发现错误而执行程 序的过程。
• 在IEEE提出的软件工程标准术语中,软件测试被 定义为:“使用人工和自动手段来运行或测试某个 系统的过程,其目的在于检验它是否满足规定的 需求或弄清楚预期结果与实际结果之间的差别。”
1.功能错误 2.系统错误 3.加工错误 4.数据错误 5.代码错误
程序错误分类-按错误的性质和范围分类
1.功能错误 (1)规格说明错误:规格说明可能不完全,有二义 性或自身矛盾。 (2)功能错误:程序实现的功能与用户要求的不一 致。这常常是由于规格说明中包含错误的功能、多 余的功能或遗漏的功能所致。 (3)测试错误:软件测试的设计与实施发生错误。 软件测试自身也可能发生错误。 (4)测试标准引起的错误:对软件测试的标准要选 择适当,若测试标准太复杂,则导致测试过程出错 的可能就大。
– 软件缺陷:是存在于软件(文档、数据、程序)之中 的那些不希望或不可接受的偏差。其结果是软件运行 于某一特定条件时出现软件故障,这时称软件缺陷被 激活。
– 软件故障:是指软件运行过程中出现的一种不希望或 不可接受的内部状态。此时若无适当措施(容错)加 以及时处理,便产生软件失效。
– 软件失效:是指软件运行时产生的一种不希望或不可 接受的外部行为结果。
3.加工错误
(1)算术与操作错误:指在算术运算、函数求值和 一般操作过程中发生的错误。
(2)初始化错误:典型的错误有:忘记初始化工作 区,忘记初始化寄存器和数据区;错误地对循环控 制变量赋初值;用不正确的格式,数据或类型进行 初始化等等。
(3)控制和次序错误:这类错误与系统级同名错误 类似,但它是局部错误。包括:遗漏路径;不可达 到的代码;不符合语法的循环嵌套;循环返回和终 止的条件不正确;漏掉处理步骤或处理步骤有错 等。
4. 严重错误:系统运行不可跟踪,一时不能掌握其规律,时好 时坏。
5. 非常严重的错误:系统运行中突然停机,其原因不明,无法 软启动。
6. 最严重的错误:系统运行导致环境破坏,或是造成事故,引 起生命、财产的损失。
程序错误分类
• 按错误的性质和范围分类
B.Beizer从软件测试观点出发,把软件错误分为5类。
(4)不可行错误:规格说明中有些功能要求是不可行 的。
(5)不可测试错误:有些功能的测试要求是不现实的。
程序错误分类-按软件生存期阶段分类
3.设计错误
这是在设计阶段产生的错误,它使系统的设计与需求规格 说明中的功能说明不相符。它们又可以细分为:
(1)设计不完全错误:某些功能没有被设计,或设计得 不完全。
能 Ø 软件测试人员认为软件难以理解、不易使用、运行速
度慢,或者用户认为不好。
软件缺陷的积累和放大效应
45 40 35 30 25 20 15 10
5 0
需求 设计 编码 测试 维护
2.系统错误 (1)外部接口错误:外部接口指如终端、打印机、通信线路等 系统与外部环境通信的手段。 (2)内部接口错误:内部接口指程序之间的联系。它所发生的 错误与程序内实现的细节有关。例如,设计协议错、输入/ 输出格式错、数据保护不可靠、子程序访问错等。 (3)硬件结构错误 :这类错误在于不能正确地理解硬件如何工 作 。例如,忽视或错误地理解分页机构、地址生成、通道容 量、I/O指令、中断处理、设备初始化和启动等而导致的出 错。 (4)操作系统错误:这类错误主要是由于不了解操作系统的工 作机制而导致出错。当然,操作系统本身也有错误,但是一 般用户很难发现这种错误。 (5)软件结构错误:由于软件结构不合理或不清晰而引起的错 误。这种错误通常与系统的负载有关,而且往往在系统满载 时才出现。这是最难发现的一类错误。 (6)控制与顺序错误:这类错误包括:忽视了时间因素而破坏 了事件的顺序;猜测事件出现在指定的序列中;等待一个不 可能发生的条件;漏掉先决条件;规定错误的优先级或程序 状态;漏掉处理步骤;存在不正确的处理步骤或多余的处理 步骤等。 (7)资源管理错误:这类错误是由于不正确地使用资源而产生 的。
• 软件工程是应用计算机科学、数学及管理 科学等原理开发软件的工程。它借鉴传统 工程的原则、方法,以提高质量,降低成 本为目的。
一个典型的软件开发生存期
t
工作产品与里程碑
需求定义 模型
分析模型 设计模型 实现模型
用户、顾客、开发者等
软件生存周期
定义:从形成概念开始,经过开发、使用和维护, 直到最后退役的全过程成为软件生存周期 (software life cycle)。
度量和提高被测软件的质量,对测试软件进行工程 设计、实施和维护的整个生命周期过程”。
软件缺陷案例
Ø 千年虫 70年代的鼠目寸光 Ø 美国航天局火星登陆 90年代的测试不协调 Ø Inter CPU的浮点除法 缺陷带来的代价 Ø 迪斯尼的狮子王 Ø “冲击波”计算机病毒
什么是软件缺陷
Ø Glossary: defect, variance, fault, failure, problem, error, bug, inconsistency,anomaly, incident
(4)静态逻辑错误:这类错误主要包括:不正确地 使用CASE语句;在表达式中使用不正确的否定 (例如用“>”代替“<”的否定);对情况不适当地分 解与组合;混淆“或”与“异或”等。
4.数据错误 (1)动态数据错误 :动态数据 是在程序执行过程中 暂时存在的数据 (2)静态数据错误:静态数据在内容和格式上都是 固定的。它们直接或间接地出现在程序或数据库 中。由编译程序或其它专门程序对它们做预处理。 (3)数据内容错误:数据内容 是指存储于存储单元 或数据结构中的位串、字符串或数字。数据内容本 身没有特定的含义,除非通过硬件或软件给予解 释。数据内容错误就是由于内容被破坏或被错误地 解释而造成的错误。 (4)数据结构错误:数据结构是指数据元素的大小 和组织形式。在同一存储区域中可以定义不同的数 据结构。数据结构错误主要包括结构说明错误及把 一个数据结构误当做另一类数据结构使用的错误。 这是更危险的错误。 (5)数据属性错误:数据属性是指数据内容的含义 或语义。
软件生存周期包括软件定义、软件开发、软件使 用与维护。
软件生存期各阶段间需保持的正确性
理解正确性 表达正确性
用户要求 用户: 我要什么?
1
相符吗?
5
需求说明书
分析员: 我可以提 供什么?
理解正确性 设计正确性 表达正确性
2
设计说明书
设计员: 我要让软件 做什么?
运行结果
计算机: 程序运行得 到的结果
程序错误分类-按软件生存期阶段分类
4.编码错误
编码过程中的错误是多种多样的 ,大体可归为 以下几种 :数据说明错、数据使用错、计算错、比 较错、控制流错、界面错、输入/输出错,及其它 的错误。
在不同的开发阶段,错误的类型和表现形式是 不同的,故应当采用不同的方法和策略来进行检 测。
软件缺陷的状态
Ø Defects’ categories:
Ø Wrong: 未将规格说明书正确实现 Ø Missing:规定的或者预期的需求没有体现在产品中
Ø Extra :规格说明书中未规定的需求被纳入产品加以 实现
软件bug
• 软件bug机理可描述为:软件错误,软件缺陷,软 件故障,软件失效。
– 软件错误:是指在软件生存期内的不希望或不可接受 的人为错误,其结果是导致软件缺陷的产生。
• 为了便于跟踪和管理某个产品的缺陷,可以定义 不同的bug状态:
– 激活状态(Active或Open):问题还没解决,测试员报 的bug、或验证后bug仍然存在。
– 已修正状态(Fixed或Resolved):开发人员针对缺 陷,修改程序,认为已解决问题,或通过单元测试。
– 关闭或非激活状态(Close或Inactiv):测试员验证 Fixed bug后,确认bug已改的状态。
软件测试
& 教材 (Text Book)
软件测试
[美]Paul C.Jorgensen 译:韩柯
机械工业出版社
& 参考书目(References)
¨软件测试
[美]Ron Patton 译:张小松
¨软件测试方法和技术
朱少民主编 清华大学出版社
& 参考书目 (References)
Software Testing
程序错误分类
按错误的影响和后果分类
1. 较小错误:只对系统输出有一些非实质性影响。如,输出的 数据格式不合要求等。
2. 中等错误:对系统的运行有局部影响。如输出的某些数据有 错误或出现冗余。
3. 较严重错误:系统的行为因错误的干扰而出现明显不合情理 的现象。比如开出了0.00元的支票,系统的输出完全不可信 赖。
Ø 代码错误
Ø 编码人员造成的,人员素质和技术水平是其中原因之一
Ø 间接的看,来自上层的分析和设计问题
其他 编写产品描述 设计 编写代码
程序错误分类-按软件生存期阶段分类
• 软件的逻辑错误按生存期不同阶段分为4 类。
1.问题定义(需求分析)错误
它们是在软件定义阶段,分析员研究用户的要 求后所编写的文档中出现的错误。换句话说,这类 错误是由于问题定义不满足用户的要求而导致的错 误。
– Hold状态:第三方产品引起的、或是无法解决的 bug。
– Differed状态:不需解决或准备在下版中解决的bug。
软件缺陷的定义
Ø 简单说:软件中不满足的问题称为软件缺陷 Ø 软件缺陷的详细定义:
Ø 软件没有达到产品说明书表明的功能 Ø 软件出现了产品说明书指明不会出现的问题 Ø 软件功能超出产品说明书指明的范围 Ø 软件没有达到产品说明书虽未指明,但应该达到的功
A Craftsman’s APPROACH
SECOND EDITION
软件测试
英文版 第2版
Paul C. Jorgensen 机械工业出版社
第一讲 软件工程与软件测试
•软件危机和软件工程 •软件缺陷 •软件测试的意义 •软件测试工程师关注什么
软件危机
Ø 软件项目经常无法按期完成,超出经费的预算, 软件质量难以控制。
相关文档
最新文档