花钱的年华

--今天开始成为主站

用户操作
[即时聊天] [发私信] [加为好友]
江南白衣ID:calvinxiu
707590次访问,排名53,好友0人,关注者54人。
calvinxiu的文章
原创 161 篇
翻译 0 篇
转载 0 篇
评论 677 篇
江南白衣的公告

肖桦,江南白衣,
开源项目SpringSide
春天的旁边
发起者

最近评论
liseo1:
网络营销策划 网络公关 品牌管理 搜索引擎公关 搜索引擎排名 网站优化 软文发布 QQ:441843869
工业门
afd:adgfdahfdah
dsfahgfgjhkj
jfrjunbcbxzx,mbbu
afd:adgfdahfdah
dsfahgfgjhkj
jfrjunbcbxzx,mbbu
afd:adgfdahfdah
dsfahgfgjhkj
jfrjunbcbxzx,mbbu
afd:adgfdahfdah
dsfahgfgjhkj
jfrjunbcbxzx,mbbu
文章分类
    收藏
      相册
      Blog用图
      Friends
      @_@
      Anders小明
      buaawhl
      cac
      canonical
      cctvx1
      david.turing
      femto
      g9
      JohnsonQu
      Michael Chen
      Raimundox
      robbin
      SimonLei
      totodo
      wuyu
      周爱民
      孟岩
      差沙
      庄表伟
      落魄的程序员
      透明
      郁也风
      铁手
      银狐999
      飞云小侠
      存档
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 Selenium--透明反复推介的集成测试工具(Pragmatic系列)收藏

      新一篇: 给编程狂热者的ant task笔记 | 旧一篇: Apress新书迎接JDK 6.0(1)--总述及XML的新标准

         作者:江南白衣  

         国内大部分公司还依靠QA组的MM看着测试用例文档来手工测试,如果钱人有限,又想改变现状,最实在的建议是先编写直接访问数据库的商业层UnitTest和基于Selenium的集成测试这两种实用性最高的测试。

         在徐昊指导下,SpringSide2.0 已经全面应用Selenium。

         Selenium 能被选为最好集成测试、回归测试方案,是因为:

         1.Selenium IDE ,一个FireFox plugin,能自动记录用户的操作,生成测试脚本

         2. 生成的测试脚本可以用Selenium Core手工执行,也能基于Selenium RC放入Java,C#,Ruby的单元测试用例中自动运行

         3. 测试用例调用实际的浏览器(如IE、FireFox)来执行测试。和有些开源方案自行实现Web解释引擎相比,实际的浏览器能模拟更多用户交互和JS语法,顺便还可以测试各浏览器兼容性。

         4. 测试脚本语法非常简单,见后。
        

      1. 使用Selenium IDE生成脚本

             Selenium IDE 是一个Firefox1.5插件,下载后用Firefox将其打开。

             工具->Selenium IDE,点击红色的recorder按钮开始录制,在网站中乱点时可以即时看到每个动作的脚本。

             切换Format:显示 HTML,Java,C#,Ruby 语法的脚本。 option里还可以设定Java里Selenium变量的名称,如user。

      2.测试用例与测试脚本

         测试用例在Selenium IDE生成->Copy Paste的流程下非常的容易。

      public class UserManagerTest extends TestCase
      {
          
      private Selenium user;

          
      public void setUp() throws Exception {
             user
      = new DefaultSelenium("localhost", SeleniumServer.DEFAULT_PORT, "*iexplore""http://localhost:8080");
             user.start();
      }
      protected void tearDown() throws Exception {
              user.stop();
      }

      public void testUserEdit() {
          user.open(
      "/helloworld");
          user.click(
      "//a\[contains(@href, 'user.do?id=0')\]");
          user.waitForPageToLoad(
      "3000");
          user.type(
      "user.name""calvin");
          user.click(
      "save");
          user.waitForPageToLoad(
      "3000");
          assertTrue(user.isTextPresent(
      "calvin"));
      }


         留意setUp中的"*iexplore"参数,设定使用IE作为测试浏览器;如果设为"*firefox",就会在PATH中查找*firefox.exe。

         注意,Selenium使用IE时的Proxy机制比较特殊,如果你同时在本机ADSL modem拨号上网,要先断网。

         脚本中按徐昊的指导,使用user 作为Selenium的变量名,使用例更加易读。

         Selenium提供了非常丰富的用户交互函数,但Selenium RC里并没有为Java单列一个函数参考手册,需要阅读公共的Selenium Refrences,再使用同名对应的java函数。

         所有函数都是一个locator参数,将操作付诸某个页面上的对象。支持ID,DOM语法,XPath语法,CSS selector语法等,详见参考手册

         如果不会写,最好的老师还是Selenium IDE 。比如那句点击 <a href="user.do?id=0" _fcksavedurl=""user.do?id=0"" _fcksavedurl=""user.do?id=0"" _fcksavedurl=""user.do?id=0"" _fcksavedurl=""user.do?id=0"" _fcksavedurl=""user.do?id=0"" _fcksavedurl=""user.do?id=0"" _fcksavedurl=""user.do?id=0"" />修改</a>,就是用IDE得到user.click("//a[contains(@href, 'user.do?id=0')]")的XPath语句。

      3.Ant的运行脚本

         我写的Ant测试脚本一个重要特征是使用<parallel> 并行容器节点,一边同时打开tomcat 和selenium server,一边等待两者打开后执行JUnit。
         如果不使用并行节点,而是用spawn=yes属性后台启动tomcat,屏幕里就看不到tomcat信息,如果测试意外终止的话,就不能关闭tomcat,很不方便。

      <parallel>
          
      <antcall target="tomcat.start"/>
          
      <antcall target="selenium.server.start"/>
          
      <sequential>
              
      <waitfor maxwait="10" maxwaitunit="minute" checkevery="1" checkeveryunit="second">
                  
      <http url=http://localhost:8080/>
              
      </waitfor>
              
      <waitfor maxwait="10" maxwaitunit="minute" checkevery="1" checkeveryunit="second">
                  
      <socket server="localhost" port="4444"/>
             
      </waitfor>
             
      <junit./>
             
      <antcall target="tomcat.stop"/>
          
      </sequential>
      </parallel>

      4.SpringSide 中的FunctionalTestCase基类

      SpringSide中抽象了一个FunctionalTestCase基类,抽取了setUp() ,tearDown()函数中selenium server 开闭操作。

      其中浏览器类型默认为"*iexplore", 基本url默认为http://localhost:8080

      用户可以在selenium.properties 中重新设定selenium.explorer 和selenium.baseurl 变量。

      发表于 @ 2006年09月06日 00:44:00|评论(loading...)|编辑

      新一篇: 给编程狂热者的ant task笔记 | 旧一篇: Apress新书迎接JDK 6.0(1)--总述及XML的新标准

      评论

      #unteo 发表于2006-09-06 23:10:00  IP: 221.137.9.*
      使用上,watij对于编程人员更加容易简单.

      但是 Selenium的HTML test case编辑方式直观容易,一般测试人员更加喜欢.
      #蛋蛋 发表于2006-09-07 11:06:00  IP: 74.116.36.*
      是Watir哈。Selenium只能操作HTML的DOM吧?Watir的好处是可以操作DOM以外的东西,比如说测试拖拽,用Watir就几行代码。而用Selenium可能就得知道拖拽的具体实现方式了。
      #lgc653 发表于2006-09-07 12:34:00  IP: 61.183.185.*
      是否有兄弟知道Selenium中如何定位到通过<a target="_blank" href="xxxx></a>这样的link弹出的窗口?
      #江南白衣 发表于2006-09-07 14:00:00  IP: 58.63.47.*
      刚刚请教了一下徐X, 徐X批复如下:

      ruby是基于COM API的,调用的是ie com和firefox com
      因此很多selenium作不了的东西,watir可以做

      但是watir的缺点依旧明显
      不能跨平台,比如我现在主要用linux开发,watir就跟本跑不起来
      还有ruby孱弱的unicode支持,对于中文也有一些限制(不过我已经提交过一个补丁了,据说会被打到watir 1.5里)
      #lgc653 发表于2006-09-07 14:32:00  IP: 61.183.185.*
      还有使用Selenium Remote Control时如何调用形如selenium-ide提供的
      chrome://selenium-ide/content/selenium/TestRunner.html
      这样的访问模式
      发表评论  


      登录
      Csdn Blog version 3.1a
      Copyright © 江南白衣