软件故障定位

软件故障定位

ID:40888543

大小:48.32 KB

页数:6页

时间:2019-08-10

软件故障定位_第1页
软件故障定位_第2页
软件故障定位_第3页
软件故障定位_第4页
软件故障定位_第5页
资源描述:

《软件故障定位》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、传统调试技术软件开发者使用的典型的软件调试技术主要有两种:(1)在程序中插入打印语句使得程序输出用以被分析的附加信息,可以对程序的运行时状态有一个粗略了解。一个通常的做法是插入打印语句以指示某个控制条件到达了某个特定程序点;另一个通常做法是插入打印语句以输出变量的值。当程序被执行的时候,程序生成可以被开发者检查的附加调试输出。缺点:调试输出可能相当的大,打印语句的放置和输出的检查都是非组织和临时的,分析和放置位置也通常是基于直觉的(2)另一种技术是使用符号调试器。一个符号调试器是一个用来调试其他程序的计算机程序,符号调试器支持例如断点、单步跳过、状态修改等。断点允许程序员停止在某一个

2、特定的程序点以检查当前状态;单步跳过允许程序员前进到当前断点之后的下一条指令,并且在那条指令设置新的断点;许多调试器还允许程序员不仅能够查看变量的当前状态,还能改变它的值然后继续执行。通常地,开发者会在他感觉可能是程序错误位置的地方设置断点,然后他会检查断点处的状态,他还可以单步跳过程序查看每一条语句在每一个执行时的状态变化。主要的定位方法故障定位技术有很多种,但是根据定位故障的过程中“是否需要运行软件”的准则,可以将故障定位技术分为以下两类:(1)基于静态分析的故障定位技术(SABFL):静态方法不用运行软件,而是依据程序语言的语法和语义,静态地分析软件结构和程序实体之间的依赖关系

3、,以发现不符合系统约束的程序实体,从而进行故障定位。(2)基于测试的故障定位技术(TBFL):该方法首先需要设计测试用例,然后运行软件程序,最后根据软件程序的动态执行信息和输出结果进行故障定位。其典型思路是:将程序的失败运行和成功运行进行对比,从而发现失败运行中的哪些点偏离了成功运行,找到的这些偏离点很有可能就是软件故障位置所在。这些不同定位方法都采用了各自不同的运行特征进行对比。以下是基于测试的故障定位技术:(一)基于距离度量的故障定位方法:基本思想是:通过一定的距离计算方法,从众多的成功运行中找出与失败运行最相近的一个成功运行,利用某一种度量方法来计算此成功运行与失败运行之间的差

4、异值,利用得出的最小差异值进行故障定位。该技术大都是在源程序上运行大量的测试用例,并收集程序运行过程中的覆盖信息,利用这些信息来进行故障定位。此方法包括(1)Delta调试技术把一次程序执行看做是一系列程序状态的转变(程序状态可以理解为在程序执行某个时刻出现的变量以及这些变量的取值)。程序从初始状态开始执行,每执行一步,程序当前状态就会发生改变,从当前状态转换到下一个程序状态,如此进行,最后到达了个错误的状态,标志着程序执行失败。每一个程序状态都它的前一个状态衍生而来,但是,可能只有一小部分状态与计算下一个状态是相关的,同理,也并不是所有程序状态都与执行失败相关。Delta调试最重要

5、的步骤就是找出与程序执行失败相关的那些状态,得到一条原因-结果链。比较一次成功执行和一次失败执行的状态序列,它们之间的差别就是一条原因-结果链。采用二分法将原因-结果链上的状态应用到成功的执行路径中,如果运行成功,就表示那一部分代码不存在故障,否则,那部分代码可能是可疑的故障点。经过这样的反复测验,最终可以将可疑故障点缩小到一个非常小的范围。优点:delta调试完全依赖于对程序状态的研究,而不考虑对程序结构的分析不仅可以找出程序中的错误,还提供了纠错方案。缺点:对于大部分程序而言,一次执行涉及到成千上万个状态,比较程序状态的做法只适用于较小的程序。(2)“并集模型”:在失败运行的覆盖

6、语句集中查找可疑故障语句。其思想是,从失败运行的覆盖语句集中去掉那些出现在成功运行的覆盖语句集的并集。如果给定一个成功运行的集合S和一个失败运行f,将S中出现的语句覆盖集的并集记为失败运行中出现的语句覆盖集记为该模型的计算公式如式所示:。(3)“交集模型”:找到能判别这个失败运行的特征,其思想是:从所有成功运行的覆盖.语句集的交集中去掉那些出现在失败运行的覆盖语句集/中的语句,将得到的差异语句集作为可疑语句集。其计算公式如式所示:。缺点:并集模型和交集模型的定位效果不是很理想。因为很多时候故障语句会同时出现在失败运行和成功运行中,当我们对这些语句集合进行集合运算时,故障语句经常会被误

7、删。特别是当大量运行存在的情况下,利用该方法得到的结果集极有可能是空集或者根本就不包含故障语句。(4)近邻模型该方法首先选择一个失败运行,然后找到一个与此失败运行的覆盖信息最相近的成功运行。利用失败运行和与其最相近的成功运行,从失败运行的执行语句集中将那些出现在成功执行语句集中的语句剔除,剩余的其他语句集即可作为故障报告。近邻模型提供了两种方法来度量失败运行和成功运行之间覆盖信息的相似程度。一种叫做binarydistancing,计算所选择的失败运行与一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。