软件工程教案_10(第六章)

上传人:ZJ****1 文档编号:59828490 上传时间:2018-11-12 格式:PPT 页数:144 大小:627.50KB
返回 下载 相关 举报
软件工程教案_10(第六章)_第1页
第1页 / 共144页
软件工程教案_10(第六章)_第2页
第2页 / 共144页
软件工程教案_10(第六章)_第3页
第3页 / 共144页
软件工程教案_10(第六章)_第4页
第4页 / 共144页
软件工程教案_10(第六章)_第5页
第5页 / 共144页
点击查看更多>>
资源描述

《软件工程教案_10(第六章)》由会员分享,可在线阅读,更多相关《软件工程教案_10(第六章)(144页珍藏版)》请在金锄头文库上搜索。

1、第六章 软件测试,6.1 基本概念 软件开发过程必须伴有质量保证活动。 软件测试是软件质量保证的关键元素,代表了规约、设计和编码的最终检查。,有关测试的思考题,软件测试是一门非常重要的学科,主要研究内容是什么? 软件测试需要什么样的专业基础 软件质量到底是什么? 测试的目标是什么? 开发一个测试系统之前你是否明白: 可以测试什么? 应该测试什么? 最终能够测试什么? 测试的目标是什么?,软件产品最大的成本是检测软 件错误、修正软件错误的成本。 在整个软件开发中,测试工作量 一般占30%40%,甚至50%。 在人命关天的软件(如飞机控制、核反应堆等)测试所花费的时间往往是其它软件工程活动时间之和

2、的三到五倍,软件测试背景,软件是人编的所以不完美 实例: 1994-1995,迪斯尼的狮子王系统不支持问题 Intel的pentium处理器 1994年浮点除法缺陷 200年8月28日,1.13MHZ处理器一个可能导致运行程序被挂起的执行指令问题 1999年12月3日,美国航天局火星极地登陆飞船失踪 1991年爱国者导弹防御系统系统时钟错误积累造成跟踪系统失去精确度 千年虫,世界各地解决2000年错误超过数亿美元,软件测试的认识的发展,人们对软件测试认识的五个阶段: 阶段1 测试=调试 阶段2 测试是证明软件正确 阶段3 测试是发现软件中错误 阶段4 测试是减小软件不工作的风险 (是度量软件质

3、量要素的过程) 阶段5 测试可产生低风险的软件的一 种认识上的训练,三个盲人和一头大象:你能够为质量 下定义吗?,质量管理领域权威人物J.M.Juran将质量 定义为“决定产品性能和满意程度的 特征”, 测试注重于产品的满意度。 测试应针对这样一种情况: 软件产品在一些特定的范围内不能满足客户的合理要求。 通过测试过程可以评定质量风险(可能的错误),了解被测试系统中存在的错误模式(观察到的错误症状)。,质量控制技术,质量控制活动分类,开发方法学,配置管理,验证技术,评 审,正确性验证,性能调试,组件测试,集成测试,系统测试,原子事务,模块冗余性,检 错,质量控制,避免错误,容 错,调 试,测

4、试,软件质量问题,以软件测试为中心的软件质量保障技术 软件 静态测试技术 质量 软件度量技术 控制 动态测试技术 技术 配置管理技术 修改控制与管理技术 软件测试是保证软件质量,提高 软件可靠性的关键,软件测试的目标,(1)预防错误: 几乎不可实现 (2)发现错误,6.1.1 测试的目的与地位 G.J.Myers在中认为: 1.测试是为了寻找错误而运行程序的过程。 2.一个好的测试用例是指很可能找到迄今为止尚未发现的错误的测试。 3.一个成功的测试是揭示了迄今为止尚未发现的错误的测试。,E.W.Dijkstra 指出: “程序测试能证明错误的存在,但不能证明错误不存在.” 测试的目的是发现程序

5、中 的错误,是为了证明程序有错, 而不是证明程序无错.,把证明程序无错当作测试目的不仅是不正确的, 完全做不到的,而且对做好测试没有任何益处,甚至是十分有害的. 软件测试要设法使软件发生故障,暴露软件错误 测试的“成功”与“失败” 能够发现错误的测试是成功的 测试,否则是失败的测试。,“测试的目的是说明程序正确地执行它应有的功能” 这种说法正确吗? 例:程序Triangle,输入三个整数,表示一个三角形的三个边长,该程序产生一个结果,指出该三角形是等边三角形、等腰三角形还是不等边三角形。 为说明其能正确执行它的功能,可使用“测试用例”(3,4,5),(5,5,6),(6,6,6), 程序都能给

6、出正确结果,是否就可认为程序是正确的?,难以说清的软件缺陷,古谚: “一片树叶飘落在森林中没有人听见, 谁能说它发出了声音?”,由于不能报告没有看见的问题,因此, 没有看见就不能说存在软件缺陷,如果软件中的问题没有人发现,那么它算不算软件缺陷?”,只有看到了,才能断言软件缺陷,尚未 发现的软件缺陷只能说是未知软件缺陷。,眼 见 为 实,6.1.2 测试原则 (1)所有的测试都应追溯到用户需求 最严重的错误(从用户角度)是那些导致软件无法满足需求的错误。 程序中的问题根源可能在开发 前期的各阶段解决、纠正错误也必须追溯到前期工作。,测试与开发前期工作的关系,决定软件与系统的配合关系,需求分析,概

7、要设计,详细设计,编 码,单元测试,集成测试,确认测试,系统测试,开发前期出现错误的扩展,计划,需求 分析,设 计,编 码,测 试,A,A,B,软件生存期各阶段间需保持的正确性,用户要求,用户: 我要什么?,运行结果,计算机: 程序运行得 到的结果,源程序,程序员: 我要让计算 机什么做?,设计说明书,设计员: 我要让软件 做什么?,需求说明书,分析员: 我可以提 供什么?,1,2,3,4,5,理解正确性 表达正确性,理解正确性 设计正确性 表达正确性,理解正确性 编码正确性,运行正确性 输入正确性,相符吗?,测试原则 (2)概要设计时应完成测试计划, 详细的测试用例定义可在设计 模型确定后开

8、始,所有测试可 在任何代码被产生之前进行计 划和设计。,软件测试不等于程序测试 软件测试应贯穿于软件定义与开发的整个期间; 据美国一家公司统计,查出的软件错误中,属于需求分析和软件设计的错误约占 64%,属于程序编写的错误仅占 36%。程序编写的许多错误是“先天的”。,测试阶段工作步骤 单元测试: 检验每个模块能否单独 工作. 集成测试: 检验概要设计中模块接 口设计问题 确认测试: 以需求规格说明书为检 验尺度 系统测试: 综合检验 测试可视为分析、设计、编码三个阶 段的最终复审,以保证软件质量.,测试原则 (3)pareto原则:测试发现的错误中80%很可能起源于20%的模块中。应孤立这些

9、疑点模块重点测试。 (4)穷举测试是不可能的。 (5)应由独立的底三方来构造测试。 (开发和测试队伍分别建立),测试原则,例:测试计算器程序 加法测试 1+0= 1+99999999999999999999999999999999= 2+0= 2+99999999999999999999999999999999= 99999999999999999999999999999999+99999999999999999999999999999999= 1.0+0.1= 1.0+0.2= 减法测试 乘法测试 除法测试 求平方根 百分数 倒数,测试原则 (6)测试用例应由输入数据和预期的输 出结果两部分

10、组成. (7)兼顾合理的输入和不合理的输入数据 (8)程序修改后要回归测试 (9)应长期保留测试用例,直至系统废弃。,测试原则:软件测试是有风险的行为,数 量,遗漏软件 缺陷数目,测试费用,测试中,测试后,软件,测试工作量,每一个软件项目都有一个最优的测量量,最优测量量,6.1.3 可测试性 可测试软件的特征: 可操作性 可观察性 可控制性 可分解性 简单性 稳定性 易理解性,“好”测试的属性: 发现错误的可能性高 不冗余 在目的相似的测试中,应使用最可能找到错误的测试 每一个测试应独立执行,软件测试有关概念,测试中用到的模型元素(UML类图),测试组,测试用例,故 障,组 件,测试存根,测试

11、驱动程序,误 差,错 误,改 正,由修改,由引起,由引起,找出,使用,修改,1n,*,*,*,*,*,*,*,*,*,*,*,组件是系统中可以孤立进行测试的部分,一个组件可以是对象,一组对象,一个或多个子系统。 错误,也称缺陷或不足,是可能引起组件不正常行为的设计或编码错误。 误差是系统执行过程中错误的表现。 故障是组件的规格说明与其行为之间的偏差,故障是由一个或多个误差引起的。 测试用例是一组输入和期待的结果,它根据引起故障和检查的目的来使用组件。 测试存根是被测试的组件所依赖的其它一些组件的实现部分。测试驱动程序是依赖被测试组件的那个组件的实现部分。 改正是对组件的变化。改正的目的在于修正

12、错误。改正可能会产生新的错误。,错误(fault)、误差(error)和故障(failure),出轨(出故障)?,图中不表示故障,因为既没有指定期望行为也没有任何观察的行为, 它也不表示误差,因为这不意味着系统正处在进一步处理将导致故障的状态.,错误(fault)、误差(error)和故障(failure),用例名称 DriveTrain 参与执行者 火车司机 入口条件 司机按下控制面板上的StrartTrain 事件流 1.列车开始在轨道1上运行 2.列车平移到轨道2 退出条件 列车运行在轨道2上 特殊条件 没有,用例DriveTrain指定了列车的期望行为:,错误(fault)、误差(er

13、ror)和故障(failure),测试用例标识符 DriveTrain 测试位置 http:/www12.in.tum.de/ 要测试的特征 引擎连续运行5s 特征合格/不合格标准 如果列车连续前进5s,并且至少 通过两个轨道的长度,则测试通过 控制方法 驱动程序StrartTrain调用StrartTrain() 方法 数据 从输入文件http:/www12.in.tum.de/中 得到运行方向和持续时间 ,用例DriveTrain的测试用例DriveTrain :,执行这个测试用例时,可以证明系统是包含有错误的,软件测试有关概念术语和定义,软件测试要精度还是准确度很大程度上取决于产品是什么

14、,最终取决于开发小组的目标。,既不准确又不精确,精确但不准确,准确但不精确,既准确又精确,精确和准确,软件测试有关概念术语和定义,验证和合法性检查 验证是检查软件符合产品说明书的过程 合法性检查是保证软件满足用户要求的过程 质量和可靠性 可靠性只是质量的一个方面 测试和质量评判(QA) 软件测试员的目标是找出软件缺陷 软件质量评判人员的主要职责是创建和加强 促进软件开发并防止软件缺陷的标准和方法,测试 (test) 调试 (debug),以已知条件开始, 使用预先定义的程序, 有预知的结果,以不可知内部条件开始,结果一般不可预见,有计划,被动的,由独立的测试组,在 不了解软件设计的条 件下完成

15、,由程序作者进行,发现错误,找出错误位置,排除,测试与调试(排错),软件错误分类 功能错(需求分析错误) 软件结构错 数据错 编码错 软件集成错 测试定义与测试执行错误,6.1.4 测试用例设计 选择测试用例是软件测试员最重要 的一项工作。 测试用例的属性: 属性 描述 name 测试用例的名称 location 可执行的完全路径名 input 输入数据或命令 oracle 与测试输入相比较的期待测试结果 log 测试生产的输出,程序测试举例 例:程序 Triangle, 输入三个整 数,表示一个三角形的三个边 长,该程序产生一个结果,指 出该三角形是等边三角形、等 腰三角形还是不等边三角形。,判断三角型的测试用例设计: 输入数据 预期结果 (1) 6;6;6 等边 (2) 8;8;4 等腰 (3) 4;5;6 一般 还应输入非法数据: 0; 7; 9 -7;3; 5 a; 2; 7 等,6.1.5 软件测试信息流,软件 配置,测试,测试 配置,测试 工具,结果 分析,排错,可靠性 分析,测试 结果,错误,预期 结果,出错率,改正 的软件,预测 的可 靠性,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号