`
kong_bai
  • 浏览: 136625 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

强大的Web开源测试工具—Selenium

阅读更多

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

  • 可直接运行在浏览器之上,所见即所得,就像真实用户所做的一样。Selenium 的核心,也称 browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令
  • 支持多操作系统(Windows, Mac OSLinux)和各种浏览器Internet ExplorerMozilla Firefox,更容易发现浏览器的不兼容性
  • 支持两种开发脚本的模式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目录下的内容:

devtests:试验性功能 dom-images: 查看DOM用图片
dom-styles: 查看DOM用样式表
html-xpath: Xpath库
jsmock: javascript mock library
jsunit: javascript unit test library
tests: samples(以这个为基础开发测试用例)
核心js文件和html文件

如果想要测试自己开发的发布在服务器端的页面,需要把selenium配置在同一个服务器下:

Apache 直接将selenium目录拷贝至htdocsApache的确省根目录目录下然后启动Apache用地址http://server8080/selenium/TestRunner.html访问例子。

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

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 中。

开发测试用例

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

主文件: TestRunner.html/TestRunner.hta(.hta文件是html application,windows平台特有);
Test suite和Test case文件:需要编写的由一个表格组成的html文件;
引擎库js文件:位于selenium根目录下的核心文件,其中html-xpath目录下的那个文件,也是必须的库文件;
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服务、模块、功能来组织,形成层次性结构。

分享到:
评论

相关推荐

    selenium测试工具

    Selenium是现在使用最为广泛的一款开源自动化测试工具,也是非商业支持的稳定性易用性最好的一款自动化测试工具。和由HP提供强大商业支持的QTP相比,selenium不仅在软件投资上有比较大的优势,在针对web测试的稳定性...

    selenium私房菜系列

    Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,本系列现在主要包括以下4款: 1.Selenium Core:支持DHTML的测试案例(效果类似数据驱动测试),它是Selenium IDE和Selenium RC的引擎。 2....

    Selenium介绍及原理解析.docx

    Selenium是ThoughtWorks公司的一个强大的开源Web功能测试工具系列,采用Javascript来管理整个测试过程,包括读入测试套 件、执行测试和记录测试结果。它采用Javascript单元测试工具JSUnit为核心,模拟真实用户操作,...

    Selenium_(安装使用).ppt

    Selenium 是ThroughtWorks 公司一个强大的开源Web 功能测试工具系列

    Selenium_(安装使用)

    介绍selenium的安装使用 Selenium 是ThroughtWorks 公司一个强大的开源Web 功能测试工具系列,

    自动化测试——主流测试工具与总结

    Selenium是开源的Web自动测试工具,免费,主要做功能测试 JMeter 开源 JMeter是由Apache公司使用Java平台开发的一款测试工具,开源,支持Web、接口、性能测试,但是Web测试在通信层(无UI界面) ...

    selenium安装教程.ppt

    Selenium 是ThroughtWorks 公司一个强大的开源Web 功能测试工具系列,

    Qtp自动测试工具(案例学习)

    本文来自于思维焦点博客,本文主要通过案例学习...Selenium是开源的web自动测试工具,免费,主要做功能测试。QTP是商业的功能测试工具,收费,支持web,桌面自动化测试。测试网站地址:本文参考自:软件下载:链接:密

    使用Sahi实现Web自动化测试

    Sahi是TytoSoftware旗下的一个基于业务的开源Web应用自动化测试工具。Sahi运行为一个代理服务器,并通过注入JavaScript来访问Web页面中的元素。Sahi支持HTTPS并且独立于Web站点,简单小巧却功能强大。它相对于...

    Selenium原理探秘

    Selenium是ThoughtWorks公司研发的一个强大的基于浏览器的开源自动化测试工具,它通常用来编写web应用的自动化测试。早期也即Selenium1.x时期主要使用SeleniumRC(SeleniumRemoteControl)进来自动化测试。Selenium2...

    XSS-Scanner:基于 Selenium Web Driver 的强大 XSS 扫描器-开源

    这个应用程序是完全免费的 XSS 扫描器,基于 Selenium Web 驱动程序。 它直接在您的浏览器中进行扫描。 您所需要的只是带有 FireFoxDriver 的 FireFox(通常它是内置的)。 在这里你可以找到一个自给自足的源代码,...

    python+selenium实现自动抢票功能实例代码

    Selenium是ThoughtWorks公司的一个强大的开源Web功能测试工具系列,采用Javascript来管理整个测试过程,包括读入测试套件、执行测试和记录测试结果。这篇文章主要介绍了python+selenium实现自动抢票,需要的朋友可以...

    java抢红包源码-Selenium:Selenium

    空手道是唯一的开源工具,API测试自动化相结合,并集成到一个统一的框架。 由 Cucumber 推广的 BDD 语法是语言中立的,即使是非程序员也很容易。 除了强大的 JSON 和 XML 断言之外,您还可以并行运行测试以提高速度...

    在Mac OS上搭建PHP的Yii框架及相关测试环境

    selenium是个著名的自动化测试工具,可以调起本地的浏览器来完成测试,所以可以用来自动化测试web项目。selenium分为服务端和客户端,服务端使用java开发,所以需要一个jdk,服务端在启动时,会启动一个http服务,...

    jeta:适用于所有人的Java Easy Test Automation解决方案

    我们利用功能强大的开源库和工具来构建自动化测试框架,该框架即使对于Java世界中的新手也易于设置和维护。 我们使用的目前支持对Chrome , Opera , Internet Explorer , Microsoft Edge , PhantomJS和Firefox...

    matlab学生管理系统代码-MyResume:文件夹

    亲身体验测试工具 - Selenium Webdriver 和测试框架 TestNG。 • Android Studio 中的实践经验。 • 测试工具Squish 和Katalon 的基本知识。 • Windows XP、MS Word、MS PowerPoint、MS Excel。 • Mipower、...

Global site tag (gtag.js) - Google Analytics