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

  在浏览器中打开页面并加以判断,无疑是测试一个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 不开源,但发布代码
其他 / 可将测试分布于多台机器执行,加快速度 测试代码与网站在同一进程中。
时间: 2024-10-25 10:26:51

艾伟:.NET平台下Web测试工具横向比较的相关文章

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

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

.NET平台下WEB应用程序的部署的例子

web|程序 NET平台下WEB应用程序的部署(安装数据库和自动配置) 在.net平台下,部署 Web 解决方案是比较方便的.我们可以利用Visual Studio.NET 2003添加一个WEB安装项目,在部署的"文件系统编辑器"中添加项目的主输出和内容文件,非常简易地完成安装程序的制作. 但是,这样制作的安装程序,只是将web页和asp.net程序编译的dll文件安装到目标机器的iis目录,对于一般的应用程序是可以的(比如用access数据库,可以一起打包到安装程序中):如果数据库

.NET平台下WEB应用程序的部署(安装数据库和自动配置)

web|程序|数据|数据库 .NET平台下WEB应用程序的部署(安装数据库和自动配置) 李洪根 在.NET平台下,部署 Web 解决方案是比较方便的.我们可以利用Visual Studio.NET 2003添加一个WEB安装项目,在部署的"文件系统编辑器"中添加项目的主输出和内容文件,非常简易地完成安装程序的制作. 但是,这样制作的安装程序,只是将Web页和ASP.NET程序编译的DLL文件安装到目标机器的IIS目录,对于一般的应用程序是可以的(比如用Access数据库,可以一起打包到

FreeBSD平台下Web服务器架设攻略

在FreeBSD系统中,一个标准的FreeBSD系统,至少要有一个网络界面以便与其他计算机通信.它支持Token Ring和FDDI,以及普通电话拨号连接.ISDN.ATM等广域网连接方式.本文要讨论的是基于此系统平台下的WEB服务的组建情况,FreeBSD的使用版本为4.7. 一.接入Internet 配置的第一步就是让FreeBSD接入Internet并设置好代理服务.本机使用ADSL接入Internet有两种情况,即通过拨号获取的动态ip或ISP提供的静态ip.以下主要介绍动态IP的配置过

PowerShell调用Web测试工具Selenium实例_PowerShell

什么是Selenium Selenium是一款著名的web应用程序测试工具,它能通过在浏览器中模拟用户的动作来完成测试,其api支持java,c#,python,ruby,php,perl,javascript这些主流编程语言和脚本语言.Selenium还支持IE,火狐,和chrome等主流浏览器. PowerShell 如何直接调用Selenium PowerShell直接调用Selenium,其实类似PowerShell调用C#方法.以IE浏览器为例,至少需要具备两个文件: 1.IEDriv

.NET平台下Web树形结构程序设计

web|程序|设计 我的上篇文章<树形结构在开发中的应用>主要是在Windows Form下的实现,下面讲一下Web Form下的实现. 概述 TreeView是一个重要的控件,无论是在VB.NET,C# 还是VB.Delphi等各种语言中,都充当了导航器的作用.在实际工作中,很多情况下需要将TreeView与数据库进行连接,以填充其节点.在Windows Form和Web Form中,我们可以用TreeView来显示树形结构,如显示目录树.显示地区.分类显示商品等.可以说,在大部分软件的开发

NET平台下Web树形结构怎样设计?

问题描述 比如:有两三个表,分别是电业局.供电局.供电所.在c#.net通过TreeView怎样实现动态生成树形结构呢?最顶层是:电业局,中层:供电局,最下层:供电所.请高手指点一下,给一个详细的代码说明? 解决方案 解决方案二:不清楚你要的是怎么样的:不过应该说还是比较简单的:先获取这三个数据集:然后先对第一层绑定电业局:然后对此电业局下面的供电局从数据集里面检索出来绑定:同理绑定第三层:第二层和第三层的绑定写在DataItemBound事件里面:解决方案三://绑定菜单树privatevoi

web压力测试工具apache

现在很多web压力测试工具都是收费的,但是apache却自带了一个免费的压力测试工具,即ab工具(命令).具体可在Apache的根目录下的bin目录里面,找到一个ab.exe文件就是.用它可以粗略检测一下自己的程序性能如何. 具体用法如下,摘抄自网上.如有错误,还请指正. 格式 ab [options] [http://]hostname[:port]/path 参数 -n requests     Number of requests to perform //在测试会话中所执行的请求个数.默

使用IBM Rational的统一的测试工具集测试并仿真Web Services

IBM Rational Test Workbench(RTW)是 IBM Rational 的统一的测试工具集,包括功能测试.性能测试 .接口测试等模块,满足客户多种类型的自动化测试需求.其中 Rational Integration Tester(以下简称 RIT)是接口测试工具,可以对包括 Web Services.HTTP.Socket.MQ.Database 等多种类型的接口直接进 行自动化的功能/性能测试测试.本文介绍如何通过 Rational Integration Tester