超简单的变化测试

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

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

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

分享:

  构建和测试变化

  BuildMutant 帮助程序方法是:

staticvoid BuildMutant(string mutantSolution, string devenv)
{
ProcessStartInfo psi
=
new ProcessStartInfo(devenv, mutantSolution +" /rebuild");
Process p
=new Process();

p.StartInfo
= psi; p.Start();
while (p.HasExited ==false) {
System.Threading.Thread.Sleep(
400);
Console.WriteLine(
"Waiting for mutant build to complete .
. "
);
}
p.Close();
}

  我使用 Process 对象来调用 devenv.exe 程序以重新构建 Visual Studio 解决方案,该方案中包含已变化的 Class1.cs 源代码并产生 MathLib.dll 变化。 无需参数,devenv.exe 便可启动 Visual Studio IDE,但是当参数传递后,devenv 即可用于重新构建项目或解决方案。 请注意,我使用了延时循环,每 400 毫秒暂停一次以便让 devenv.exe 有时间完成构建变化 DLL;否则,变化系统会在变化 SUT 创建之前即尝试测试它。

  用于重新构建测试工具的帮助程序方法是:

staticvoid BuildTestProject(string testProject, string devenv)
{
ProcessStartInfo psi
=
new ProcessStartInfo(devenv, testProject +" /rebuild");
Process p
=new Process();

p.StartInfo
= psi; p.Start();
while (p.HasExited ==false) {
System.Threading.Thread.Sleep(
500);
Console.WriteLine(
"Waiting for test project build to complete .
. "
);
}
p.Close();
}

  这里的主要思路是,通过重新构建测试项目,测试工具在执行时会使用新的变化 SUT 而不使用以前使用过的变化 SUT。 如果您的变化源代码无效,则 BuildTestProject 将抛出异常。

  超简单变化测试系统的最后一个部分是用于调用测试工具的帮助程序方法:

...
staticvoid TestMutant(string testExecutable)
{
ProcessStartInfo psi
=new ProcessStartInfo(testExecutable);
Process p
=new Process(); p.StartInfo = psi;
p.Start();
while (p.HasExited ==false)
System.Threading.Thread.Sleep(
200);

p.Close();
}

}
// class Program
} // ns Mutation

  正如我前面谈到的,测试工具使用硬编码的日志文件名称和位置,但您可以将其参数化,方法是将信息作为参数传递给 TestMutant,并放在 Process 的 StartInfo 中(在此,它可被 TestMutation.exe 测试工具接受)。

  实际应用的变化测试系统

  变化测试从原理上讲并不复杂,但是创建一个成熟的变化测试系统需要注意的细节却很有挑战性。 然而,通过尽可能简化变化测试系统,并利用 Visual Studio 和 devenv.exe,您可针对 .NET SUT 创建非常有效的变化测试系统。 使用我在此处介绍的示例,您应该可以创建自己的 SUT 变化测试系统。 示例变化测试系统的主要限制在于,由于该系统是基于单字符更改,因此,您不能轻松执行多字符运算符的变化,例如将“>=”更改为其求补运算符“<”。 另一个限制是,该系统仅为您提供变化的字符位置,不能让您轻松诊断变化。 尽管存在这些限制,但该示例系统已成功运用到许多中型软件系统中,用来衡量测试套件的有效性。

55/5<12345
《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号