如何为mvc 4应用程序创建一个黄金大师

时间:2014-07-11 19:42:10

标签: asp.net-mvc integration-testing

我想知道如何创建golden master approach来开始为我的MVC 4应用程序创建一些测试。

  

“黄金大师测试是指捕获过程的结果,并且   然后比较未来的运行与保存的“黄金大师”(或已知   好的版本,以发现意外的变化。“ - @brynary

它是一个没有测试的大型应用程序,并且与黄金大师开始开发以确保我们正在进行的更改以增加测试覆盖率并且希望在长时间内降低复杂性并且不会破坏应用程序将是一件好事。 / p>

我正在考虑从IIS日志中捕获一天的真实流量并使用它来创建黄金大师,但我不确定最简单或最好的方法。应用程序批量控制器上没有任何不寻常的帖子等等

我正在寻找一种方法来为IIS 7.5中托管的MVC 4应用程序创建合适的黄金大师。

备注 为了澄清有关注释的内容,“黄金大师”是一个可以运行以验证应用程序输出的测试。这就像记录您的应用程序,并且每次进行更改时都能够运行该日志,以确保您已经破坏了任何内容。

  

使用遗留代码时,几乎无法理解   它并编写肯定会运用所有逻辑路径的代码   通过代码。对于那种测试,我们需要   理解代码,但我们还没有。所以我们需要另外一个   方法

     

我们可以测试一切,而不是试图找出要测试的内容,   很多时候,所以我们最终得到了大量的产出   我们几乎可以肯定地认为它是由它产生的   行使我们遗留代码的所有部分。建议运行   代码至少10,000(一万)次。我们将编写一个测试来运行   它两倍,并保存输出。

     

Patkos Csaba - http://code.tutsplus.com/tutorials/refactoring-legacy-code-part-1-the-golden-master--cms-20331

我的问题是如何将这个用于MVC应用程序。

此致

1 个答案:

答案 0 :(得分:1)

基本上,您希望比较两组大型结果和控件变体,实际上是集成测试。我相信真正的流量无法准确地为您提供我认为您需要它的控制权。

在对生产代码进行任何更改之前,您应该执行以下操作:

  1. 创建X个随机输入,始终使用相同的随机种子,因此您可以一遍又一遍地生成相同的集合。您可能需要几千个随机输入。
  2. 使用这些随机输入轰炸正在测试的班级或系统。
  3. 捕获每个随机输入的输出
  4. 第一次运行时,将输出记录在文件(或数据库等)中。从那时起,您可以开始更改代码,运行测试并将执行输出与您记录的原始输出数据进行比较。如果它们匹配,则继续重构,否则,恢复您的更改,您应该恢复绿色。

    这与您的方法不符。想象一下,用户购买某种产品的情况,您无法确定交易的结果,信用不足,产品不可用,因此您无法信任您的输入。

    但是,您现在需要的是一种自动复制数据的方法,在这种情况下,浏览器的自动化对您没有多大帮助。

    您可以尝试不同的方法,例如最适合您的方案的Lightweight Test Automation FrameworkMvcIntegrationTestFramework