【技术实现步骤摘要】
一种基于调试信息支撑的代码覆盖器缺陷检测方法
[0001]本专利技术涉及软件测试和缺陷检测领域,特别是代码覆盖工具的缺陷检测,是一种基于调试信息支撑的代码覆盖器缺陷检测方法。
技术介绍
[0002]代码覆盖信息是一种基础的程序动态信息,已广泛应用于软件工程的各项任务中,如软件测试、软件调试和程序理解等。代码覆盖信息是指程序代码动态执行的频次信息,在软件测试中有深入地应用,测试开发人员常基于代码覆盖信息来指导测试用例的生成和排序。在软件测试中,研究者提出了许多代码覆盖准则来指导软件测试的自动化,如语句覆盖、分支覆盖、条件覆盖和路径覆盖等。代码覆盖器是一种用于生成代码覆盖信息的基础软件,它的质量和可靠性对软件工程的各项任务提供基础保障。代码覆盖器中的缺陷不可避免地会影响依赖于它的各项软工任务,因此保障和提升代码覆盖工具的质量至关重要。然而,由于很难构造或缺少测试预言信息,自动化地测试代码覆盖器面临许多挑战。这里,测试预言是用于判定代码覆盖器所生成的覆盖信息是否正确的测试输出。为此,近期研究者分别提出了基于差分测试和基于蜕变测试的 ...
【技术保护点】
【技术特征摘要】
1.一种基于调试信息支撑的代码覆盖器缺陷检测方法,其特征在于利用调试信息构造异构蜕变关系对覆盖信息进行验证来检测代码覆盖器中潜在的缺陷,该方法将代码覆盖器验证的复杂问题转换成了一个简单的调试信息与覆盖信息的比较问题,从而解决了目前代码覆盖器测试中测试预言难以构造的难题。这里,测试预言是用于验证覆盖器生成的代码覆盖信息是否正确的预期输出。该方法能有效检测覆盖器中的缺陷,提高代码覆盖器的质量。本方法主要包括下列步骤:1)使用覆盖器生成语句覆盖信息:首先,对于给定的测试程序,使用编译器并指定覆盖剖析选项将源码程序编译为可执行程序,执行该程序后使用代码覆盖器生成覆盖报告,获取代码覆盖信息。2)使用调试器以“单步步进”策略调试执行获取语句命中次数:接着,对于步骤1中的测试程序,使用编译器并指定调试选项将源码程序编译为包含调试信息的可执行程序,然后在调试器中以“单步步进”策略调试执行程序,即逐行调试执行程序,记录每一步命中的语句,获取程序中每行语句命中的次数。3)使用调试器以“断点继续”策略调试执行获取语句命中次数:对于步骤2中生成的包含调试信息的可执行程序,采用“断点继续”策略调试执行程序,即为所有具有调试信息的语句设置断点,当调试器停在任何断点时,记录当前命中的语句,获取程序中每行语句命中的次数。4)综合两种调试策略程序代码命中信息:由于调试器存在不同的实现,两种调试策略中的任何一种单独获得的语句命中计数可能都不能准确地表示每个语句的实际执行频率,如在某些调试器中“单步步进”调试策略中函数调用语句的命中计数不能代表其实际执行频次,而“断点继续”调试策略中循环语句的命中计数不能代表其实际执行频次,因此需要综合两种不同的调试策略下的命中计数,将不一致的命中计数都用于以后的比较。5)检查覆盖信...
【专利技术属性】
技术研发人员:杨已彪,李清扬,王洋,孙茂林,卢红敏,周毓明,
申请(专利权)人:南京大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。