软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件测试技术>>WEB测试>>正文
强大的Web开源测试工具—Selenium
文章出处:CSDN博客 作者:朱少民 发布时间:2006-07-04

介绍

Selenium ThoughtWorks 专门为 Web 应用而开发的自动化测试工具,适合进行功能测试、验收测试,其最大的优势有几点:

1)       可直接运行在浏览器之上,所见即所得,就像真实用户所做的一样。Selenium 的核心,也称 browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令

2)       支持多操作系统(Windows, Mac OSLinux)和各种浏览器Internet ExplorerMozilla Firefox,更容易发现浏览器的不兼容性

3)       支持两种开发脚本的模式test runner HTML文件)和 driven(脚本语言编写),其语言包括Java, .NET, Perl, Python Ruby. 使用 driven 脚本,测试有一部分在浏览器之外运行,而如果使用 test runner 脚本的话,测试是完全在浏览器中运行的。

但是Selenium是轻量的测试框架, 脚本所处理的测试用例构成简单,其实质就是通过HTTP协议,发送请求(request)来完成测试用例,所以很困难处理业务逻辑关系强的测试用例。

更多的讨论: http://forums.openqa.org/index.jspa

Selenium 命令

Selenium 命令分成两类 —— 操作(action断言(assertion

  • 操作模拟用户与 Web 应用程序的交互。例如,单击一个按钮和填写一个表单,这些都是常见的用户操作,可以用 Selenium 命令来自动化这些操作。
  • 断言验证一个命令的预期结果。常见的断言包括验证页面内容或当前位置是否正确。

Selenium 网站上可以找到可用命令的完整列表。通过 Selenium 命令,脚本编写者可以描述 browser bot 在浏览器中所执行的操作

组成

  • Selenium IDE:一个firefoxplug-in,可以录制和回放并保存一些test cases, 可以生成一些简单的基于rc 模式的简单code. (相当于Jmetergui模式和jmeter脚本的生成-badboy
  • Selenium Core. 整个测试机制的核心部分,即有assertion(断言) 机制的test suite runner。它由一些纯js代码组成, 可以运行在windows/linux的不同browser (相当于Jmeter runner Assertion
  • Selenium Remote Control:一个代理与控制端, 可代替Selenium core/ Selenium IDEclient(相当于通过编程来实现一切),是支持多语言的. (相当于Jmeterclient/server模式,Selenium Remote Control更强一些)       

支持的平台

  • Windows:
    • Internet Explorer 6.0
    • Firefox 0.8 to 1.5, Mozilla Suite 1.6+, 1.7+
    • Seamonkey 1.0, Opera 8
  • Mac OS X:
    • Safari 1.3+
    • Firefox 0.8 to 1.5,  Mozilla Suite 1.6+, 1.7+
    • Seamonkey 1.0, Camino 1.0a1  
  • Linux:
    • Firefox 0.8 to 1.5,  Mozilla Suite 1.6+, 1.7+
    • Konqueror

部署Selenium

下载地方:http://www.openqa.org/selenium/

selenium目录下的内容:

l          devtests:试验性功能 dom-images: 查看DOM用图片

l          dom-styles: 查看DOM用样式表

l          html-xpath: Xpath

l          jsmock: javascript mock library

l          jsunit: javascript unit test library

l          tests: samples(以这个为基础开发测试用例)

l          核心js文件和html文件 

l          如果想要测试自己开发的发布在服务器端的页面,需要把selenium配置在同一个服务器下: Apache 直接将selenium目录拷贝至htdocsApache的确省根目录)目录下,然后启动Apache,用地址http://server8080/selenium/TestRunner.html访问例子。

l          Tomcat 直接将selenium目录拷贝至webapps目录下,启动Tomcat,用地址http://server8080/selenium/TestRunner.html访问例子。

l          IIS建立一个虚拟目录selenium将该虚拟目录直接指向实际的selenium目录用地址http://server/selenium/TestRunner.html访问例子

Test runner 脚本开发模式

Selenium test runner 脚本,就是测试用例(test case,是用 HTML 语言通过一个简单的表布局编写的,即使对于非技术人员来说,test runner 脚本也易于阅读和编写。如 清单 1 所示。

清单 1. Selenium 测试用例的结构 (HTML格式)

Command1/Assertion1

Target1

Value1

Command2 Assertion1

Target2

Value2

test runner 脚本使用与 xUnit 框架相同的测试套件(test suite)和测试用例概念。测试用例和命令按照它们在测试套件和测试用例中出现的顺序依次执行。在 清单 1 中:

  • 第一列包含命令 断言
  • 第二列包含命令或断言的目标(target。可以用多种受支持的组件定位符中的一种来指定目标。通常使用的是组件的 ID 或名称,但 XPath DOM 定位符也是受支持的。
  • 第三列包含用于为命令或断言指定参数的。例如,当使用 type 命令时,这一列可能就是一个文本域所期望的值。

Test runner 脚本通常与所测试的应用程序(AUT)部署在同一个服务器上。这是因为 browser bot 使用 JavaScript 来模拟用户操作。这些脚本在一个受限制的沙箱环境中运行。如果需要绕过这些限制,可以使用一个代理。

driven 脚本开发模式

driven Selenium 脚本是用多种受支持的编程语言(Java, .NET, Perl, Python Ruby)中的一种编写的。这些脚本在浏览器之外的一个单独的进程中运行。驱动程序的任务是执行测试脚本,并通过与运行在浏览器中的 browser bot 进行通信来驱动浏览器。驱动程序与 browser bot 之间的通信使用一种简单的特定于 Selenium 的连接语言 Selenese

driven 脚本比 test runner 脚本更强大、更灵活,可以将它们与 xUnit 框架集成。driven 脚本编写和部署更复杂些,它必须执行以下任务:

  • 启动服务器。
  • 部署所测试的应用程序(AUT)。
  • 部署测试脚本。
  • 启动浏览器。
  • 发送命令到 browser bot
  • 验证 browser bot 执行的命令的结果。

driven 脚本更依赖于应用程序运行时环境。例如,Java 驱动程序使用一个嵌入式 Jetty Tomcat 实例来部署所测试的应用程序,如将 Selenium 集成到 Ruby on Rails 中。

开发测试用例

测试用例开发涉及四类文件

1.      主文件: TestRunner.html/TestRunner.hta(.hta文件是html applicationwindows平台特有)

2.      Test suiteTest case文件:需要编写的由一个表格组成的html文件;

3.      引擎库js文件:位于selenium根目录下的核心文件,其中html-xpath目录下的那个文件,也是必须的库文件;

4.      user-extensions.js:用来扩展selenium的文件;用户自己编写的函数和扩展的命令都应该放在这个文件中;

这四类文件中,除了引擎库以外,其他三类文件都是可以根据具体情况去修改的。selenium 部署完毕后,可以打开浏览器来通过url来访问TestRunner.html文件。初始的时候,TestRunner.html文件中的 TestSuite是链接到tests目录下的TestSuite.html文件,TestCaseframe(上部中间)中打开了 TestSuite.html文件中的第一个Test Case “TestOpen.html”

可以直接修改TestSuite.html文件,让其指向自己开发的Test case html文件。我们也可以建立另外一个目录,然后将自己的TestSuite文件和Test case文件都保存在这个目录中。如果使用后一种方式,那么在打开TestRunner.html的时候需要传递一个参数,例子如下:
http://localhost/selenium/TestRunner.html?test=/testDir/myTestSuite.html

下面就是开发测试用例——即编辑测试用例的表格。无论Test Suite还是Test Case,表格的第一行都是描述性文字,selenium的引擎是不会处理这一行的内容的。实际内容都是从第二行开始的。Test case的表格列数一定不能少于3列,否则Selenium会出错。而基本的三列组成是: 
|command| Target| value|
 

 清单 2就是四个测试用例的例子,将执行以下操作:

  1. 通过进入 /change_address_form.html 打开变更地址页面。
  2. ID address_field 的文本框中输入 Betelgeuse state prison
  3. 单击名为 Submit 的输入区。注意,这里使用 XPath 找到 Submit 按钮,这导致表单数据被发送到服务器。
  4. 验证页面是否包含文本 Address change successful

清单 2. 在测试用例中使用命令和断言的例子

command

Target

Value

open

/change_address_form.html

 

type

address_field

Betelgeuse state prison

clickAndWait

//input[@name='Submit']

 

verifyTextPresent

Address change successful<

 

 

测试套件

要达到对应用程序的完全测试覆盖,通常需要不止一个测试用例。这就是 Selenium 使用测试套件的原因。测试套件用于将具有类似功能的一些测试用例编成一组,以便让它们按顺序运行。

测试套件和测试用例一样,都是用简单的 HTML 表编写的。Selenium 执行的缺省测试套件的名称是 TestSuite.html。测试套件使用一个只包含一列的表,表中的每一行指向一个包含某个测试用例的文件。

对于一个有着多个功能模块、组件的web应用,编写的测试脚本html必然比较多。因此,应该建立一个合理的目录结构来组织这些脚本,一般按web服务、模块、功能来组织,形成层次性结构。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=854963


站内搜索
相关文章
◎压力测试实例
◎测试Web Application之三:进攻
◎测试Web Application之二:准备作战
◎测试Web Application之一:准备团队
◎测试基于Web的应用程序
◎如何从用户的角度来测试Web应用软件
◎Client/Server测试
◎IT架构和应用程序的端到端测试
◎C/S和B/S的比较
◎评估网络测试的价值
◎SEWM-2004中文Web检索测试指南
◎嵌入式Web视频点播系统实现方法
◎用webload进行web application性能测试(二)
◎用webload进行web application性能测试(一)
◎终极优化(附录):使用 IIS 5.0 调整 Web服务器的艺术与科学
◎终极优化(4):使用 IIS 5.0 调整 Web服务器的艺术与科学
◎终极优化(3):使用 IIS 5.0 调整 Web服务器的艺术与科学
◎终极优化(2):使用 IIS 5.0 调整 Web服务器的艺术与科学
◎终极优化(1):使用 IIS 5.0 调整 Web服务器的艺术与科学
◎IT 架构和应用程序的端到端测试(3)
◎IT 架构和应用程序的端到端测试(2)
◎IT 架构和应用程序的端到端测试(1)
◎JWebUnit为Web应用程序创建测试用例的办法二
◎JWebUnit为Web应用程序创建测试用例的办法一
◎ASP.NET负压测试
◎Web测试工具对比--自动化功能测试(2)
◎Web测试工具对比--自动化软件测试(1)
◎Web的系统测试方法
◎web扫盲专题之入门概念
◎解决WEB性能测试中的验证码问题
◎你必须学会的几个常用网络测试命令
◎StrutsTest使用
◎基于嵌入式WEB的网络视频监控系统的设计与实现
◎分析数据库死锁原因的方法
◎Web下的整体测试
◎端口大全
◎网站测试技术简介
◎服务器加速技术一览
◎巧用net命令进行局域网文件批量同步更新篇
◎编写高性能WEB 应用程序的10 个技巧
◎主流七款web服务器软件点评(二)
◎主流七款web服务器软件点评(一)
◎巧用Behaviors检测浏览器
◎Web测试方法
◎基于Web的系统测试
◎Web体系结构发展规划
◎功能测试用例的书写方式
◎Web 测试的经验
◎使用Sql生成测试数据
◎对Web服务进行压力测试
热门文章
◎C/S和B/S的比较
◎Web测试方法
◎你必须学会的几个常用网络测试命令
◎压力测试实例
◎web应用程序测试方法和测试技术详述
◎web测试技术经典案例
◎网站测试技术简介
◎Web下的整体测试
◎功能测试用例的书写方式
◎端口大全
◎Web 测试的经验
◎Web的系统测试方法
◎测试基于Web的应用程序
◎Client/Server测试
◎分析数据库死锁原因的方法
◎主流七款web服务器软件点评(一)
◎Web测试工具对比--自动化软件测试(1)
◎如何从用户的角度来测试Web应用软件
◎Web测试工具对比--自动化功能测试(2)
◎使用HttpUnit进行集成测试
◎Web应用程序的整体测试
◎对Web服务进行压力测试
◎基于Web的系统测试
◎如何测试web网站?
◎ASP.NET负压测试
◎web扫盲专题之入门概念
◎站点测试 Web Testing
◎使用Sql生成测试数据
◎主流七款web服务器软件点评(二)
◎Web测试手段
◎用webload进行web application性能测试(一)
◎基于嵌入式WEB的网络视频监控系统的设计与实现
◎测试Web Application之一:准备团队
◎解决WEB性能测试中的验证码问题
◎编写高性能WEB 应用程序的10 个技巧
◎评估网络测试的价值
◎StrutsTest使用
◎用webload进行web application性能测试(二)
◎网站测试技术
◎嵌入式Web视频点播系统实现方法
◎测试Web Application之三:进攻
◎巧用net命令进行局域网文件批量同步更新篇
◎测试Web Application之二:准备作战
◎开源Web自动化测试框架——Watir试用手记
◎Web体系结构发展规划
◎IT架构和应用程序的端到端测试
◎WEB应用程序的测试与优化
◎WEB测试资料
◎终极优化(1):使用 IIS 5.0 调整 Web服务器的艺术与科学
◎JWebUnit为Web应用程序创建测试用例的办法一

Google提供的广告