【问题标题】:How to best do unit testing for a web application如何最好地为 Web 应用程序进行单元测试
【发布时间】:2009-02-20 17:15:14
【问题描述】:

我正在编写一个在 UI 方面非常复杂并且严重依赖 AJAX、DOM 和图像操作的 Web 应用程序。

是否有任何可以遵循的标准做法(我不需要工具)来减少错误?

【问题讨论】:

  • 好问题。我一直在想同样的事情。
  • 这是一个非常模糊的问题。您的问题通常可以通过工具列表来回答,但您听起来好像有一些神奇的方法可以减少代码中的错误。你到底在问什么?
  • @ryeguy 他的问题是一个面向设计的问题。他在问单元测试风格如何适应大量 UI 应用程序。卡尔滕能够回答这个问题。
  • 我认为 devinb 是正确的。还有工具可以帮助您找到错误,但是您首先如何减少它们?

标签: unit-testing


【解决方案1】:

冒烟测试是一种非常简单的技术,您可以在其中自动点击所有应用程序。如果脚本运行并且日志中的任何地方都没有错误,那么您至少有一个定义的质量级别。

这种技术实际上捕获了相当多的回归中断,并且比听起来更有效。我们为此使用selenium。

【讨论】:

  • 您是指具有特定测试场景的功能测试,还是只是 - 单击每个可能的目标?
  • 我们做的最简单的版本是点击作为我们主要可交付成果的用例。至少我们还包括主要的备用/错误流。这并不一定意味着我们会点击所有的按钮/项目。
【解决方案2】:

将逻辑和 UI 部分分开 - 不要将所有业务逻辑和复杂代码都放在代码隐藏页面中。而是在标准层结构(数据层、业务规则/逻辑层、UI 层)上构建它们。这将确保您要测试的逻辑代码不引用表单,而是使用易于单元测试的类。

对于一个非常基本的示例,没有执行此操作的代码:

string str = TextBox1.Text.ToString();
//do whatever your code does
TextBox2.Text = str;

而是使用方法将逻辑提取到单独的类中:

TextBox2.Text = DoWork(TextBox1.Text.ToString());

public class Work
{
    public string DoWork(string str)
    {
      //do work
      return str2;
    }
}

这样您就可以编写单元测试来验证 DoWork 是否返回了正确的值:

string return = DoWork("TestThisString");

现在您的所有逻辑都是可单元测试的,只有必须直接引用页面的代码仍在您的 UI 层中。

【讨论】:

    【解决方案3】:

    Watin 是一个很好的工具。

    【讨论】:

      【解决方案4】:

      一个简单的清单(即使是在一张纸上!)是确保您永远不会跳过重要事项的最佳方式。这是一个很好的“冒烟测试”,没有任何“标准”被打破。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        • 2017-07-22
        • 2016-04-04
        • 1970-01-01
        • 1970-01-01
        • 2014-04-26
        相关资源
        最近更新 更多