河北工业大学 软件工程 教师课件 第五节 软件实现与验证_第1页
河北工业大学 软件工程 教师课件 第五节 软件实现与验证_第2页
河北工业大学 软件工程 教师课件 第五节 软件实现与验证_第3页
河北工业大学 软件工程 教师课件 第五节 软件实现与验证_第4页
河北工业大学 软件工程 教师课件 第五节 软件实现与验证_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第五讲第五讲 软件实现与验证软件实现与验证 (Software Implementation and Validation) Welcome to Software Engineering Lecture 5 Zhang Jiannan 目标目标 n了解编程和调试的基本工作内容; n掌握软件验证和有效性确认的基本知识和程序检 查过程及方法; n熟悉软件测试的基本方法; n了解有效性测试和缺陷测试的区别; n掌握系统及组件测试的原则和常用的测试用例设 计方法; n了解支持测试的CASE工具的工作原理。 内容内容 n程序设计与调试; n验证与有效性确认; n软件测试 1 程序设计与调试程序设计与调

2、试 n程序设计的任务是把设计转换成程序以及在程 序中去除错误,包括编程与调试两个过程。 n编程是一种个人行为通常没有统一的模式。 n通常,程序员要对自己开发的程序进行测试, 这时程序中的一些明显的错误会暴露出来并被 根除,这个过程叫调试。 调试过程调试过程 n验证验证: “Are we building the product right?”. n检查软件是否符合它的规格描述。 n有效性确认有效性确认: “Are we building the right product?”. n检查软件是否满足客户的期待。 2 验证和有效性确认验证和有效性确认( Verification & Validat

3、ion) n在软件整个生命周期中 V & V 必须在软件过程 的每一个阶段得以执行。 nV & V过程有两个基本目标: n发现系统的缺陷; n从操作的角度评价系统的有用性和可用性。 V & V 过程过程 V& V 目标目标 n验证和有效性确认的最终目标是要建立“软件 达到了设计目标”的信心信心。 n注意:注意:我们并不要求软件系统完全无缺陷。而 是足以完成用户所要求的任务。 V & V 信心信心 n对V & V所要求的信心程度信心程度取决于系统的设计目标、用 户的期望和目前的市场环境: n软件功能软件功能 nThe level of confidence depends on how crit

4、ical the software is to an organisation. n用户期望用户期望 nUsers may have low expectations of certain kinds of software. n市场环境市场环境 nGetting a product to market early may be more important than finding defects in the program. n软件审查软件审查 通过对系统的各种静态成果,如需求文档、设计文 档、源代码,进行检查和分析发现问题。 nMay be supplement by tool-bas

5、ed document and code analysis n软件测试软件测试 通过使用测试数据执行系统,检查运行结果来发现 问题。 nThe system is executed with test data and its operational behaviour is observed 静态与动态验证静态与动态验证 静态与动态验证静态与动态验证 Software inspections Software testing n测试的目的是为了揭示程序中存在错误,而不 是没有错误。 n静态检查无法检验软件是否可用,也不能检验 非功能需求,因此程序测试是必不可少的,是 起决定性作用的V & V

6、技术。 n在V & V过程中,程序测试和静态检查通常是 结合在一起使用的。 程序测试程序测试 n缺陷测试缺陷测试 nTests designed to discover system defects. nA successful defect test is one which reveals the presence of defects in a system. n有效性测试有效性测试 nIntended to show that the software meets its requirements. nA successful test is one that shows that a

7、 requirements has been properly implemented. 测试类型测试类型 n缺陷测试和调试是不同的过程,通常交叉进行。 n检验和有效性验证的目的是确定系统中存在缺 陷; n调试考虑的是定位和修改缺陷。 测试和调试测试和调试 调试过程调试过程 n仔细的规划能够使程序检查和测试的工作得到 更多的回报。 nV & V过程的规划应该从开发过程的早期就开 始。 nV & V规划应该明确的说明静态检查与测试任 务与分工。 n测试规划主要是制定测试过程标准,而不是描 述测试本身。 2.1 V & V 规划规划 系统开发的系统开发的 V 模型模型 软件测试计划的结构软件测试计

8、划的结构 n测试过程测试过程 n需求跟踪需求跟踪 n测试项目测试项目 n测试进度测试进度 n测试记录程序测试记录程序 n硬软件需求硬软件需求 n约束约束 2.2 软件审查软件审查 n软件审查是一个静态的V&V过程,这个过程中 通过对软件系统复查来发现错误、遗漏和异常。 n通常,审查的对象是源代码,但也可以是任何 可读文档。 n软件审查是一种比程序测试更有效的缺陷发现 技术。 审查的好处审查的好处 n单一的审查工作就可以发现系统很多错误; n无需额外的成本就可以检查系统的不完全版本; n审查也能够检查更广泛的程序属性。 审查与测试审查与测试 n审查与测试各有优缺点,它们是互补的而不是 对立的测试

9、技术; n两种技术在V&V过程中应该一同配合使用; n审查能够检查程序与规格描述是否相符,但不 能检查程序的运行效果是否符合用户的预期, 也不能检查如性能、可用性的非功能需求。 程序审查过程程序审查过程 n程序审查是对程序文档的正式复查,目标是检 查程序的缺陷。 n这里所说的缺陷可能是逻辑错误,可能是代码 中能够指示错误条件的异常,还可能是与机构 和项目目标不相符的情况。 程序审查的前条件程序审查的前条件 n对被审查的代码有一个精确的描述; n审查小组成员应该熟悉机构的标准; n有一个最新的、语法正确的、完整的代码版本, 并发给所有的团队成员; n准备一个程序员常出错误的核对清单; n管理者要

10、接受程序审查在开发早期会增加成本 这一事实。 审查过程审查过程 审查清单审查清单 n审查中,常见错误核查清单是必要的准备,是 核查人员进行程序检查的基本依据; n对于不同的程序设计语言要准备不同的清单, 因为不同的语言有不同的错误特征。 审查清单审查清单 3 软件测试软件测试 思考: 结合自己编程经验,思考测试的目的是什么 ?单元测试过程有哪些活动?什么样的输入数据 是有效的? 3 软件测试软件测试 测试阶段测试阶段 测试阶段测试阶段 n组件测试组件测试 n测试单个的程序组件; n通常由程序开发者完成(除了要求特别高的系统); n这个阶段的测试大多依靠测试者的经验。 n系统测试系统测试 n测试

11、由组件整合成的子系统和系统; n有专门的测试团队进行测试; n测试要依据需求规格说明进行。 测试过程的目标测试过程的目标 n有效性测试有效性测试 n目标是向开发者和用户证实系统满足了用户需求; n每个需求至少要有一个测试,以证明系统是按预期 运行的。 n缺陷测试缺陷测试 n目标是找出软件中的缺陷和不足; n一个成功的测试就是找出了系统存在某个目前未知 的缺陷。 软件测试过程软件测试过程 n进行无遗漏测试是不可能的。 n应该有如何选择测试用例的策略: n所有能从菜单中得到的功能都应被测试到; n可以从同一个菜单中访问的组合功能都需要被测试; n在需要用户输入的地方,所有功能都必须用正确的 输入和

12、不正确的输入进行测试。 测试策略测试策略 3.1 组件测试组件测试 n组件测试(单元测试)是测试系统中单个组件的过程, 这个过程通常和编程工作一起进行,作为单元代码的 检验手段。组件测试是一个缺陷测试的过程。 n这里所说的组件包括:单个函数单个函数;对象类对象类 ;复合组件复合组件 。 n由于组件要在一定上下文环境中运行,所以进行单元 测试要为每个待测组件开发额外的驱动模块和桩模块。 组件测试环境组件测试环境 驱动模块 待测模块 桩模块桩模块 不与最终产品一起 交付 3.2 系统测试系统测试 n系统测试包括集成组件形成子系统和系统进行 测试。 n可以结合增量式交付。 n两个不同的阶段: n集成

13、测试集成测试 - the test team have access to the system source code. The system is tested as components are integrated. n发布测试发布测试 - the test team test the complete system to be delivered as a black-box. 集成测试集成测试 n自顶向下集成自顶向下集成 n从主控模块开始,沿着控制层次结构逐步向 下,利用深度优先或广度优先的方式将从属 于主控模块的其他模块集成到系统结构中。 n自底向上集成自底向上集成 n从原子模块

14、开始,从底层把模块逐步向上集 成为更大规模的子系统和系统。 集成测试包括把组件集成为系统和对合成的系统进行 测试,以发现组件集成过程带来的问题,集成方式可以分 为: M1 M2M3M4 M5M6 M8 M7 M9 增量集成测试增量集成测试 为了简化测试中错误定位的问题,可以采用增量集成的方法。 发布测试发布测试 n发布测试是对将要发布给用户的系统版本进行 测试的过程。 n目标是验证交付的产品是否达到了要求。 n发布测试通常是一个“黑盒测试过程”: n只依据系统规格说明进行测试; n测试者不需了解有关系统实现的任何细节。 黑盒测试黑盒测试 测试指导测试指导 n以下测试指导原则能够帮助测试者选择使

15、系统 产生错误的输入: n选择能够迫使系统产生所有错误消息的输入; n设计能够使系统的输入缓冲溢出的输入; n重复相同的输入或一系列输入很多次; n设计能够产生无效的输入; n迫使输出结果太大或太小的输入。 3.3 测试用例设计测试用例设计 n设计测试用例是系统测试与组件测试的关键工作,主 要是通过设计输入数据设计输入数据与预计的输出预计的输出来测试系统。 n测试用例设计的目的是建立一组测试用例集合,用尽 可能少的测试代价有效的发现系统缺陷并证明系统能 够满足需求。 n设计测试用例的常用方法:设计测试用例的常用方法: n划分测试与边界值分析;划分测试与边界值分析; n结构化测试(白盒测试)。结

16、构化测试(白盒测试)。 3.3.1 划分测试划分测试 n划分测试又叫做等价类划分测试法,是一种黑盒 测试方法。 n程序的输入与输出结果总会落到几个不同的类中, 这些类中的数据有着共同的特征,我们把这些类 叫作等价类等价类或等价划分等价划分。 n合理划分等价类,在每一个等价类中取一个或少 数几个数据作为测试输入,就可以用少数有代表 性的数据,取得较好的测试效果。 等价划分等价划分 例:三角形判定例:三角形判定 n某程序的功能是“输入三个正整数作为边长,判断该三条 边构成的三角形是等边、等腰或一般三角形”。请对该程 序的算法用等价类和边界值分析法设计测试用例,并检查 逻辑覆盖标准。 输入数据输入数

17、据合理等价类合理等价类不合理等价类不合理等价类 A,B,C1 正整数2 有非正整数 3 某两个数相加小于或等于剩余的 数 4 有非数字字符 5 三边相等 6 两边相等 7 三边不相等 合理等价类测试用例表合理等价类测试用例表 不合理等价类测试用例表不合理等价类测试用例表 测试数据测试数据期望结果期望结果覆盖范围覆盖范围 3,4,5输出“一般 三角形” 1正整数 7三边不相 等 3,3,3输出“等边 三角形” 1正整数, 5三边相等 3,3,2输出“等腰 三角形” 1正整数, 6两边相等 测试数据测试数据期望结果期望结果覆盖范围覆盖范围 -3,4,5输入无效2有非正整 数 3,3,6输入无效3某

18、两个数 相加小 于或等 于剩余 的数 A,B,C输入无效4 有非数字 字符 边界值分析边界值分析 n人们从长期的测试工作经验得知,大量的错误是发生 在输入或输出范围的边界上,而不是在输入范围的内 部。因此针对各种边界情况设计测试用例,可以查出 更多的错误。 n比如,在做三角形判定时,要输入三角形的三个边长: A、B和C。 我们应注意到这三个数值应当满足A0、B 0、C0、ABC、ACB、BCA,才能构成 三角形。但如果把六个不等式中的任何一个大于号 “”错写成大于等于号“”,那就不能构成三角 形。问题恰出现在容易被疏忽的边界附近。这里所说 的边界值分析是指找到等价类中稍高于其边界值及稍 低于其

19、边界值的一些特定情况。 等价类等价类测试用例说明测试用例说明测试数据测试数据期望结果期望结果 输入值1个非数字字符 2个非数字字符 全部都是非数字字符 两正整数之和等于第 三个数 两正整数之和小于第 三边 3,4,Ok A,B,3 A,B,C 3,3,6 3,3,7 输入无效 输入无效 输入无效 输入无效 输入无效 三边相等 A=B =C 3,3,3输出“等边三角形” 两边相等A=B,AC A=C, AB B=C, BA 3,3,2 5,3,5 5,3,3 输出“等腰三角形” 三边不等 A B C 3,4,5输出“一般三角形” 三角形判定三角形判定 n结构化测试是根据软件的结构知识导出测试用

20、例的测试方法。 n又叫做“白盒测试法”。 n对组件中所用的算法结构的理解可以帮助我们 找出更多的测试用例。 3.3.3 结构化测试结构化测试 结构化测试结构化测试 结构化测试的目标结构化测试的目标 n目标: (1)保证一个模块中的所有保证一个模块中的所有 独立路径至少被执行一次;独立路径至少被执行一次; (2)对所有的逻辑值均需测)对所有的逻辑值均需测 试真和假;试真和假; (3)在上下边界以及可操作)在上下边界以及可操作 的范围内执行所有循环;的范围内执行所有循环; (4)检验内部结构以确保其)检验内部结构以确保其 有效性。有效性。 n白盒测试能够比黑盒测试发现 更细小的缺陷。 白盒测试法白

21、盒测试法 n白盒测试把测试对象看做一个打开的盒子,允 许测试人员利用程序内部的逻辑结构及有关信 息,设计或选择测试用例,对程序所有逻辑路 径进行测试。 n白盒测试主要有逻辑覆盖法逻辑覆盖法和基本路径测试法基本路径测试法。 1) 1) 逻辑覆盖法逻辑覆盖法 n逻辑覆盖一系列测试过程的总称,这组测试会 逐渐进行越来越完整的通路测试。 n由于覆盖测试的目标不同,逻辑覆盖又可分为: 语句覆盖、判定覆盖、条件覆盖、判定条件 覆盖、条件组合覆盖及路径覆盖。 语句覆盖 n语句覆盖就是设计若干个测试用例,使得每一 可执行语句至少执行一次。 n它是最弱的逻辑覆盖策略,效果有限,必须与 其它方法交互使用。 判定覆

22、盖判定覆盖 n判定覆盖就是设计若干个测试用例,使 得程序中每个判断的取真分支和取假分 支至少执行一次。判定覆盖又称为分支 覆盖。 n判定覆盖比语句覆盖强,但对程序逻辑 的覆盖程度依然不高。 条件覆盖条件覆盖 n条件覆盖就是设计若干个测试用例,使得程 序中每个判断的每个条件的每个可能取值至 少执行一次。 n条件覆盖深入到判定中的每个条件,使每个 条件都取到了两个不同的结果,覆盖性强于 判定覆盖,但有时可能会不满足判定覆盖的 要求。 判定条件覆盖判定条件覆盖 n判定条件覆盖就是设计足够的测试用例,使 得判断中每个条件的所有可能取值至少执行一 次,同时每个判断本身的所有可能判断结果至 少执行一次。

23、n从表面上来看,判定条件覆盖测试了所有条 件的取值。但存在多个判定时,可能会遗漏某 些判定条件取值错误的情况。 多重条件覆盖多重条件覆盖 n多重条件覆盖就是设计足够的测试用例,使 得每个判断的所有可能的条件取值组合至少 执行一次。也称为条件组合覆盖。 n这是一种相当强的覆盖准则,可以有效地检 查各种可能的条件取值的组合是否正确。它 不但可覆盖所有条件的可能取值的组合,还 可覆盖所有判断的可取分支,但并不一定可 以使程序中的每条路径都执行到。 路径测试路径测试 n路径测试就是设计足够的测试用例,覆盖程序 中所有可能的路径。这是最强的覆盖准则。 n但在路径数目很大时,真正做到完全覆盖是很 困难的,

24、必须把覆盖路径数目压缩到一定限度。 Example: 两个判定:d1, (A1)and(B=0) d2, (A=2)or(x1) 四个条件: 1、A1,2、B=0, 3、A=2,4、 x1 四条路径: ace、 abd、 abe、 acd Td1 and Td2 ace Fd1 and Fd2 abd Fd1 and Td2 abe Td1 and Fd2 acd T1 and T2 Td1 F1 or F2 Fd1 T3 or T4 Td2 F3 and F4 Fd2 覆盖方式输入数据(A,B,X)输出数据(A,B,X)取真条件覆盖路径 语句覆盖2,0,42,0,3T1T2T3T4ace 判

25、定覆盖2,0,1 1,1,1 2,0,3/2 1,1,1 T1T2T3ace abd 条件覆盖2,0,1 1,1,2 2,0,3/2 1,1,3 T1T2T3 T4 ace abe 判定条件覆盖2,0,4 1,1,1 2,0,3 1,1,1 T1T2T3T4ace abd 条件组合覆盖2,0,4 2,1,1 1,0,3 1,1,1 2,0,3 2,1,2 1,0,4 1,1,1 T1T2T3T4 T1T3 T2T4 ace abd abd abd 路径覆盖2,0,4 1,1,1 1,1,2 3,0,3 2,0,3 1,1,1 1,1,3 3,0,1 T1T2T3T4 T4 T1T2T4 ace abd ade acd Example: 2) 2) 基本路径测试基本路径测试 n基本路径测试的原理:基本路径测试的原理: “在程序控制流图的基础上,分析控制结构的环路 复杂度,并用这个复杂度为指南定义执行路径的基本集 合,从而导出基本可执行路径集合,设计出测试用例 并保证每个可执行语句至少执行一次,而且每个条件每个可执行语句至少执行一次,而且每个条件 在执行时都将分别取真、假两种值在执行时都将分别取真、假

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论