【2017年整理】软件检验与软件测试.ppt

  1. 1、本文档共106页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【2017年整理】软件检验与软件测试

第9章 软件检验与软件测试 (教材第19章、20章) 有关概念 VV规划 软件检查 程序的自动静态分析 软件测试的目的和原则 测试用例设计 软件测试过程 面向对象测试 测试的管理 软件的可靠性与可用性 9.1 检验与有效性验证的有关概念 检验和有效性验证(Verification and Validation ,VV,也有人称为验证与确认)是整个软件生命周期中对各阶段(需求评审、设计评审、代码检查、产品测试)过程活动的结果检查和分析的过程,以确保软件既能符合定义中的要求,又能满足客户或用户的要求。 Boehm给出了二者之间的不同: ? 检验:是否正确地建立一个产品? ? 有效性验证:是否建立了一个正确的产品? 检验(验证)的作用是检查软件是否符合它的描述中所定义的功能和非功能的需求。而有效性验证(确认)要说明软件是否最终满足用户的要求。如需求中的一些错误和遗漏可能在系统完全实现后才能发现。 在VV过程中有两个系统检验和分析技术: ? 软件检查 检查各种文档,静态检验技术。 ? 软件测试 动态检验技术,实现运行检验。 下图给出了两个技术活动在软件过程中的位置: 验证技术包括程序检查、自动化源代码分析和形式化检验。但静态技术只能检查程序及其描述之间的吻合程度(检验),不能够说明软件真的是有用的,也不能检验软件的非功能特性。只有通过测试才能验证系统的有效性。 测试和调试是两个不同的过程: ? 测试是一个发现软件缺陷( Defect)的过程。 ? 调试是一个对缺陷定位和修改的过程。如图所示: 9.2 VV规划 该过程的规划应该在开发过程的早期开始。下图说明了测试计划如何从系统描述和设计中导出。有时也称之为V模型。 对测试的规划主要是制定测试过程标准。主要组成部分见下表: 软件测试计划的结构 9.3 软件检查 系统的软件测试过程很耗时间,成本是昂贵的。 软件检查在程序完成之前就应进行。检查的对象是可以是系统模型、系统描述或源代码。要充分利用开发系统的知识和源表示形式的语义来发现错误。 软件检查是一种有效的错误检测技术,能够在初始阶段发现绝大多数错误,有专家报告说明超过60%的程序错误是通过检查发现的。 软件检查不仅包括程序检查,还包括对软件过程中生成的所有文档的的检查。 程序检查 程序检查的目标是发现缺陷。缺陷可能是逻辑错误、错误的条件、或是与机构和项目标准不相符的问题。 程序检查的过程是一个正式的过程,应该由4个人以上的小组来实行。教材P295列出了检查过程中的角色。 下图列出了一般的程序检查过程: 检查过程应该有一个程序员常出错误的核对清单,团队有经验的人员经过讨论建立该清单,并随着经验的积累丰富这个清单。不同的程序语言由于编译器提供的检查层次不同应该有不同的清单。 教材P296列出了要检查的项目(数据、控制、I/O、接口、存储管理、异常管理等方面的缺陷)。 专家建议检查过程不要超过两小时,否则缺陷检查的效率会大大降低。因此在程序开发过程中应该经常进行检查,每次选择一个相对较小的组件。 管理者一定要将程序检查和人事评价严格分开,检查结果暴露的错误不能作为程序员事业评估的依据。要建立起一种鼓励发现错误、不会因为这些错误引来指责的良好的企业文化。 9.4 自动静态分析 静态程序分析器是一个软件工具(如Unix系统中用于C语言的Lint)。扫描源代码,通过解析程序文本识别缺陷。如:有不可到达的代码段、未初始化的变量或指针、未说明或使用的变量、可能的数组越界、参数类型或个数不匹配等。 静态分析包括以下几个阶段: ? 控制流分析 找出并显示有多重出口或入口的循环以及不可到达的代码段(如无条件转移语句包围的一段代码;条件语句中不可能到达的条件)。 ? 数据使用分析 突出显示变量的使用情况。也发现那些判定值从不发生改变的条件。 ? 接口分析 检查函数或子程序说明和使用的一致性。强类型检查语言(Pascal、Java)编译器已包含该功能。接口分析能发现类型检查较弱的语言(如C或C++较小的子集)中的类型错误,也能发现已定义但未被调用的函数和子程序或从未使用过的函数结果。 ? 信息流分析 找出输入变量和输出变量之间的依赖关系。显式地列出程序中使用的变量值的出处,能给出影响变量值的条件。 ? 路径分析 找出所有可能的路径并列出在一条路径中执行的语句。 信息流分析和路径分析产生大量的信息,是从不同视点展示这

文档评论(0)

love87421 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档