第3章_程序的正确性证明.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
主要内容 程序的测试 Floyd-Hoare规则公理方法 Dijkstra 最弱前置条件方法 程序的正确性 所谓一段程序是正确的,是指这段程序能准确无误地完成编写者所期望赋予它的功能。 或者说,对任何一组允许的输入信息,程序执行后能得到一组和这组输入信息相对应的正确的输出信息。 通俗地说,“做了它该做的事,没有做它不该做的事” 一段程序是错误的,是指: (1)程序完成的事情并不是程序员想要完成的事情; (2)程序员想要程序完成的事情,程序并没有完成。 一般来说,程序中含有错误是很难避免的。 错误可能有: (1)设计时的错误; (2)程序编写时的错误; (3)运行时的错误等。 发现错误或尽量减少错误,是程序设计人员的努力方向,更是其职责。 程序测试:给程序一组或几组初始值进行试运行,将运行的结果与实现已知的结果比较,若两则相同,则认为程序是正确的,若两则不同,则说明程序有错误。 软件测试的目的 基于不同的立场,存在着两种完全不同的测试目的。 从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。 从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。 程序测试 1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或者自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。” 测试是程序的执行过程,目的在于发现错误。 一个好的测试用例在于能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。 测试的原则 1. 应当 “尽早地和不断地进行软件测试” 。 2. 测试用例应由测试输入数据和对应的预期输出结果组成。 3. 程序员应避免检查自己的程序。 4. 在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。 5. 充分注意测试中的群集现象。即测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。 6. 严格执行测试计划,排除测试的随意性。 7. 应当对每一个测试结果做全面检查。 8. 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。 程序测试实质上只是一种抽样检查 测试过程: 选取测试数据 → 执行程序 → 输入测试数据 →记录执行结果 → 手工核对结果 因此,测试只是一种查错的手段,它可以帮助人们去发现程序中的错误,但不能证明程序中没有错误,即:测试不能证明程序是正确的 程序测试的过程… 软件测试方法 软件测试的方法和技术是多种多样的。对于软件测试技术,根据不同角度,可以将测试方法分为不同种类。 (1)从是否需要执行被测软件的角度,可以分为静态测试和动态测试; (2)从测试是否针对系统内部结构和具体实现算法的角度,可以分为白盒测试和黑盒测试; (3)从实际测试的前后过程来看,软件测试是由一系列的不同测试组成,这些步骤可以分为:单元测试、组装测试(集成测试)、确认测试和系统测试。 两种重要的软件测试方法 黑盒测试 这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。 黑盒测试又叫做功能测试或数据驱动测试。 黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误: 是否有不正确或遗漏了的功能? 在接口上,输入能否正确地接受? 能否输出正确的结果? 是否有数据结构错误或外部信息(例如数据文件)访问错误? 性能上是否能够满足要求? 是否有初始化或终止性错误?  用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。 但这是不可能的。 假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试: 可能采用的测试数据组: 232×232=264 如果测试一组数据需要1毫秒,一年工作365×24小时,完成所有测试需5亿年。 软件人员使用白盒测试方法,主要想对程序模块进行如下的检查: 对程序模块的所有独立的执行路径至少测试一次; 对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次; 在循环的边界和运行界限内执行循环体; 测试内部数据结构的有效性; 对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。给出一个小程序的流程图,它包括了一个执行20次的循环。 包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒,假定一年工作365 × 24小时,要想把所有路径测试完,需3170年。 …黑盒测试 等价类

文档评论(0)

339910001 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档