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

标签 javascript testing selenium integration phantomjs

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

为了确保一切正常,我打算做:

  • 使用 QUnit 进行单一测试
  • 功能/集成测试

在这种情况下,您推荐使用哪些框架/工具进行集成测试?我从 Selenium 开始,但我不太喜欢它。我刚刚开始研究 PhantomJS 和 CasperJS,它们对于导航、点击链接等基本功能来说似乎相当不错......

你有什么建议?

最佳答案

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

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

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

一旦 PhantomJS 2.0 发布(希望在 2013 年底左右),或者如果您的网站不依赖于任何最新的 HTML5 API,您可以运行 CasperJS 两次,以获得双重覆盖。 (顺便说一句,PhantomJS 自然是 headless 的;SlimerJS 需要使用 Xvfb ,它仅适用于 Linux 或 Mac。)

什么 Selenium给你额外的是你可以控制其他浏览器,特别是 IE。 (当然,对于 IE,您需要运行 Windows 机器。)Selenium 和 SlimerJS 一样,需要 Xvfb 是 headless 的(同样,不包括 Windows)。 (顺便说一句,Selenium 文档 on supported browsers 已经很久没有更新了,但我假设每个浏览器的更高版本至少具有与此处显示的相同的支持。)

关于单页应用程序的javascript集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12158163/

相关文章:

testing - 白色 UI 自动化框架 : back colour

Java 在测试期间重复

javascript - Selenium - 将文件写入带有换行符的 codemirror

testing - 标题内容中的无效字符 ["Host"] Postman

testing - 您的测试数据应该与实时数据采用相同的形式吗?

java - 无法解决 selenium 驱动程序的导入问题

javascript - 从sqlite db获取图像并使用JavaScript显示在页面上

javascript - angularjs中如何实现基类和派生类的概念?

javascript - MySQL 注册连接错误

javascript - jquery mobile 中页面转换期间出现白屏