使用Insure++进行变异测试

发表于:2011-9-13 10:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  介绍

  变异测试(Mutation Testing)是发现软件错误的一种强有力方法。在今天以前没有工具能够将这种先进的技术带给程序员。Insure++是错误检测领域中第一个也是目前唯一实现了创新的变异测试方法的自动工具。

  什么是变异测试?

  变异测试在计算机科学界已经闻名多年了。其方法是“重写”源代码(因此得名变异)以消除代码中可能存在的多义性或模糊性。如果开发人员不能检查出并改正这种多义性,则可能导致软件故障。但这些故障通常是非常微妙的,它们能够轻易地通过传统的测试/调试过程而到达用户手上。

  变异测试虽然很好,却极为复杂,如果没有工具支持需要消耗大量的时间。工具的匮乏使得变异测试技术未能商业化,因此在研究领域之外它还尚未被广泛使用。研究人员的长期目标是一个高效且使用方便的自动测试系统。随着Insure++ v4.0的发行,这一技术取得了突破性的进展,它将变异测试自动地结合到错误检测技术中。现在任何软件开发人员和测试人员都能享受到这一最强大的错误检测能力,以及高效和易于使用的自动化运行时调试工具。

  变异测试的传统方法

  变异测试的本意是建立更有效的测试数据。通过建立更有效的测试数据,测试人员会更有把握是否对程序进行了充分测试。

  传统的变异测试方法首先建立程序的多个版本,每个版本是一个“变形”以引入一个故障。这些“变形”程序然后运行对应的测试数据,每当一个测试数据导致一个故障版本失败,该变形程序的使命就结束了,并且将该测试数据保存下来。当所有的变形程序完成后,保存的测试数据就组成了一个测试数据集合,用于测试原来的程序。

  这种方法对建立测试数据非常有用,但很繁琐,同时对于在原始程序中找出错误帮助不大。Insure++采取全新的变异测试方法,将焦点从测试数据转移到程序本身,这种改变使得Insure++能够发现原始代码中存在的错误。

  创新的变异测试技术

  Insure++采用创新的变异测试方法,建立多个“等价”(而非“故障”)变形版本。这种技术能够进行更有效的错误检查,并能发现源代码中可能存在的任何多义性。然后Insure++的源码加工(SCI)专利技术提供深层次的调试信息使得开发人员能够快速而方便地发现和改正错误。

  在检查时,Insure++对原始程序进行语法分析并转换成一个新的功能等价的源代码。该等价的代码作为一个临时文件提交给编译器。(值得注意的是,Insure++并不修改原始程序,也不需要用户增加额外的工作。整个过程是完全自动的并且对用户透明。)

  当所有源文件已经“变形”成等价代码后,它们就可以编译连接成可执行文件,能够用于运行时错误检测了。

  在检测错误时,“功能等价”的变形版本就象原代码一样运行。而不象故障变异测试,“等价变形版本”期望的是通过,而不是失败。如果原始程序是正确的,那么变形版本就不取消;如果某变异版本被取消掉,则意味着原始程序中存在一个错误必须被改正。通过这种方法,Insure++能够发现其它方法或工具所无法检测到的代码多义性。

  一旦发现错误,Insure++自动报告故障及相关代码行。提供调试信息是Insure++与其它传统的变异测试方法最大的差别,这也正是开发人员的关心所在。Insure++的SCI技术使得它能够正确定位和报告程序执行中发现的错误。

  Insure++变异测试方法的附带好处是用户可以根据自己的需要控制变形版本的数量。用户能够为任何代码建立等价变形版本,从单个函数到整个项目。当然,建立越多的变形版本,错误检测越充分。

  新的变异测试方法使得Insure++能够达到研究人员期望的高效和方便的目标。更多的调试信息则显著提高了调试效率,检测过程的完全自动化大大方便了用户的使用。

  变异测试的好处

  变异测试对软件开发人员来说将错误检测提高到一个全新高度。这一强力方法能够发现代码中的多义性或不正确性,而在以前要做到自动检测是无法想象的。通过将变异测试技术结合到最先进的错误检测手段,Insure++能够比任何其它工具发现更多的软件缺陷。

  使用Insure++的软件开发和测试人员将从变异测试中获得巨大好处,Insure++能够比任何其它工具自动报告更多的错误,同时正确而详细的错误诊断信息将使得调试和维护工作更快捷更方便,从而保证软件具有更好的可靠性和稳定性。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号