`
white182517
  • 浏览: 162802 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Selenium进行验收测试

    博客分类:
  • java
阅读更多

概述

        我们公司是没有正规的测试人员的,对一个模块而言,功能是否完成都是由开发人员手工测试。项目后期经常发生这样的情况,开发人员更改一个BUG,自已测试表示通过,但是发到客户那却发现,BUG是改好了,以前正常工作的功能却不能工作了。对一个模块来讲,更改一个部分的代码,可能会造成连锁反应,如果要保证不会造成其他功能不受影响,必须进行全面的测试,这在项目后期,频繁更改BUG时,肯定是不现实的。 鉴于这种状况,考虑将Selenium引入到项目中。

        Selenium是ThoughtWorks公司开发的一套基于WEB应用的验收测试工具,直接运行在浏览器中,模拟客户操作。

        Selenium抽象出一系列命令来模块用户操作,比如open命令表示打开一个URL,click命令表示点击某个按钮。Selenium实际上将这些命令转化成实际的HTTP请求在浏览器中运行。

        具体支持哪些命令可以参见SpringSide的翻译

Selenium IDE

       Selenium IDE是基于FIREFOX浏览器的一个插件,提供GUI界面来运行Selenium测试。Selenium IDE提供脚本录制功能,可以将用户在浏览器中执行的操作记录下来,生成各种形式的脚本,可以将这些脚本保存供以后使用。

       安装Selenium IDE的步骤如下:

  • www.openqa.org/selenium-ide/download.action下载Selenimu IDE(这是一个XPI后缀的文件)。
  • 启动FIREFOX浏览器,打开刚才下载的文件。
  • 重启FIREFOX浏览器,在工具菜条下应该就可以看到Selenium IDE菜单项

Selenium RC

        Selenium Remote Control是一个测试工具,允许使用任何语言编写自动化的WEB UI测试用例。这个工具提供一个Selenium Server可以启动,停止和控制任何浏览器,这个服务器使用AJAX直接和浏览器进行交互,可以使用HTTP GET/POST请求向Selenium Server发送命令。这意味着可以使用任何编程语言向Selenium Server发送HTTP请求来自动化Selenium测试。为了简化这个过程Selenium提供各主流语言的包装对象,对于JAVA来说,是DefaultSelenium类。

       虽然Selenium提供简单的基于HTML TABLE的方式编写测试,考虑到开发人员对JAVA代码更熟悉一些,而且通过代码编写的测试,很容易通过ANT脚本和单元测试一起自动运行。下面的过程讲述如何使用JAVA编写Selenium测试。

下载

       从www.openqa.org/selenium-rc/download.action下载Selenium RC相关文件,假定解压缩后的目录为HOME

启动服务器

       Selenium Server是用JAVA实现的,相应的库文件在HOME/server/selenium-server.jar。运行如下代码从命令行启动:

java 代码
  1. java -jar selunium-server.jar  

       命令行中也可以提供一些选项设置,具体的选项设置参见www.openqa.org/selenium-rc/options.html。如果要进行自动化测试,可以在ANT脚本中启动。

编写测试用例

       要编写Selenium测试用例,首先必须交HOME/java/selenium-java-client-driver.jar文件加载到类路径中。然后编写一个JUNIT的单元测试,要构建一个Selenium,包括如下步骤:

  • 构建一个Selenium实例
  • 启动Selenium实例
  • 执行Selenium命令,并验证结果。要执行一个命令是通过调用Selenium实例的方法来完成的,具体有哪些命令可以参见JAVADOC
  • 关闭Selenium实例

       如下是一个示例,用来测试www.google.com,查找selenium,期望结果中包含"OpenQA: Selenium"。

java 代码
  1. package com.thoughtworks.selenium;   
  2.   
  3. import junit.framework.*;   
  4.   
  5. import org.openqa.selenium.server.*;   
  6.   
  7. public class GoogleTest extends TestCase   
  8. {   
  9.    private Selenium selenium;   
  10.   
  11.    public void setUp() throws Exception {   
  12.         String url = "http://www.google.com";   
  13.        selenium = new DefaultSelenium("localhost", SeleniumServer.getDefaultPort(), "*firefox", url);   
  14.        selenium.start();   
  15.     }   
  16.       
  17.    protected void tearDown() throws Exception {   
  18.        selenium.stop();   
  19.    }   
  20.       
  21.    public void testGoogleTestSearch() throws Throwable {   
  22.         selenium.open("/intl/zh-CN/");   
  23.         selenium.type("q""selenium");   
  24.         selenium.click("btnG");   
  25.         selenium.waitForPageToLoad("30000");   
  26.         assertTrue(selenium.isTextPresent("OpenQA: Selenium"));   
  27.         checkForVerificationErrors();   
  28.     }   
  29.        
  30. }   

 

参考资料

       花钱的年华的博客

       IBM中国文章

结语

          此篇文章只是简单的记录了个人在研究Selenium的一个QuickStart的过程,供自己和同事以后参考。如果明白了Selenium的使用机制,具体的使用是非常简单的,当然要达到自动化测试的目的,必须要求在ANT构建脚本中启动Selenium服务器,这在花钱的年华的博客中有描述,SpringSide就是一个很好的借鉴。

         

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论
17 楼 xiao_ke89 2007-04-02  
我启动了java -jar selenium-server.jar但是提示端口被占用,我又试着用java -Dhttp.proxyPort=1234 -jar selenium-server.jar启动,仍然提示端口被占用.请问这个问题应该如何解决呢????
Exception in thread "main" org.mortbay.util.MultiException[java.net.BindException: Address already in use: JVM_Bind]
        at org.mortbay.http.HttpServer.doStart(HttpServer.java:686)
        at org.mortbay.util.Container.start(Container.java:72)
        at org.openqa.selenium.server.SeleniumServer.start(SeleniumServer.java:629)
        at org.openqa.selenium.server.SeleniumServer.main(SeleniumServer.java:306)
java.net.BindException: Address already in use: JVM_Bind
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
        at java.net.ServerSocket.bind(ServerSocket.java:319)
16 楼 xiao_ke89 2007-04-02  
我启动了java -jar selenium-server.jar但是提示端口被占用,我又试着用java -Dhttp.proxyPort=1234 -jar selenium-server.jar启动,仍然提示端口被占用.请问这个问题应该如何解决呢????
Exception in thread "main" org.mortbay.util.MultiException[java.net.BindException: Address already in use: JVM_Bind]
        at org.mortbay.http.HttpServer.doStart(HttpServer.java:686)
        at org.mortbay.util.Container.start(Container.java:72)
        at org.openqa.selenium.server.SeleniumServer.start(SeleniumServer.java:629)
        at org.openqa.selenium.server.SeleniumServer.main(SeleniumServer.java:306)
java.net.BindException: Address already in use: JVM_Bind
        at java.net.PlainSocketImpl.socketBind(Native Method)
        at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
        at java.net.ServerSocket.bind(ServerSocket.java:319)
15 楼 温柔一刀 2007-02-15  
知道问题所在了
页面用了frame框架
导致无论在哪个页面点击链接
getHtmlSource()
只能得到主框架的内容

所以页面用了frame框架
selenium 测试就不好做了
只能open真实地址才能达到测试效果
但是就不能模拟用户点击了
14 楼 温柔一刀 2007-02-13  
我点击一般的连接,比如:
user.click("link=个人信息");

怎么死活提示:

com.thoughtworks.selenium.SeleniumException: ERROR: Element link=个人信息 not found

这个连接页面上也确实存在

有人遇到过么?
13 楼 yangzx554 2007-02-06  
selenium  中相关的testcase的统计,目前在一家网站,页面的修改可能还是比较多的,会有一些testcase不能通过
12 楼 温柔一刀 2007-02-06  
http://wiki.javascud.org/display/springs/SeleniumRefrence

cac翻译的selenium参考手册
11 楼 white182517 2006-12-11  
不好意思,打错了命令,正确的命令应该是:
java -jar selenium-server.jar


这篇文章只是一个QuickStart,个人以为对入门来讲,一个QuickStart可以很快地让人很快的体验一个新东西,我的初衷是可以让后来者少做一些无用功。至于详细的内容,文章中有相应的链接,如果要深入了解,就得自己下功夫了。

下面的链接有一些关于Selenium的中文翻译,有很多不错的资源

http://wiki.javascud.org/display/SEL/Home

10 楼 taowen 2006-12-10  
java -jar seleunium-server.jar
少打了一个e吧。
9 楼 kimfly 2006-12-10  
java -jar selunium-server.jar   启动不了啊,能给个更详细的文档吗
8 楼 kimfly 2006-12-10  
楼主能不能写篇更详细的文章啊。
7 楼 kimfly 2006-12-10  
楼主能不能写篇更详细的文章啊。
6 楼 billgui 2006-12-06  
也可以看一下WATIR和WET,是Ruby写Web测试的库。
5 楼 Tin 2006-12-05  
http://wiki.javascud.org/display/SEL/Home<br/>
<br/>
欢迎参与中文化工作。<img src='/javascripts/fckeditor/editor/images/smiley/msn/wink_smile.gif' alt=''/><br/>
这两天工作忙疏于维护,希望大家一起参与,推广Selenium应用。
4 楼 white182517 2006-12-05  
引用
只是支持firefox吗?


Selenium是支持IE,FIREFOX等浏览器的,Selenium IDE是一个基于GUI的Selenium工具,这个工具是基于Firefox的插件实现。

我对Selenium的理解是,Selenium由三个关键部分组成:
[list=]一套接口,定义用户针对页面的操作,比如open表示打开一个页面的操作。
基于多种语言的接口实现,比如JAVA中使用DefaultSenium类来实现这些接口,针对open操作就有一个open方法实现。
一个核心引擎,这是通过Seleniu Server来实现的,主要职责是解析具体语言实现的操作,发出实际的请求。[/list]
3 楼 gigix 2006-12-05  
yangxp_82 写道
只是支持firefox吗?

引用
Selenium is a test tool for web applications. Selenium tests run directly in a browser, just as real users do. And they run in Internet Explorer, Mozilla and Firefox on Windows, Linux, and Macintosh.

http://openqa.org/selenium/
2 楼 lighter 2006-12-04  
文章写得不错,太简短了一些.
看一下springside的翻译更好.
1 楼 fantasy 2006-12-04  
正准备用这个框架,很有效的解决了功能测试的问题!

相关推荐

    [公开]Selenium自动化验收测试工具.pdf

    ### Selenium自动化测试工具...- **最佳实践**:研究如何有效地使用Selenium进行自动化测试的最佳实践和技术建议。 通过上述知识点的学习和理解,可以帮助测试工程师更高效地利用Selenium进行Web应用的自动化测试。

    全面性的验收测试指导

    在进行验收测试时,我们还会使用到一些工具,如自动化测试工具(如Selenium、JMeter)来提高效率,版本控制系统(如Git)用于管理测试用例和文档,缺陷追踪系统(如JIRA)用于管理问题。 对于"验收测试指导.ppt"这...

    Selenium详细使用手册

    Selenium的基本功能可以涵盖整个Web应用生命周期中的自动化测试,从单元测试到集成测试,再到系统测试,直至验收测试。 使用Selenium,测试工程师能够自动执行Web应用的各种任务,比如填写表单、点击链接、切换窗口...

    基于开源Selenium的web项目测试

    - **验收测试**:最终用户的测试,验证软件是否满足实际需求。 **1.4 软件测试的原则** - **尽早开始测试**:在软件开发的早期阶段就开始测试。 - **全面覆盖**:尽可能地覆盖所有可能的输入组合。 - **独立测试**...

    FitNesse-Selenium-FrameWork:它是一个集成了Selenium的验收测试工具

    FitNesse-Selenium-FrameWork 是一个用于自动化验收测试的框架,它巧妙地结合了FitNesse测试套件和Selenium WebDriver的能力。这个框架的主要目标是简化Web应用程序的端到端测试过程,确保代码的质量和功能符合预期...

    使用_Selenium_和_TestNG_进行编程式测试1

    【验收测试】是Selenium的主要应用场景之一。验收测试旨在确保系统的功能满足最终用户的需求。Selenium能够模拟真实的用户行为,因此非常适合这类测试。在这种测试中,通常需要启动整个应用程序环境,包括数据库、...

    基于Selenium+Python的高校统一身份认证自动化验收测试技术研究.pdf

    针对这些问题,本研究提出了一种基于Selenium+Python的自动化验收测试技术,以西安交通大学的统一身份认证系统的登录功能为例,进行自动化功能测试。这项技术实现了以下功能: 1. 自动化登录多类型账户:利用Python...

    基于Selenium+Python的高校统一身份认证自动化验收测试技术研究.zip

    本技术研究主要探讨了如何利用Selenium结合Python来实现这类系统的自动化验收测试,从而提高测试效率,减少人为错误,保障系统的稳定性和可靠性。 Selenium是一款强大的Web自动化测试工具,它支持多种编程语言,如...

    敏捷开发的必要技巧11:对UI进行验收测试.doc

    UI验收测试通常采用自动化工具进行,如Selenium、Appium或Cypress等。这些工具能够模拟用户行为,对UI进行详尽的检查,从而减少手动测试的工作量和错误。在敏捷环境中,自动化测试可以快速执行,适应频繁的代码变更...

    软件项目验收测试流程.rar

    常见的验收测试工具有TestComplete、Selenium、LoadRunner等,它们可以帮助自动化测试,提高测试效率和准确性。 七、注意事项 1. 在进行验收测试前,确保已完成系统测试和集成测试。 2. 保持良好的沟通,确保测试...

    Selenium 中文API

    Selenium 可以作为验收测试的工具,因为它能准确地模拟用户行为,并对结果进行验证。创建验收测试用例时,应覆盖主要的功能流程和边界条件,确保测试的全面性。 1. **测试框架集成**: 常见的Python测试框架如...

    selenium 3.11

    Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。 压缩包中包含如下文件: selenium-java-3.11.0.zip selenium-server-3.11.0.zip selenium-server-standalone-3.11.0.jar selenium-...

    自动测试工具selenium

    Selenium 是一款强大的自动化测试工具,特别适用于Web应用程序的验收测试。它由ThoughtWorks公司开发,使得测试可以直接在浏览器环境中运行,模拟真实用户的操作。Selenium 支持多种浏览器,如IE、Mozilla和Firefox...

    selenium-3.141.zip

    Selenium 也是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Fire...Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。

Global site tag (gtag.js) - Google Analytics