Unit testing 如何最好地为web应用程序进行单元测试

Unit testing 如何最好地为web应用程序进行单元测试,unit-testing,Unit Testing,我正在编写一个web应用程序,它在UI方面非常复杂,并且严重依赖AJAX、DOM和图像处理 是否有任何标准实践(我不需要工具)可以用来减少bug?一种非常简单的技术是冒烟测试,您可以自动点击所有应用程序。如果脚本运行并且日志中任何地方都没有错误,则至少有一个已定义的质量级别 这项技术实际上捕获了相当数量的回归中断,并且比听起来要有效得多。我们使用它。是一个很好的工具。一个简单的清单(甚至在一张纸上!)是确保你永远不会跳过重要事情的最好方法。这是一个很好的“冒烟测试”,没有任何“标准”被打破。将逻

我正在编写一个web应用程序,它在UI方面非常复杂,并且严重依赖AJAX、DOM和图像处理


是否有任何标准实践(我不需要工具)可以用来减少bug?

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


这项技术实际上捕获了相当数量的回归中断,并且比听起来要有效得多。我们使用它。

是一个很好的工具。

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

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

对于一个非常基本的示例,没有这样做的代码:

string str=TextBox1.Text.ToString();
//不管你的代码做什么
TextBox2.Text=str;
而是使用方法将逻辑提取到单独的类中:

TextBox2.Text=DoWork(TextBox1.Text.ToString());
公开课
{
公共字符串DoWork(字符串str)
{
//工作
返回str2;
}
}
通过这种方式,您可以编写单元测试来验证DoWork是否返回了正确的值:

string return=DoWork(“TestThisString”);

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

好问题。我一直在想同样的事情。这是一个非常模糊的问题。你的问题通常可以用一系列工具来回答,但是你让它听起来像是有一种神奇的方法来减少代码中的bug。你到底在问什么?@ryeguy他的问题是一个面向设计的问题。他在问单元测试风格如何与一个高度UI化的应用程序相适应。Carlten能够回答这个问题。我认为devinb是正确的。工具也可以帮助你发现bug,但你首先如何减少它们?你是指带有特定测试场景的功能测试,还是只需点击每个可能的目标?我们所做的最简单的版本就是点击我们主要交付的用例。至少,我们还包括主要备用/错误流。这并不一定意味着我们会单击所有按钮/项目。