51Testing软件测试论坛

标题: 强大的Web开源测试工具—Selenium [打印本页]

作者: fishy    时间: 2008-3-13 11:05
标题: 强大的Web开源测试工具—Selenium
介绍
Selenium ThoughtWorks 专门为 Web 应用而开发的自动化测试工具,适合进行功能测试、验收测试,其最大的优势有几点:
但是Selenium是轻量的测试框架,
脚本所处理的测试用例构成简单,其实质就是通过HTTP协议,发送请求(request)来完成测试用例,所以很困难处理业务逻辑关系强的测试用例。
更多的讨论: http://forums.openqa.org/index.jspa
Selenium 命令
Selenium 命令分成两类 —— 操作(action)断言(assertion)
在 Selenium 网站上可以找到可用命令的完整列表。通过 Selenium 命令,脚本编写者可以描述 browser bot 在浏览器中所执行的操作
组成支持的平台
部署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 中:
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 脚本编写和部署更复杂些,它必须执行以下任务:
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
就是四个测试用例的例子,将执行以下操作:
清单 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服务、模块、功能来组织,形成层次性结构。
作者: sihanjishu    时间: 2008-3-13 19:01
不错,又加入了一个selenium的成员。
作者: neolin2003    时间: 2008-7-9 08:43
标题: 回复 1# 的帖子
selenium我一直在用,这个软件最大的两 个问题 是对https和ie的支持力度。国内网上你一搜selenium,总是那几个人,而且永远不变的是简单应用,要么就是xpath,要么就是selenium的语法。说实话都是入门指导,真正关键问题没抛出来。
其实抛出来也没办法,我给这家公司论坛上写了贴子,到现在也没回。所以我正在考虑自己写一个工具。目前正在构思中。
哪位有机会不妨研究一下selenium如何在mac os上通过safari 访问https的问题。看看国内多少人能给正解。
作者: sihanjishu    时间: 2008-8-4 09:50
标题: 回复 3# 的帖子
问题挺多的。
他们的这种通过代理服务的机制,和普通的模拟用户操作(发送消息)上有些不同。
不过也会有很多独到的功能。不过是不太成熟。学习一下可以。
用来做项目,就有点不太划算了。有风险。遇到问题,难以解决。
作者: mickey-311    时间: 2009-1-3 17:23
标题: 回复 3# 的帖子
同意你的观点,现在网上大部分都是入门,入门之后怎么办怎么解实在是找不到呢,偶自己在努力,争取把后续贴上来大家讨论。
目前正在用java结合selenium ide做一个项目
作者: yuandjing    时间: 2009-1-4 12:12
原帖由 sihanjishu 于 2008-8-4 09:50 发表
问题挺多的。
他们的这种通过代理服务的机制,和普通的模拟用户操作(发送消息)上有些不同。
不过也会有很多独到的功能。不过是不太成熟。学习一下可以。
用来做项目,就有点不太划算了。有风险。遇到问题,难以 ...

偶不是很赞同
Selenium可以认为是一个初级/中级的测试工具,用来做web功能性测试
而QTP/Silk之类的可以认为是比较高级的工具
Selenium简单易用,偏重点不一样,主要要搭建起selenium的测试框架,使测试团队一起使用,功能相当强劲;而且支持主流操作系统主流浏览器,能用非常多不同的语言调用
个人认为Selenium目前的不足是在验证点方面还不是很强,比起QTP具有的图片文本识别,Robot具有的内存识别还有点欠缺
作者: miaoqinjie    时间: 2011-7-20 13:31
junit 脚本开发环境的搭建有点不成功,不知道eclipse选择哪种?下载后用不了,请教同学指点下




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2