`
kimmking
  • 浏览: 537837 次
  • 性别: Icon_minigender_1
  • 来自: 中华大丈夫学院
社区版块
存档分类
最新评论

使用Test Swarm对JavaScript进行集成测试[infoq]

阅读更多

使用Test Swarm对JavaScript进行集成测试

作者 Dionysios G. Synodinos译者 张龙 发布于 2009年4月1日 上午12时9分

社区
Ruby,
.NET,
Java
主题
RIA,
JavaScript
标签
jQuery,
持续集成

jQuery JavaScript程序库的创建者John Resig发布了Test Swarm,该平台用于对客户端JavaScript进行分布式的持续集成测试。由于对传统JavaScript测试环境(无法扩展)深感失望,John的新项目(目前还是私有的alpha版)旨在为众多的开发者和社区提供一个用以测试浏览器的系统。

正如John所述,在各种不同的浏览器中测试jQuery难度非常大

我们力求在jQuery项目中支持所有主流浏览器的当前版本、最新发布版以及即将发布的每日构建版/beta版(我们根据用户升级浏览器的频率对这些支持标准进行了一些平衡——Safari与Opera用户的升级频率非常高)。

在本文发布时一共包含12个浏览器。
  • Internet Explorer 6、7、8。(不包括8中的7模式)
  • Firefox 2、3及每日构建版
  • Safari 3.2、4
  • Opera 9.6、10
  • Chrome 1、2

当然了,这只是Windows平台上的,还不包括OS X及Linux。对于jQuery项目我们采取了明智的策略,通常只在一种平台上进行测试,但理想情况下还需要在所有平台上测试Firefox、Safari及Opera(这三个是跨平台的浏览器)。最后的结果是在每一次提交前后我们都要在12个独立的浏览器上运行10个独立的测试套件。跨浏览器的JavaScript测试的可伸缩性还不行

如果测试需要与用户进行交互,那么这对于jQuery乃至任何大量使用JavaScript的Web应用来说都是糟糕透顶的事情了。

一些测试套件(如Yahoo UI、jQuery UI及Selenium)可以对用户交互进行自动化(你可以编写类似于“点击按钮”这样的测试)。大多数情况下这能满足我们的要求,但所有这些仅仅是对实际用户交互的一种模拟。没有什么东西可以与让人手工运行一些容易重现(并且可验证)的测试相提并论。

这是最大的可伸缩性问题。用自动化的测试套件乘以想要运行的测试个数,手工在12个浏览器中运行100个测试简直是天方夜谭。一定还有更好的办法,因为很明显:跨浏览器的JavaScript测试的可伸缩性还不行

Selenium Grid这样的解决方案有几个限制

  • 据我所知,Selenium Grid需要用Selenium来运行测试。目前还没有哪个主流的JavaScript程序库使用了Selenium(这么做的代价也不小)。
  • 它无法测试非桌面机。每个服务器都必须运行一个后台程序来处理众多任务,这样移动设备就不行了。
  • 它无法测试未知的浏览器。每个浏览器都需要特殊的回调代码以让Selenium加载浏览器,这样未知的浏览器(如IE 8、Opera 10、Firefox Nightly及Chrome)可能就没法运行了。
  • 最重要的是:Selenium Grid要求你拥有大量机器来运行测试,这不太可行,尤其是在分布式的开源JavaScript开发下更是如此。因此我们需要更加行之有效的解决方案。

John提出的解决方案Test Swarm基于JavaScript客户端,该客户端会持续不断地向中央服务器发出连接请求以运行测试。服务器收集测试套件并将其发送到各自的客户端上:

以下是我设想的Test Swarm的工作方式:开源的JavaScript程序库将测试套件提交到中央服务器上,同时用户也会参与进来。程序库的用户需要在其日常的工作中额外开两个浏览器窗口来辅助我们的工作,这样他们会感觉到也在参与着项目(其实就是这样!)。

程序库还可以将手工测试发给用户。新的手工测试到来时会通知用户(通过声音提示?),这样他们就能迅速执行了。

用户提供的这些帮助也不是无偿的:我们可以统计参与最积极的用户,然后对前几名进行嘉奖(T恤、杯子、书等等)。

InfoQ联系到了John Resig以进一步了解相关的信息。

InfoQ:Test Swarm基于何种协议?

基于MIT协议(服务器端采用PHP和MySQL,客户端是一些简单的JavaScript)。

InfoQ:除了框架所有者以外,你认为它对于其他组织有何价值?

我认为这对于其他组织和厂商都大有裨益。下面是我设想的成长计划:
  • 首先开放给主流的JavaScript程序库(他们已经建立好了测试套件和测试体制)。
  • 接下来开放给其他开源的JavaScript项目。
  • 然后开放给其他组织,只要这些组织允许匿名用户运行其测试就行。
当然通过这些步骤,任何组织都可以轻松下载服务器软件并运行自己的swarm实例——无需通过主要的Test Swarm服务器的测试。

在最初的声明中,John还提到了Test Swarm的“corporate”版

Test Swarm的“corporate”版已经引起了很多人的兴趣。目前对此还没有什么计划(除了以开源的形式发布该软件),我倒是想留点空间以便将来的扩展(或许用户会因手工测试而得到一些报酬——就像Mechanical Turk测试JavaScript那样——我不知道,但确定的是其成长空间很大)。

如果对Test Swarm感兴趣可以索取其alpha版

还可以通过InfoQ上的JavaScriptjQuery富Internet应用持续集成频道了解更多信息。

查看英文原文:Crowdsourcing JavaScript Integration Testing with Test Swarm

分享到:
评论

相关推荐

    Docker Swarm 在持续集成测试中的应用

    相比于用真实的机器作为 Selenium 自动化脚本执行环境,使用此套环境可以极大的减少对执行环境的维护工作,比如各种浏览器类型的管理和版本的管理。也能极大的减少对脚本执行环境的物质投入,节省各类资源。

    Jenkins+docker-compose+swarm 构建持续集成及一键式部署

    Jenkins mavn git docker-compose swarm 构建持续集成及一键式部署

    DockerSwarm在持续集成测试中的应用

    一个完整的测试流程所需要占用的时间和资源也不可忽视,包括对测试结果的分析都要占用大量的资源。如何在更短时间内,提供完整、全面的测试以保证质量,是我们急于解决的问题,也是保证敏捷开发能顺利进行的关键。 ...

    详解Docker Swarm 在持续集成测试中的应用

    一个完整的测试流程所需要占用的时间和资源也不可忽视,包括对测试结果的分析都要占用大量的资源。如何在更短时间内,提供完整、全面的测试以保证质量,是我们急于解决的问题,也是保证敏捷开发能顺利进行的关键。 ...

    swarm, 群模拟器 javascript/浏览器客户端.zip

    swarm, 群模拟器 javascript/浏览器客户端 群模拟器。 从只有少数虫子和一小堆肉开始,建立一个无穷大的巨大外星 Bug 群。Evan,,swarm,generator,generator,generator,generator,generator,generat

    swarm使用说明

    swarm使用说明 安装Swarm建模平台,首先需要安装编程语言(JAVA)的环境及Swarm软件。安装后,需要设置三个环境变量。首先,CLASSPATH必须包含文件swarm.jar和kawa.jar,这两个文件一般在share/swarm子目录下。其次...

    使用Swarm开发程序时遇到的问题(用户手册)

    本文档是由CASA有限公司的...第三部分则详细讨论了用户在使用Swarm开发程序时可那遇到的种种问题。鼓励用户探索Swarm提供的样例程序,并访问Swarm站点(http://www.swarm.org)来了解最新消息和加入Swarm邮件列表。

    pso_test.rar_The Test_pso swarm

    this is the code source in c of particle swarm optimisation (PSO)with a simple function

    swarm 的帮助文档

    Action - interface swarm.activity.Action. An action type that has been customized for direct execution by an action interpreter.. ActionArgs - interface swarm.activity.ActionArgs. Supertype of Action...

    swarm:使用 Javascript 在您的浏览器中显示一组漂亮的像素!

    一群使用 Javascript 在您的浏览器中显示一组漂亮的像素!安装通过克隆/下载此存储库来安装 Swarm,然后将 Swarm.js(或 Swarm.min.js)文件移动到您的项目文件夹。用法要使用 swarm 包含脚本并创建一个新的 Swarm:...

    swarm仿真工具资料

    swarm仿真软件相关工具资料

    swarm中文手册.doc

    swarm中文手册.doc Swarm用户指南

    giantswarm-js-client:适用于Giant Swarm APIJavaScript客户端

    适用于Giant Swarm API v4JavaScript客户端这是用于与ES5兼容的异步JavaScript客户端库。 它是使用swagger-codegen使用官方OpenAPI规范生成的。 该客户端仅支持Giant Swarm API的v4。 为了支持较旧的API版本方法,此...

    Native.Docker.Clustering.with.Swarm

    Unleash the power of operating Docker Swarm, Docker Machine and Docker Compose together. Get to grips with Docker Swarm, one of the key components of the Docker ecosystem A comprehensive guide that ...

    swarm例程_agent2d

    swarm例程之一 agent2d源码,配置好环境后可直接运行

    selenium-grid-docker-swarm-test:使用Selenium Grid和Docker Swarm分发自动化测试

    使用Selenium Grid和Docker进行分布式测试 使用Selenium Grid和Docker Swarm分发自动化测试 想学习如何构建它吗? 查看。 要使用这个项目吗? 货叉/克隆 创建并激活虚拟环境 安装要求 Digital Ocean并访问令牌 将...

    Swarm测试网部署教程手册(新).pdf

    bzz部署教程

Global site tag (gtag.js) - Google Analytics