软件验证技术教案分析.ppt

  1. 1、本文档共281页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 软件验证技术 软件验证 1.定义: 指通过检查和提供客观证据来表明软件已经满足规定的需求。 作用: 确保软件质量和降低软件成本的重要手段,关系到软件的整个生存周期 3.软件验证的方式: 测试 证明 进行软件测试的原因 任何工业产品在出厂前都要经过严格的质量检验,软件产品也不例外,在编码和调试完成之后,还需要进行严格的测试! 软件开发的前面各阶段都已经采取了各种方法和技术进行质量保证,为什么还要进行软件测试? 由于软件是一种高密集度的智力产品,比一般的硬件产品更复杂和难以控制。虽然在前阶段的开发过程中,采取了相应的措施,但仍然不可避免的会存在错误。 还得提醒一下同学们:软件测试是很困难的,必须要有一整套的方法和技术进行指导。 测 试 测试分为静态测试和动态测试。 测 试 测试是一项周期长、成本高的软件工程活动。 一般的软件开发组织要将30%-40%的项目精力投入到测试之中,一些人命关天的软件其测试费用往往更高。 测试无法保证测试后的软件不再有错误。 测试过程中将产生下述基本文档: (1)测试计划:确定测试范围、方法和需要的资源等。 (2)测试过程:详细描述与每个测试方案有关的测试步骤和数据,包括测试数据及预期的结果。 (3)测试结果:把每次测试运行的结果写入文档,如果运行出错,则应产生问题报告,并且通过调试解决所出现的问题。 证 明 通过形式化的数学方法来确保软件正确性的活动。 由于软件本身的复杂性,程序正确性证明还远未达到实用化的阶段。 5.1 软件测试基础 软件测试的目的: 以最少的代价发现软件分析、设计、编码中存在的各种不同类型的错误,从而提高软件质量,降低软件成本。 程序错误 1、较小错误:只对系统输出有一些非实质性影响。如,输出的数据格式不合要求等。 2、中等错误:对系统的运行有局部影响。如输出的某些数据有错误或出现冗余。 3、较严重错误:系统的行为因错误的干扰而出现明显不合情理的现象。比如开出了0.00元的支票,系统的输出完全不可信赖。 4、严重错误:系统运行不可跟踪,一时不能掌握其规律,时好时坏。 5、非常严重的错误:系统运行中突然停机,其原因不明,无法软启动。 6、最严重的错误:系统运行导致环境破坏,或是造成事故,引起生命、财产的损失。 软件测试的特点 1、软件测试的开销大   按照Boehm的统计,软件测试的开销大约占总成本的30%-50%。例如:APPOLLO登月计划,80%的经费用于软件测试。 2、不能进行“穷举”测试 只有将所有可能的情况都测试到,才有可能检查出所有的错误。但这是不可能的: 例:程序P有两个整型输入量 X、Y,输出量为Z 在32位机上运行。所有的测试数据组(Xi,Yi)的数目为:232×232=264假设1毫秒执行1次,如要进行完全测试,共需5亿年。 测试目的 基于不同的立场,存在着两种完全不同的测试目的。 从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可以接受该产品。 而从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。 因此,他们会不自觉地选择那些导致程序失效概率小的测试用例,回避那些易于暴露程序错误的测试用例。同时,也不会着意去检测、排除程序中有可能包含的付作用,以致有可能潜含着诸如把边长为(0,0,0 )的输入判成等边三角形的错误。 显然,这样的测试对完善和提高软件质量毫无价值。 因为在程序中往往存在着许多预料不到的问题,可能会被疏漏,许多隐藏的错误只有在特定的环境下才可能暴露出来。如果不把着眼点放在尽可能查找错误这样一个基础上,这些隐藏的错误和缺陷就查不出来,会遗留到运行阶段中去。 如果我们站在用户的角度,替他们设想,就应当把测试活动的目标对准揭露程序中存在的错误。在选取测试用例时,考虑那些易于发现程序错误的数据。 设计测试的目标是想以最少的时间和人力系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,就能够发现软件中的错误。 测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。此外,实施测试收集到的测试结果数据为可靠性分析提供了依据。 测试不能表明软件中不存在错误,它只能说明软件中存在错误。 5.1.1 测试观点 Grenford J. Myers 就软件测试目的提出的以下观点: 测试是程序的执行过程,目的在于发现错误; 一个好的测试用例在于能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。 测试的定义是为了发现程序中的错误而执行程序的过程,正确认识测试的目标是十分重要的,测试目标决定了测试方案的设计。如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测

文档评论(0)

我是兰花草 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档