- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件测试技术与质量保证 主讲人:徐丽 第2章 程序调试技术 程序调试是在进行了成功的测试之后才开始的工作。它与软件测试不同,软件测试的目的是尽可能多地发现软件中的错误,但进一步诊断和改正程序中潜在的错误,则是调试的任务。 调试活动由两部分组成: ⑴ 确定程序中可疑错误的确切性质和位置。 ⑵ 对程序(设计,编码)进行修改,排除这个错误。 通常,调试工作是一个具有很强技巧的工作。软件运行失效或出现问题,往往只是潜在错误的外部表现,而外部表现与内在原因之间常常没有明显的联系。如果要找出真正的原因,排除潜在的错误,不是一件易事。因此可以说,调试是通过现象找出原因的一个思维分析的过程。 2.1 调试步骤 调试的执行步骤如下: ⑴从错误的外部表现形式入手,确定程序中出错位置; ⑵ 研究有关部分的程序,找出错误的内在原因; ⑶ 修改设计和代码,以排除这个错误; ⑷ 重复进行暴露了这个错误的原始测试或某些有关测试,以确认: 该错误是否被排除; 是否引进了新的错误。 ⑸ 如果所作的修改无效,则撤销这次改动,重复上述过程,至到找到一个有效的解决方法为止。 调试是一个相当艰苦的过程,究其原因除了开发人员心理方面的障碍外,还因为隐藏在程序中的错误具有下列特殊的性质: ⑴ 错误的外部征兆远离引起错误的内部原因,对于高度耦合的程序结构此类现象更为严重; ⑵ 纠正一个错误造成了另一错误现象(暂时)的消失; ⑶ 某些错误征兆只是假象; ⑷ 因操作人员一时疏忽造成的某些错误征兆不易追踪; ⑸ 错误是由于时序问题而不是程序引起的; ⑹ 输入条件难以精确地再构造(例如,某些实时应用的输入次序不确定); ⑺ 错误征兆时有时无,此现象对嵌入式系统尤其普遍; ⑻ 错误是由于把任务分布在若干台不同处理机上运行而造成的。 2.2 调试原则 因为调试有两部分组成,所以调试原则也分成两组。 1、确定错误的性质和位置的原则 ⑴ 用头脑去分析思考与错误征兆有关的信息。最有效的调试方法是用头脑分析与错误征兆有关的信息。一个能干的程序调试员应能做到不使用计算机就能够确定大部分错误。 ⑵ 避开死胡同。 如果程序调试员走进了死胡同,或者陷入了绝境,最好暂时把问题抛开,留到第二天再去考虑,或者向其他人讲解这个问题。事实上常有这种情形:向一个好的听众简单的描述这个问题时,不需要任何听讲者的提示,你自己会突然发现问题的所在。 ⑶只把调试工具当作辅助手段来使用。利用调试工具,可以帮助思考,但不能代替思考。因为调试工具给你的是一种无规律的调试方法。实验证明,即使是对一个不熟悉的程序进行调试时,不用工具的人往往比使用工具的人更容易成功。 ⑷ 避免用试探法,最多只能把它当作最后手段。初学调试的人最常犯的一个错误是想试试修改程序来解决问题。这还是一种碰运气的盲目行为,它的成功机会很小,而且还常把新的错误带到问题中来。 2.修改错误的原则 ⑴ 在出现错误的地方,很可能还有别的错误。 经验证明,错误有群集现象,当在某一程序段发现有错误时,在该程序段中还存在别的错误的概率也很高。因此,在修改一个错误时,还要查一下它的近邻,看是否还有别的错误。 ⑵修改错误的一个常见失误是只修改了这个错误的征兆或这个错误的表现,而没有修改错误的本身。 如果提出的修改不能解释与这个错误有关的全部线索,那就表明了只修改了错误的一部分。 ⑶当心修改一个错误的同时又可能会引入新的错误。 人们不仅需要注意不正确的修改,而且还要注意看起来是正确的修改可能会带来的副作用,即引进新的错误。因此在修改了错误之后,必须进行回归测试,以确定是否引进了新的错误。 ⑷修改错误的过程将迫使人们暂时回到程序设计阶段。 修改错误也是程序设计的一种形式。一般说来,在程序设计阶段所使用的任何方法都可以应用到错误修正的过程中来。 2.3 调试方法 调试的关键在于推断程序内部的错误位置及原因。为此,可以采用以下几种主要的方法: 1.普查法 依靠系统的调试跟踪工具,或将信息打印或显示出来,进行普遍的查找错误的原因,并进行排错的过程方法。虽然最终能导致排错成功,但工作量太大,时间太浪费,缺乏分析和高效率,一般在毫无办法,迫不得已的时候才用。 2.回溯法 这是在小程序中常用的一种有效的排错方法。一旦发现错误,人们先分析错误征兆,确定最先发现“症状”的位置。然后,人工沿程序的控制流程,向回追踪源程序代码,直到找到错误根源或确定错误产生的范围。即在其状态是预期的点与第一个状态不是预期的点之间的程序位置。 回溯法对于小程序很有效,往往能把错误范围缩小到程序中的一小段代码,仔细分析这段代码不难确定出错的
文档评论(0)