Web应用程序中的测试驱动开发资源?[关闭]


15

我想尝试在我们的Web应用程序中实现一些TDD,以减少回归并提高发行质量,但我不相信自动化测试在与Web应用程序一样蓬松的性能上能表现得如何。

我已经阅读并尝试了TDD和单元测试,但是示例都是“可靠的”,并且是诸如货币转换器之类的简单功能。

是否有任何资源可以帮助进行单元测试内容管理和发布系统?如何对购物车/商店(实物和在线产品)进行单元测试?AJAX?

谷歌搜索“ Web测试驱动开发”只是几年前的老文章,要么涉及类似计算器功能的示例,要么讨论为什么TDD比任何东西都要好(没有任何示例)。


1
可用的工具取决于语言。您使用哪种语言?
Alb

我意识到这一点-但我一直在寻找讨论文章和论文,而不是特定的工具。我知道可以使用哪些工具,但是想了解如何最好地将它们用于前端驱动的应用程序。
HorusKol 2011年

Answers:


2

大免责声明:我尚未构建任何Web应用程序,也未测试任何Web应用程序。以下只是我在信息领域内随意走动时所吸收的信息小知识。

以这样一种方式构造您的Web应用程序,使其能够独立测试业务规则。如果您发现自己通过用户界面测试业务规则,那么可能是时候考虑重新设计了。

在测试UI时,请以可预测的方式响应的模拟实现替换您的业务规则。

以上两个规则摘自Bob Martin在RailsConf 2010上的演讲。演讲不是关于TDD的,而是他提到测试的部分简短而中间。

有一些工具,例如JsUnitJSSpecYUI Test(用于测试JavaScript)和SeleniumWatir(用于测试UI)。

务实的书架有几本书涵盖了Web应用程序测试。在http://www.pragprog.com/categories/design上标记有Testing的书籍清单。Pragmatic Bookshelf Web应用程序测试书籍主要针对Ruby和Rails,但应该普遍适用。


网页设计的一个主要问题是CSS测试-一个新的CSS规则可能会带来意想不到的后果,但只会在具有特定内容的页面上出现……您可以对此进行单元测试吗?
HorusKol 2011年

好问题。我建议这是您的UI测试的一部分。您可以开发测试以包含您期望的各种页面内容(以及一些您不期望的页面内容),并适当地编写您的接受记录。然后,当您引入新的CSS规则时,您的UI测试应突出显示所有回归。也许这个过程太耗时了,让某人在网站上进行质量检查测试并报告问题可能会更好地为您服务。
安东尼·克兰普

3

测试驱动JavaScript开发是克里斯蒂安·约翰森(Christian Johansen)的一本非常不错的书,该书是Sinon.jsBuster.js的开发人员,涵盖了诸如以下主题(来自网站):

  • 了解单元测试和TDD
  • 选择正确的单元测试框架
  • 构建更清洁的API,模块化且强大的JavaScript
  • 通过重构不断改进代码
  • 五个实用的TDD会话:Ajax,DOM操作,Node.js等
  • 针对不熟悉Java语言的开发人员的测试驱动之旅

当前,我们将Sinon.js与Mocha结合使用,但由于其功能非常整洁,因此可以切换到Buster.js!


1

在我最近从事的一个项目中,首席开发人员决定使用Unity,以便在大型Web应用程序中简化模拟和TDD-我认为在Web应用程序中,TDD通常会伴随着Unity的使用。

调查CMS的单元测试很可能会导致死胡同,因为根本没有什么可以嘲笑的。我看不到不模拟页面的http流量就可以测试的内容-那时测试几乎没有价值。

我认为Web应用程序的一个有用的经验法则是,如果它可以使用模拟程序来降低复杂性,则可以对其进行单元测试。

因此,在Web应用程序中,您可以模拟数据库以对数据访问层或模型的不同部分进行单元测试;您可以模拟用户输入以对视图或UI等进行单元测试。


0

我已经编写了有关使用Python + Django进行Web开发的TDD的书。它涵盖了TDD,包括端到端/功能测试(硒)和较低级别的“单元”测试。我还介绍了现代开发人员实践,例如如何将git集成到您的工作流中,如何部署到服务器上并对其进行自动化和测试,持续集成,模拟和测试隔离以及许多其他方面:

http://www.obeythetestinggoat.com/

(或http://shop.oreilly.com/product/0636920051091.do


链接已断开
Keldon Alleyne
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.