查看: 5366|回复: 1

[工具] 集成测试工具-Selenium

[复制链接]
认证徽章
论坛徽章:
1054
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
发表于 2011-4-27 16:08 | 显示全部楼层 |阅读模式
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的流程下非常的容易。

  1. public class UserManagerTest extends TestCase
  2. {
  3.     private Selenium user;

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

  11. public void testUserEdit() {
  12.     user.open("/helloworld");
  13.     user.click("//a\[contains(@href, 'user.do?id=0')\]");
  14.     user.waitForPageToLoad("3000");
  15.     user.type("user.name", "calvin");
  16.     user.click("save");
  17.     user.waitForPageToLoad("3000");
  18.     assertTrue(user.isTextPresent("calvin"));
  19. }
复制代码


  留意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,很不方便。 

  1. <parallel>
  2.     <antcall target="tomcat.start"/>
  3.     <antcall target="selenium.server.start"/>
  4.     <sequential>
  5.         <waitfor maxwait="10" maxwaitunit="minute" checkevery="1" checkeveryunit="second">
  6.             <http url=http://localhost:8080/>
  7.         </waitfor>
  8.         <waitfor maxwait="10" maxwaitunit="minute" checkevery="1" checkeveryunit="second">
  9.             <socket server="localhost" port="4444"/>
  10.        </waitfor>
  11.        <junit..../>
  12.        <antcall target="tomcat.stop"/>
  13.     </sequential>
  14. </parallel>
复制代码


4.SpringSide 中的FunctionalTestCase基类
  SpringSide中抽象了一个FunctionalTestCase基类,抽取了setUp() ,tearDown()函数中selenium server 开闭操作。
  其中浏览器类型默认为"*iexplore", 基本url默认为http://localhost:8080
  用户可以在selenium.properties 中重新设定selenium.explorer 和selenium.baseurl 变量。
认证徽章
论坛徽章:
1054
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
发表于 2013-12-30 13:56 | 显示全部楼层
good job

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表