一个简单的开源测试框架STAR的搭建

发表于:2012-3-26 11:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:lyscser    来源:51Testing软件测试博客

分享:

  ——基于Selenium、TestNG、Ant、ReportNG的测试框架

  搭建一个基于selenium的开源测试框架——不懂JAVA的孩纸你真苦逼啊,更何况你是个连eclipse都不会用的人啊有木有!在那个号称懂中文的搜索引擎上啥都查不到啊有木有!而谷歌对大陆提供的搜索服务却时断时续啊有木有!连续两周来,经常临下班之前的时候审视一天的工作成果却发现毫无进展啊有木有!刚刚调试通过一个组件想去扩展新功能的时候又一筹莫展了有木有!更坑爹的是,在命令行里面执行居然和在eclipse里面执行效果又不一样啊有木有!

  网络上已经有无数人就selenium的测试框架搭建给出了优秀的解决方案,但是对于大部分与我类似的没有编码经验的人来说,要学习并且自己搭起一套可以随时投入使用并且支持扩展的框架,也许并不是那么容易的事。具体的细节,要是没有经过亲自操作,很可能碰到很多问题。不过最终看到下面这个结果,一切的付出都是值得的,一切的纠结都可以跑到九霄云外。

  一、Eclipse工程的基础配置

  1、第一所要做的事情与大部分eclipse工程新建一样,就是新建一个Java的project,根据需求定义好Java Build Path。本工程除了标准的JRE之外还需要加入如下JAR包的引用,至于这些包的版本,按道理说只要找个相对稳定的即可,因为基本都是向下兼容的。这里JRE版本推荐6及以上,为了支持WebDriver的扩展需求,selenium不妨使用2.0或更高版本。

  2、将上面这些JAR包全部放入工程的lib目录下,然后可以在project-->properties-->Java Build Path-->Libraries中通过“Add JARs”来加载所需要的包,如果不需要操作其中一个组件,则不需要加载对应的JAR包。如,不操作数据库,并且在要编译的所有Java文件中不含对数据库操作的方法,那么Build Path中就不需要加入ojdbc的JAR包;同样,如果不需要在代码里操作selenium的服务器,那么也不需要加入selenium server的JAR包。

  二、Selenium的基础配置

  工程建好之后开始填充代码,我做的时候基本是边学习边从网上搜罗一些优秀的代码来为我所用。除了本公司同事已有的部分代码外,主要在相关的开源网站上(如stackoverflow.com、svn.wikia-code.com和github.com等)学习别人处理一些问题的方法,这里推荐别人写的一个功用类,也是我主要的思路和剽窃来源:svn.wikia-code.com上面的一个公用测试类BaseTest.java。

  1、最初,我纠结于多个测试类如何串行,多亏陈能技老师提醒才想起selenium对象可以在一个父类里初始化单例返回,交给每个子测试类继承,唉!不会Java的孩纸伤不起啊。不过这并不能解决多个类的串行问题,没办法了,整太复杂估计没那实力,还是换个角度思考吧。最终才发现原来自己钻进了死胡同:为什么要串行多个测试类还要使用同一个selenium实例呢?还是简单点,每个流程一个测试类吧,虽然长流程测试类要写得比较长一些,但是有了TestNG,测试的组织将会比较简单。下面是使用ThreadLocal的办法返回selenium对象,准备为以后多线程并发执行的调度做兼容。

  如果不需要多线程并发测试执行,那么不需要使用ThreadLocal,方法同样简单:

  2、我们知道,测试的时候可能会遇到有一些模态窗口和Windows弹出对话框、文件上传、下载等selenium支持得不好的功能。我们通常较为普遍的方法是使用AutoIt编译成对应的可执行程序,由Java来调用处理。我把这些可执行程序放在工程下assist目录下,编写测试脚本的时候可以通过指定的Java方法来加载他们,就可以实现对这些Windows对象的处理了。

  3、有人指出,selenium server的JAR包里面core/scripts/selenium-browserbot.js存在BUG,需要修改一下,其实修改了之后也并不能完全解决执行过程中偶发的“没有权限”问题。因此,我们需要多管齐下:

  A)修改这个js文件,重新丢进包里;

  B)如果使用ie测试,则尽量使用iehta模式;

  C)重写一下click和type等方法,指定超时时间,在指定时间内反复try。

  经我个人实验,这三种方法结合在一起基本就不会再出现这个问题了,但愿不要再有我没有发现的特殊情况了罢。而以click为例,重写一个点击的方法也比较简单,参见如下代码:

  4、配置好selenium之后,测试脚本开发就可以开始了,进行调试自然不能忘了先启动selenium server咯,至于server的配置、参数以及selenium的API,可以到网上搜索,很多私房菜和入门教程啥的,也是我们主要的学习来源了。除了上面提到的click和type的重写,我们也会根据实际需要重写很多公用的方法,这里就不再一一列举。有兴趣或者有类似需求、问题的可以自己扩充,比如日历控件等。

  5、在引入其他组件之前,先要确保自己开发的测试脚本在现有的公共类上能够稳定的单个运行,在eclipse里面用Junit的TestCase去进行简单的测试即可。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号