【问题标题】:Example of a Regression Test & Unit Test - Windows Forms LOB application回归测试和单元测试示例 - Windows 窗体 LOB 应用程序
【发布时间】:2015-08-02 17:57:15
【问题描述】:

我们有一个尽可能遵循 MVP 模式的 LOB Winforms 应用程序。

在每个新版本中,我们都希望针对任何回归进行测试。

当前的方法是,每次测试人员出现错误/崩溃时,我们都会重现错误,然后使用 NUnit 插入测试。通常这个测试试图重现用户遵循的动作链,所以我们最终得到如下测试:MenuX_OperationY_buttonDoZ_Click_ERROR_DESCRIPTION()

测试通常准备上下文、加载数据并执行用户单击的操作以重现错误。然后修复错误并重新运行测试。依此类推...,直到我们拥有大量现有(回归?)测试。这种测试的例子是:

[Test]
public void MenuX_OperationY_buttonDoZ_Click_ERROR_DESCRIPTION()
{
    // The presenter prepares Context & Load Data associated with Menu X
    PrsMenuX.PrepareContext();
    PrsMenuX.LoadData();

    // Do Operation Y
    PrsMenuX.OperationY();

    // Click on Button Do Z
    try
    {
        PrsMenuX.ButtonDoZ_Click();
    }
    catch (Exception ex)
    {
        Assert.Fail(ex.Message);
    }
}

所以我的问题是,这是正确的方法吗? NUnit 是解决此问题的正确工具吗?如何改进?测试应该重现用户的操作,还是我们应该只对构成每个用户操作的低级函数进行单元测试?

【问题讨论】:

    标签: c# winforms unit-testing regression-testing


    【解决方案1】:

    这取决于失败的原因。如果它是您代码中的算法中的错误失败,那么它可能应该通过单元测试进行测试。如果它更多的是一个意外的使用错误,那么它应该是一个更高级别的接受/行为测试。并且仅仅因为您添加了单元测试并不意味着您不应该添加更高级别的测试。

    此外,通常仅在发现错误后才添加测试似乎有点晚。如果在添加新功能或编辑现有功能时编写测试会更好。在编写代码的同时编写好的测试通常更容易,而不是在以后为未知或遗忘的代码编写测试。实践这一点将防止更多的错误一开始就没有被引入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 2010-09-28
      • 2016-04-17
      • 2011-12-02
      相关资源
      最近更新 更多