论文部分内容阅读
随着软件规模变得越来越庞大,保证软件的质量变得越来越难,软件失效发生的概率也随之增高。软件失效指的是软件的期望结果和实际结果不一致。在软件失效发生以后,如何去定位那些导致代码漏洞的语句便是错误定位问题。目前已经有许多优秀的软件错误定位方法。然而它们都忽略了一点,巧合正确性。巧合正确性指的是测试用例执行了错误语句,执行结果未表现出任何失败信息。它往往是由错误传播引起的。基于以上考虑,本文把错误定位分成两部分,包括错误关联语句的定位和错误理解。本文的研究内容包括:首先,为了获得程序执行路径信息,作为后续模块的输入,需要进行程序插装,而现有的插装技术实现过于复杂。本文通过词法和语法分析源程序,实现了一种较为简便的程序插装技术。其次,为了进行错误关联语句定位,必须构建联合依赖网络,那么就需要进行程序依赖分析,然后建立程序依赖图并进行转化。本文实现了比较经典的程序依赖分析,在此基础上建立了程序依赖图并对其进行特定节点转化和节点状态规格化。然后,目前的错误定位方法大部分情况下不仅不能准确地定位错误语句,连与其关联的语句都无法准确定位,因此提出了条件概率、路径概率和联合依赖概率的概念,以此来提高错误关联语句定位的精确度。最后,巧合正确性对错误定位结果有很大影响,目前的错误定位方法没有理解其产生的本质,因此提出了基于错误传播上下文分析的错误理解方法,消除巧合正确性的影响。该方法的输出结果为程序语句的可疑值序列,可疑值越大,语句错误的概率越高。本文使用软件错误定位领域常用的Siemens suit进行测试,在定位有效性和稳定性两方面与其它典型的方法进行了比较,结果表明本文方法在这两方面都较之前方法有极大的提升,并且结果呈现形式更加有利于开发人员找到错误的根本原因。