单页应用程序的javascript集成测试

javascript integration testing for one page applications

本文关键字:集成测试 javascript 应用程序 单页      更新时间:2023-09-26

我目前正在开发一个单页javascript应用程序,服务器端使用Sinatra Ruby,客户端使用Backbone.js、jQuery、jQuery UI。应用程序的主要目的是允许客户查看/编辑不同类型的项目,每个项目视图都是一个或多或少复杂的表单

为了确保一切正常,我计划做:

  • 使用QUnit的统一测试
  • 功能/集成测试

在这种情况下,您建议使用哪些框架/工具进行集成测试?我从硒开始,但我不太喜欢它。我刚开始研究PhantomJS和CasperJS,它们似乎非常适合导航、点击链接等基本功能。。。

你有什么建议?

你没有说你不喜欢Selenium,但我猜你对JavaScript很有信心,所以我的建议是使用CasperJS作为主要工具。它可以很好地与单页web应用程序配合使用,并配有自己的测试工具。当使用嵌套的wait子句时,代码有时仍然会变得有点复杂;通过确保在每个测试中不要做太多来处理这个问题,然后如果仍然很复杂,就进行重构。不要忘记测试的设计:如果你的选择器非常复杂,可以考虑在它周围添加一个<span id="xxxx">...</span>,这样你的测试就可以直接进行了!

您可以将CasperJS与PhantomJS和SlimerJS一起使用。我目前更喜欢SlimerJS,如:

  • PhantomJS1.x被困在一个旧的WebKit(相当于Safari5.1和Chrome13)上,所以测试任何更现代的功能都是令人沮丧的
  • SlimerJS既可以与Gecko引擎配合使用,也可以直接与您安装的Firefox版本配合使用。这允许您使用额外的插件、安全证书等配置Firefox配置文件
  • SlimerJS是用JavaScript编写的,因此如果您有需要,可以更容易地破解

一旦PhantomJS 2.0问世(希望在2013年底左右),或者如果你的网站不依赖任何最新的HTML5 API,你可以运行两次CasperJS,以获得双倍的覆盖率。(顺便说一句,PhantomJS自然是无头的;SlimerJS需要使用Xvfb,这只是Linux或Mac。)

Selenium为您提供的额外功能是您可以控制其他浏览器,尤其是IE。(当然,对于IE,你需要运行一台Windows机器。)Selenium和SlimerJS一样,需要Xvfb是无头的(同样,不包括Windows)。(顺便说一句,支持的浏览器上的Selenium文档已经很久没有更新了,但我假设每个浏览器的后续版本至少都有相同的支持。)