讲义参考完整软件工程-08.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件工程 * 错误原因不能肯定,先做某种假设,再设计测试用例来证实这个假设; 找到错误原因,分析相关程序和数据结构,界定修改范围。 修改设计和代码,以排除这个错误; 重复进行暴露了这个错误的原始测试或某些有关测试,以确认: 该错误是否被排除; 是否引进了新的错误 。 5) 如果所做修正无效,则撤消这次修改,重复上述过程,直到找到一个有效的解决办法为止。 软件工程 * 从技术角度来看,查找错误的难度在于: 现象与原因所处的位置可能相距甚远。 当其他错误得到纠正时, 这一错误所表现出的现象可能会暂时消失,但并未实际排除。 现象实际上是由一些非错误原因(例如,舍入不精确)引起的。 现象可能是由于一些不容易发现的人为错误引起的。 错误是由于时序问题引起的,与处理过程无关。 软件工程 * 现象是由于难于精确再现的输入状态(例如,实时应用中输入顺序不确定)引起。 现象可能是周期出现的。在软、硬件结合的嵌入式系统中常常遇到。 在程序调试的过程中,可能遇到各种各样的问题,随着问题的增多,调试人员的压力也随之增大,过分地紧张致使调试人员在排除一个问题的同时又引入更多的新问题。 软件工程 * 几种主要的调试方法 调试的关键在于推断程序内部的错误位置及原因。可以采用以下方法: 强行排错 这种调试方法目前使用较多,效率较低。它不需要过多的思考,比较省脑筋。例如: 通过内存全部打印来调试,在这大量的数据中寻找出错的位置。 在程序特定部位设置打印语句,把打印语句插在出错源程序的各个关键变量改变部 软件工程 * 位、重要分支部位、子程序调用部位,跟踪程序的执行,监视重要变量的变化。 自动调试工具。利用某些程序语言的调试功能或专门的交互式调试工具,分析程序的动态过程,而不必修改程序。 应用以上任一种方法之前,都应当对错误的征兆进行全面彻底的分析,得出对出错位置及错误性质的推测,再使用一种适当的调试方法来检验推测的正确性。 软件工程 * 回溯法调试 这是用于小程序一种有效的调试方法。 一旦发现了错误,人们先分析错误征兆,确定最先发现位症状”的位置。然后,人工沿程序的控制流程,向回追踪源程序代码,直到找到错误根源或确定错误产生的范围。 例如,程序中发现错误处是某个打印语句。通过输出值可推断程序在这一点上变量的值。再从这一点出发,回溯程序的执行过程,反复考虑: 软件工程 * “如果程序在这一点上的状态(变量的值)是这样,那么程序在上一点的状态一定是这样 ……”, 直到找到错误的位置。 归纳法调试 归纳法是一种从特殊推断一般的逻辑方法。归纳法调试的想法是:从一些线索(错误征兆)着手,通过分析它们之间的关系来找出错误。 1) 收集有关的数据 列出所有已知的测试用例和程序执行结果。看哪些输入数据的运行结果正确,哪些输入数据的运行结果有错。 软件工程 * 组织数据 归纳法是从特殊到一般的推断过程,所以需要组织整理数据以发现规律。 常以3W1H形式组织可用的数据: “what” 列出一般现象; “where” 说明发现现象的地点; “when” 列出现象发生时所有已知情况; “how” 说明现象的范围和量级; “Yes” 描述出现错误的3W1H; “No” 作为比较,描述不出错的3W1H。通过分析找出矛盾来。 软件工程 * 提出假设 证明假设 纠正错误 研究数据 间的关系 组织数据 收集有关 数据 不能 能 能 不能 Yes No what when where how 归纳法中组织数据的3W1H表 软件工程 * 提出假设 分析线索之间的关系,利用在线索结构中观察到的矛盾现象,设计一个或多个关于出错原因的假设。如果一个假设也提不出来,归纳过程就需要收集更多的数据。此时,应当再设计与执行一些测试用例,以获得更多的数据。 证明假设 把假设与原始线索或数据进行比较,若它能完全解释一切现象,则假设得到证明;否则,就认为假设不合理,或不完全,或是存在多个错误,以致只能消除部分错误。 软件工程 * 演绎法调试 演绎法是从一般原理或前提出发,经过排除和精化的过程来推导出结论的逻辑方法。 测试人员首先根据已有的测试用例,设想及枚举出所有可能出错的原因做为假设;然后再用原始测试数据或新的测试,从中逐个排除不可能正确的假设;最后,再用测试数据验证余下的假设确是出错的原因。 列举所有可能出错原因的假设 把所有可能的错误原因列成表。通过它们,组织、 软件工程 * 分析现有数据。 利用已有的测试数据,排除不正确的假设 仔细分析已有的数据,寻找矛盾,力求排除前一步列出所有原因。如果所有原因都被排除了,则需要补充一些数据(测试用例),以建立新的假设。 改进余下的假设 利用已知的线索,进一步改进余下的

文档评论(0)

183****7931 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档