BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

.NET平台下Web测试工具横向比较

| 作者 赵劼 关注 4 他的粉丝 发布于 2009年4月14日. 估计阅读时间: 6 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

在浏览器中打开页面并加以判断,无疑是测试一个Web应用程序最直接的方式。借助一款合适的自动测试工具或框架,测试人员就可以在一定程度上从繁重的手动测试工作中解放出来。Ruby平台下的Watir无疑是这方面的姣姣者,因此被大量用于Web应用程序的回归测试或验收测试。不过对于使用.NET Framework的技术团队来说,Watir不一定是最好的选择。目前社区中已经出现了几款.NET平台下的Web测试框架,测试人员现在就可以使用自己最熟悉的语言来实现同样的功能,并与自己的开发环境无缝集成。

WatiN 

WatiN是Watir的“应对之作”,使用C#语言开发,不过能够使用任意.NET语言编写测试代码。WatiN 1.0只支持IE浏览器,不过从2.0版本开始也能自动操作FireFox(需安装插件)浏览器了。其最新版本是2月19日发布的2.0 CTP3,对面向FireFox的相关功能进行了增强并修改了一些bug。其附属项目WatiN Test Recorder支持对浏览器操作的捕获,并自动生成测试代码。WatiN Test Recorder目前刚发布了alpha版本,您可以从它的主页上跟进其最新消息。WatiN是一个开源项目,使用Apache License 2.0协议发布。 

Selenium 

严格说来,Selenium是一套完整的Web应用程序测试系统,它包含了测试的录制(Selenium IDE)、编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可运行于任何支持JavaScript的浏览器上。Selenium Core由一种指定格式的HTML文件驱动,在一定程度上增强了测试套件(Test Suite)的可读性。Selenium Remote Control允许测试人员使用常见的语言(自然包括C#等.NET语言)编写测试代码,并支持不同操作系统下的各种主流浏览器。Selenium Grid的作用是将测试分发至多台机器,这样便可大大加快测试速度。与WatiN相同,Selenium也是一款同样使用Apache License 2.0协议发布的开源框架。 

LTAF 

Lightweight Test Automation Framework for ASP.NET(轻量级ASP.NET自动测试框架,下文简称为LTAF)是一款由ASP.NET QA团队开发的框架,并用于产品的回归测试。测试人员能够使用任意.NET代码编写测试,并使用内置的API操作DOM元素。LTAF最近发布了April Update并包含了框架代码,它的Release Note记录了框架的使用方式。赵劼最近在博客中谈到了利用LTAF对ASP.NET MVC应用程序中的视图作独立的单元测试,他在文章中对LTAF有这样的评价:

……虽然在某些方面(例如DOM元素的选取)不如其“竞争对手”,但是LTAF自有其独到之处:

  • 由于直接在浏览器中运行,它天生便支持现有的——以及未来可能出现的任意浏览器。
  • 由于直接部署在被测试的网站中,因此测试代码和网站页面是在同一个进程中。

第一点优势自不必说,而第二点更是关键。试想WaitN和Selenium,都是通过编写代码在浏览器中打开页面。这意味着我们的在测试代码和被测试的网页分别在不同的进程中。在这个前提下,如果我们要将测试代码中定义的数据传递给被测试的网页(也就是视图对象),我们就必须进行跨进程的通信。而无论怎么实现,都逃不过“序列化”一途,这无疑增加了复杂度。而使用LTAF之后,这个问题瞬间烟消云散了,因为我们可以直接在内存中“传递”测试数据,一切都只是个引用而已。

不过任何事物都具有两面性,LTAF也有一些难以天生的,而且是永远无法弥补的缺点。例如:

  • 由于LTAF将待测试的页面放置在Frame中,因此该页面上的window.top等基于浏览器frame结构的属性会被改变。
  • 由于LTAF的本质是使用JavaScript来操作DOM,这意味着任何会阻塞程序进行的操作(例如alert)都不能使用,否则将阻塞整个测试过程。

幸运的是,这两点都不会成为严重的问题。对于第一种情况,我们只需要编写一个自定的getTop方法来替换直接访问windows.top的做法即可。而第二种情况——老赵从来不喜欢alert或confirm这种“纯浏览器功能”,因为它们会带来很差的用户体验,更何况现在的JavaScript类库/框架都能很轻松的做出这种效果,您觉得呢?

比较 

虽然老赵推荐使用LTAF,不过究竟哪款测试框架最适合您的项目,还需要读者根据需要自己的需要做出判断。以下表格列出了他们的横向比较:

框架 WatiN Selenium LTAF
浏览器支持 IE / FireFox IE / FireFox / Opera / Safari 任意
自动生成代码 有,但目前不支持FireFox浏览器
开源协议 Apache Licence 2.0 Apache Licence 2.0 不开源,但发布代码
其他 / 可将测试分布于多台机器执行,加快速度 测试代码与网站在同一进程中。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

WatiN ‘开始’支持Firefox自动生成代码 by Ta Toyo

WatiN Test Recorder Version 2.0 is now in alpha

Selenium 比较好用! by 王 辰阳

Selenium 比较好用!

在用Selenium by 金 勇

一直都在用Selenium,因为需要和FitNesse集成。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT