超简单的变化测试

发表于:2011-10-14 11:02

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

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

  我认识的很多测试人员都听说过变化测试,却很少有人执行过该测试。 变化测试以难度大、需要昂贵的第三方软件工具而闻名。 但是,在本月专栏中我将为您展示如何用 C# 和 Visual Studio 创建一个超简单(不到 2 页代码,用不了 4 个小时)的变化测试系统。 简单的变化测试系统能让您用很少的时间和精力,就获得成熟的变化测试系统所提供的大部分好处。

  变化测试是一种评估一组测试用例有效性的方法。 其原理很简单。 假设您有 100 个测试用例,并且被测系统 (SUT) 通过了这 100 个测试。 如果您改变 SUT,例如把“>”更改为“<”或把“+”更改为“-”,则有可能将一个错误引入到了 SUT。 现在,如果您重新运行这 100 个测试用例,则可以预见至少有一个测试用例会失败,表明其中一个测试用例捕获了错误代码。 但是,如果未看到测试失败,则很可能是您的这组测试用例错过了错误代码,未能彻底测试 SUT。

  若要了解我将要介绍的内容,最好是看一下图 1。

图 1 变化测试运行演示

  该示例中的 SUT 是一个名为 MathLib.dll 的库。 我在这里介绍的方法可用于测试大部分的 Microsoft .NET Framework 系统,包括 DLL、WinForms 应用程序、ASP.NET Web 应用程序等。 变化系统首先扫描 SUT 的原始源代码,寻找可进行更改的候选代码。我的超简单系统只搜索“<”和“>”运算符。 测试系统设置为创建并评估两处变化。 在实际的工作中,您可能会创建上百甚至上千个变化。 第一处变化会随机选择并更改一个运算符,本示例中,是 SUT 源代码中字符位置 189 上的“>”运算符,并将此符号更改为“<”。 接下来,构建变化 DLL 源代码以创建变化的 MathLb.dll 库。 然后,变化系统调用变化的 SUT 上的一组测试用例,并将结果记录到文件中。 第二次迭代会以同样的方法创建和测试第二处变化。 日志文件的结果如下所示:

=============
Number failures
=0
Number test case failures
=0indicates possible weak test suite!
=============
Number failures
=3
This is good.
=============

  第一个变化未生成任何测试用例失败,这说明您应该检查 189 位置上的源代码并确定为何没有测试用例检查该代码。

  SUT

  我的超简单变化测试演示包含 3 个 Visual Studio 项目。 第一个项目包含 SUT,在本例中是一个名为 MathLib 的 C# 类库。 第二个项目是一个可执行的测试工具,在本例中是一个名为 TestMutation 的 C# 控制台应用程序。 第三个项目创建和构建变化,在本例中是一个名为 Mutation 的 C# 控制台应用程序。 为方便起见,我将三个项目放置到一个名为 MutationTesting 的目录中。 在变化测试中要跟踪很多文件和文件夹,您不应忽视妥善组织它们所面临的难度。 对于此演示,我使用了 Visual Studio 2008(可使用任何版本的 Visual Studio)来创建虚拟的 MathLib 类库。 图 2 显示了该虚拟 SUT 的完整源代码。

  图 2 虚拟 SUT 的完整源代码

usingSystem;
namespaceMathLib
{
publicclassClass1
{
publicstaticdoubleTriMin(doublex,doubley,doublez)
{
if(x<y)
returnx;
elseif(z>y)
returny;
else
returnz;
}
}
}

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

精彩评论

  • andyyoung
    2011-10-14 13:36:43

    写了5页,取名叫”超简单“。

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号