第1-2讲基于模型的测试详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
How
测试原理 测试过程 测试技术
测试原理
几个关键问题
Baidu Nhomakorabea
谁来测试
何时测试
何时停止测试
怎样进行测试
测试原理
测试应可追溯到需求
尽早、及时测试(何时开始?)
测试计划先于测试执行 80%的错误很可能由20%的模块造成
小规模大规模
一般来讲,完全测试不可能 充分覆盖程序逻辑/图结构是可行的(何时停止?)
Why
海湾战争
美国F-18战斗机飞行控制软件共发生500多次故障
爱国者导弹因为软件问题误伤了28名美军士兵
What
测试的发展 什么是软件测试 软件缺陷
测试的发展
参考:
Gelperin D, Hetzel B. The growth of software testing. Communications of the Association of Computing Machinery,1988,31(6):687–695
动态测试
运行程序,分析程序的执行状态和外部表现 白盒测试、黑盒测试及灰盒测试等
用户需求 需求分析 概要设计 详细设计 编码 验收测试 系统测试 集成测试 单元测试
测试模型
W模型
软件测试技术
白盒测试和黑盒测试(另一种:灰盒测试) 静态测试和动态测试(验证测试和确认测试) 传统测试和面向对象测试 基于代码的测试和基于模型的测试
软件测试技术
白盒测试
根据程序的结构和内部逻辑设计用例
Why
2004年12月20日,美空军的一架F22猛禽战斗机因软件问题在起飞过 程中失控坠毁
1996年6月4日阿丽亚娜5号火箭 在发射40秒后爆炸 原因:惯性参考系统软件的数据 转换异常 170万行代码
Why
2005年11月1日,东京证 券交易所因为软件升级出 现系统故障,导致早间股 市“停摆”
2007年北京机场信息系统瘫痪。 短短50分钟内,至少84个离港 航班发生延误
软件测试概述
Why
What
How
基于模型的测试
基于覆盖的测试
一致性测试
Why
测试是保证软件质量和可信性的主要手段之一
是否符合用户功能、性能需求 软件产品交付前尽可能发现错误
测试的代价非常高
占开发成本的30%-50%或更高
不测试代价更高
Why
The top 10 IT disasters
控制流覆盖:语句、判定、条件、判定/条件、条件组 合、基本路径测试、条件测试等等 数据流覆盖:全定义、全使用、全定义使用等等
黑盒测试
根据系统的功能性规格说明设计测试用例
等价划分、边界值分析、因果图测试、错误推测、组 合测试等
软件测试技术
静态测试
又称静态分析技术 人工或利用工具对程序和文档进行分析与检查 走查、审查、符号执行等
测试执行(运行测试、分析测试结果)
测试维护(保存测试,在软件变化时更新测试)
什么是软件测试
Myers
(1979)
执行程序的过程,其目的是发现错误
IEEE标准610.12
(IEEE, 1990)
① 在特定的条件下运行系统或构件,观察或记 录结果,对系统的某个方面做出评价 ② 分析某个软件项以发现现存的和要求的条件 之差别(即错误)并评价此软件项的特性
由独立第三方测试 (谁?)
保存测试相关文档,以便维护和回归测试
测试原理
100 80 60 40 20
0
编制说明书 设计阶段
编写代码
测试
发布
软件缺陷在不同阶段发现时修复的费用
测试过程模型
V模型
把测试过程作为编码之后的一个阶段 需求分析阶段隐藏的问题一直到验收测试才被发现 不能体现“尽早地和不断地进行软件测试”的原则
软件缺陷
未达到产品说明书中标明的功能 未达到产品说明书未指出但应当达到的目标 出现了产品说明书中指明不应出现的功能
难以理解、不易使用
软件缺陷
软件缺陷的特征
看不到
—软件的特殊性决定了缺陷不易看到
看到但抓不到
—发现了缺陷,但不易找到问题发生的原因
软件缺陷
相关术语
软件故障(Fault) 软件中的一个静态缺陷 软件错误(Error) 不正确的内部状态,某个故障的体现 软件失效(Failure) 外部的、不正确的行为
测试的发展
面向调试阶段
调试(debugging)、检查(checkout)、测试 (testing)无明显差别
面向求真(Demonstration)阶段
测试从调试中分离,成为生命周期中极为关键的环节 调试: Make sure the program runs 测试: Make sure the program solves the problem
1983年,前苏联导弹预警软件故障差点导致WW-III
1990年,AT&T网络瘫痪导致美国7500万用户受影响
1996年,阿丽亚娜5号火箭爆炸。 64-bit 16-bit 2006年,空客A380因软件不兼容问题导致拖延交货。英制公制 1998年,美国火星气候探测器因导航系统单位不同被毁 2004年,EDS CS2计算机给纳税人带来10亿英镑损失。 1999/2000年,千年虫问题 2006年,索尼电池引发的一系列笔记本爆炸事 1999年,西门子计算机故障引发50万英居民新护照延迟 2007年,软件故障导致1.7万旅客滞留LA国际机场8小时。
测试的发展
面向证伪(Destruction)阶段
Myers定义测试是为发现错误而执行程序的过程
测试的发展
60%以上的软件错误并非程序错误,
而是需求和设计错误
错误理解用户需求会导致开发完美优良
的,但却是不正确的产品
需求和设计阶段的质量保证非常重要
测试的发展
其他 10%
编写代码 7%
设计 27%
软件产品说明 书(需求) 56%
软件缺陷分布
测试的发展
面向评估(Evaluation)阶段
集成分析(Analysis)、评审(review)和测试活动,软件 生命周期的每个阶段对应相应的活动和产品集
面向预防(Prevention)阶段
测试与开发并行,包括:
测试计划 测试分析(建立测试需求或目标) 测试设计(指明测试集的结构、单个测试用例和过程) 测试实现(开发测试数据、测试支持软件)