selenium笔记Word格式.docx
- 文档编号:21160168
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:11
- 大小:89.12KB
selenium笔记Word格式.docx
《selenium笔记Word格式.docx》由会员分享,可在线阅读,更多相关《selenium笔记Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
如果系统受损,没有构建成功,ApacheContinuum和Luntbuild之类的持续集成工具可以自动通过发送电子邮件通知团队。
Ajax
Ajax是AsynchronousJavaScriptandXML的缩写,这是为相当老的技术新创造的一个术语。
Ajax背后的主要思想是,由于只需更新部分页面而不是整个页面,所以Web应用程序可以更快地对用户操作做出响应。
Ajax将更多的复杂性引入到Web应用程序中,这一点也反映在测试中。
这是因为Ajax就像它的名称所表明的那样,使用JavaScript和异步HTTP请求来更新页面内容。
每个浏览器在实现中与其他浏览器相比有一些小小的不同。
Selenium是测试和检测这些差异的很好的工具,因为它在大多数流行的浏览器中都能够运行。
Ruby/RubyonRails
Ruby是一种开放源码的解释型脚本语言,用于快捷、容易地进行面向对象程序设计。
它提供了大量的库,而且简单易用,还具有可扩展性和可移植性。
该语言是由Yukihiro“Matz”Matsumoto创造的,目的是让程序员将更多的注意力放在手头的任务上,摆脱语法的烦恼。
Rails是由DavidHeinemeierHansson创造的一种全栈的(full-stack)、开放源码的RubyWeb框架。
Rails的目标是使现实中的应用程序编写起来需要的代码更少,并且比J2EE和XML之类的语言更容易。
所有层都能够无缝地一起工作,因此可以使用一种语言编写从模板到控制流乃至业务逻辑的各种东西。
Rails使用YAML而不是XML配置文件以及注释形式的反射和运行时扩展。
这里不存在编译阶段——程序修改后将直接运行。
什么是Selenium?
Selenium是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。
据Selenium主页所说,与其他测试工具相比,使用Selenium的最大好处是:
Selenium测试直接在浏览器中运行,就像真实用户所做的一样。
Selenium测试可以在Windows、Linux和MacintoshAnd上的InternetExplorer、Mozilla和Firefox中运行。
其他测试工具都不能覆盖如此多的平台。
使用Selenium和在浏览器中运行测试还有很多其他好处。
下面是主要的两大好处:
∙通过编写模仿用户操作的Selenium测试脚本,可以从终端用户的角度来测试应用程序。
∙通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性。
Selenium的核心,也称browserbot,是用JavaScript编写的。
这使得测试脚本可以在受支持的浏览器中运行。
browserbot负责执行从测试脚本接收到的命令,测试脚本要么是用HTML的表布局编写的,要么是使用一种受支持的编程语言编写的。
Selenium适用于以下浏览器:
InternetExplorer
Mozilla
Firefox
Safari
WindowsXP
6.0
1.6+,1.7+
0.8+,0.9+,1.0
RedHatLinux
0.8+,0.9+,1.0+
MacOSX10.3
不支持
1.3+
回页首
Selenium命令
通过Selenium命令,脚本编写者可以描述browserbot在浏览器中所执行的操作。
可以将这些命令分成两类——操作(action)和断言(assertion):
∙操作模拟用户与Web应用程序的交互。
例如,单击一个按钮和填写一个表单,这些都是常见的用户操作,可以用Selenium命令来自动化这些操作。
∙断言验证一个命令的预期结果。
常见的断言包括验证页面内容或当前位置是否正确。
在Selenium网站上可以找到可用命令的完整列表(见参考资料)。
Selenium模式
可以按两种模式来使用Selenium:
testrunner和driven。
这两种模式在复杂性和编写方式方面有所不同。
driven测试脚本编写起来往往要更复杂一些,因为它们是用编程语言编写的。
但是如果使用Python或Ruby之类的高级动态编程语言,那么这种复杂性方面的差异就很小。
两种模式之间最大的不同点在于,如果使用driven脚本,测试有一部分在浏览器之外运行,而如果使用testrunner脚本的话,测试是完全在浏览器中运行的。
不管是testrunner还是driven测试用例,都可以与持续集成工具集成。
testrunner模式
Seleniumtestrunner脚本,也称测试用例(testcase),是用HTML语言通过一个简单的表布局编写的,如清单1所示。
清单1.Selenium测试用例的结构
<
tableborder="
1"
>
tr>
td>
Firstcommand<
/td>
Target<
Value<
/tr>
Secondcommand<
/table>
testrunner脚本通常与所测试的应用程序(AUT)部署在同一个服务器上。
这是因为browserbot使用JavaScript来模拟用户操作。
这些脚本在一个受限制的沙箱环境中运行。
如果需要绕过这些限制,可以使用一个代理。
testrunner脚本使用与xUnit框架相同的测试套件(testsuite)和测试用例概念。
测试用例和命令按照它们在测试套件和测试用例中出现的顺序依次执行。
在清单1中:
∙第一列包含命令或断言。
∙第二列包含命令或断言的目标(target)。
这里可以用多种受支持的组件定位符中的一种来指定目标。
通常使用的是组件的ID或名称,但XPath和DOM定位符也是受支持的。
∙第三列包含用于为命令或断言指定参数的值。
例如,当使用type命令时,这一列可能就是一个文本域所期望的值。
即使对于非技术人员来说,testrunner脚本也易于阅读和编写。
当在一个浏览器中打开清单1中的例子时,将得到类似这样的一个表:
Firstcommand
Target
Value
Secondcommand
接下来,我将描述如何使用命令和断言编写一个简单但是完整的测试用例。
测试用例实例
执行清单2中的测试脚本时,它将执行以下操作:
1.通过进入/change_address_form.html打开变更地址页面。
2.在ID为address_field的文本框中输入Betelgeusestateprison。
3.单击名为Submit的输入区。
注意,这里使用XPath找到Submit按钮,这导致表单数据被发送到服务器。
4.验证页面是否包含文本Addresschangesuccessful。
清单2.在测试用例中使用命令和断言的例子
table>
open<
/change_address_form.html<
type<
address_field<
Betelgeusestateprison<
clickAndWait<
//input[@name='
Submit'
]<
verifyTextPresent<
Addresschangesuccessful<
测试套件
要达到对应用程序的完全测试覆盖,通常需要不止一个测试用例。
这就是Selenium使用测试套件的原因。
测试套件用于将具有类似功能的一些测试用例编成一组,以便让它们按顺序运行。
测试套件和测试用例一样,都是用简单的HTML表编写的。
Selenium执行的缺省测试套件的名称是TestSuite.html。
清单3展示了一个测试套件,该套件像通常的用户一样测试应用程序。
注意,测试套件使用一个只包含一列的表,表中的每一行指向一个包含某个测试用例的文件。
清单3.测试套件示例
Testsuiteforthewholeapplication<
ahref="
test_main_page.html"
Accessmainpage<
/a>
test_login.html"
Logintoapplication<
test_address_change.html"
Changeaddress<
test_logout.html"
Logoutfromapplication<
接下来我将把目光转移到driven测试脚本。
driven模式
drivenSelenium脚本是用多种受支持的编程语言中的一种编写的——目前可用的有Java、Ruby和Python驱动程序。
这些脚本在浏览器之外的一个单独的进程中运行。
驱动程序的任务是执行测试脚本,并通过与运行在浏览器中的browserbot进行通信来驱动浏览器。
驱动程序与browserbot之间的通信使用一种简单的特定于Selenium的连接语言Selenese。
driven脚本比testrunner脚本更强大、更灵活,可以将它们与xUnit框架集成。
driven脚本的缺点(与testrunner脚本相比)是,这种脚本编写和部署起来更复杂。
这是因为驱动程序必须执行以下任务:
∙启动服务器。
∙部署所测试的应用程序(AUT)。
∙部署测试脚本。
∙启动浏览器。
∙发送命令到browserbot。
∙验证browserbot执行的命令的结果。
driven脚本更依赖于应用程序运行时环境。
例如,Java驱动程序使用一个嵌入式Jetty或Tomcat实例来部署所测试的应用程序。
目前,已经有人在致力于将Selenium集成到RubyonRails中,但是在我撰写本文之际,这个集成版本还没有被发布。
清单4摘自一个使用Ruby驱动程序的driven测试脚本。
注意,我省略了用于启动服务器和浏览器的步骤,这个测试脚本代码几乎和testrunner脚本一样简单。
清单4.使用Ruby驱动程序的例子
.
putsselenium.open('
/logout.html'
)
putsselenium.verify_location('
/index.html'
现实中的需求
在接下来的两节(现实中的需求和现实中的用例)中,我将描述如何在现实场景中使用Selenium,并针对用RubyonRails和一点儿Ajax技术编写的一个简单的股票报价查看器应用程序编写Selenium测试用例。
虽然这个应用程序是用RubyonRails编写的,但是也可以将这个例子应用于任何Web应用程序,因为测试脚本是按testrunner模式以HTML编写的。
这个示例应用程序是用Ruby1.8.3和RubyonRails0.14.2测试的,但是它也可能可以使用更旧的或更新的版本。
如果有Linux,那么发行版中通常已经包括了Ruby。
在命令提示符下运行ruby-v,检查您所拥有的版本。
对于大多数平台,都可以在http:
//www.ruby-lang.org/上找到一个Ruby发行版。
接下来的步骤是通过RubyGems打包系统安装RubyonRails。
为此,只需执行geminstallrails--include-dependencies。
在某些平台上,必须执行一些额外的步骤,所以请访问RubyonRails网站,以获得更多细节。
在我撰写本文之际,目前可用的Selenium版本是0.6。
我已经将它集成在示例应用程序中(见下载小节),我的做法是从下载SeleniumCore包,然后将名为selenium的文件夹复制到用于静态内容的文件夹。
在RubyonRails应用程序中,这个文件夹的名称是public。
在J2EEWeb应用程序中,可以将selenium文件夹放在Web应用程序的根目录或WAR归档文件中。
最后一步是下载示例应用程序。
从下载小节中获得这个包。
解压应用程序,并打开一个命令提示符。
然后转入应用程序被解压到的那个目录。
为了启动应用程序,运行rubyscript/server。
应该看到Rails成功启动了,如图1所示。
图1.从命令提示符下运行RubyonRails
现实中的用例
在本节中,我将列出示例应用程序的用例。
通过这些简化的用例,可以编写模拟用户所执行步骤的验收测试,并验证这些步骤的结果是否与预期相符。
股票报价应用程序实现了以下四个用例:
∙登录
∙查看股票
∙查看股票细节
∙退出
实现这些用例的代码已经编写好了;
可以在app目录中找到该代码,测试用例在public/selenium/tests文件夹中。
登录用例
大多数人都知道登录页面是如何工作的——输入用户名和密码,然后将数据提交到服务器。
如果凭证有效,就可以成功登录,并看到受安全保护的资源。
在示例应用程序中,这个测试用例包含以下用户操作和断言,必须将它转换成一个Selenium测试用例:
1.单击登录链接。
2.验证系统是否要求用户进行登录。
3.输入用户名。
4.输入密码。
5.按下登录按钮。
6.验证是否登录成功。
图2展示了用于这些需求的Selenium测试用例。
注意,我是在运行测试之后截取屏幕快照的。
绿色箭头表示成功地通过验证的断言。
图2.登录和查看股票测试用例
查看股票测试用例
查看股票页面显示一个公司列表。
用于这个页面的测试用例非常简单,所以被包括在前一个测试用例的后面。
该测试用例验证当前位置是否为/main/list_stocks,以及页面是否包含文本Clickonacompanynametoviewdetails。
查看股票细节用例
查看股票细节用例是在查看股票页面上触发的。
用户在一个公司名称上单击鼠标时,就触发了到服务器的一个Ajax请求。
服务器的响应包括该公司的详细信息,这些信息将插入到当前页面中,而不必重新装载完整的页面。
用于这个用例的测试用例执行以下用户操作:
1.单击公司名称AcmeOil。
2.验证页面上是否显示该公司的详细信息。
3.单击公司名称AcmeAutomotive。
4.验证页面上是否显示该公司的详细信息。
由于使用了Ajax,请求是异步发生的。
在一般的Web应用程序中,所有东西通常都是同步的,因此这一点提出了一种不同的挑战。
可以像测试其他功能一样来测试Ajax功能。
惟一的不同是,必须让Selenium暂停,等待Ajax命令完成。
为此,可以使用pause命令来等待Ajax命令的完成。
另外,JosephMoore在他最近的blog贴中提到,还可以使用waitForValue和waitForCondition命令代替pause命令(见参考资料)。
图3展示了被转换成Selenium用例的需求。
图3.查看股票细节测试用例
注意pause命令:
必须使用这些命令,以便等待异步请求完成和更新页面内容。
如果没有500毫秒的暂停,测试将失败(如图4所示)。
图4.失败的查看股票细节测试用例
pause命令还测试Ajax功能的非功能性需求。
500毫秒对于pause命令是一个很好的值,因为Ajax请求应该快速地执行和完成。
可以试着去掉pause命令,看看结果如何。
如果测试在您的机器上失败,那么试着将这个值增加到1000毫秒。
退出用例
退出用例很容易实现,简单来说只有以下两步:
1.单击退出链接。
2.验证是否成功退出。
图5展示了最后这个测试用例。
图5.退出用例
所有测试都被添加到图6左侧显示的缺省测试套件中。
图6.示例应用程序的测试套件
执行测试套件
最后要做的是在MozillaFirefox和MicrosoftInternetExplorer中执行测试套件。
为此,在浏览器中打开http:
//localhost:
3000/selenium/TestRunner.html,然后单击图6中所示的All按钮。
失败的测试用例和断言将被标记为红色,但是这里,在两个浏览器中所有用例都应该可以成功完成(同样见图6)。
注意,我使用的是MozillaFirefox1.0.7和InternetExplorer6.0。
还可以单步调试测试套件,这意味着Selenium将很慢地执行测试套件,这样当测试套件在浏览器中执行时,就可以看到它的每一步。
结束语
Selenium是软件工程师、设计人员和测试人员的工具箱中又一个有用且重要的工具。
通过将该工具与持续集成工具相结合,团队就可以将验收测试自动化,并构建更好的软件,因为他们可以更容易、更早、更频繁地发现bug。
Selenium的另一个优点是可以节省时间,使开发人员和测试人员不必将时间花在本可以(也应该)自动化的手工任务上,从而让团队将精力放在更有价值的活动上。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- selenium 笔记