精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|||||||
---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||
发表时间:2012-04-12
最后修改:2012-04-14
再牛逼的CI环境,都不能测试出逻辑上的问题(连CI环境都没有的,这边就不说了)。最终的问题还是反映在浏览器上。 作为一个程序员,最让我不能接受的是,程序员要争取一些时间是那么的困难,而测试要时间是那么容易。我们把大量的时间花费在毫无意义的回归测试上,而且每次迭代都要回归。 吐槽一下,程序员是创造性的人员,而测试是检查错误的。各位有没有发现开发的时间和测试的时间是差不多的???甚至测试的时间远大于开发的时间。。。什么狗屁,明显是测试没能力。
我们希望的样子 用selenium来操作浏览器,然后把测试结果报告给testlink,在testlink上查看测试结果。 执行一条命令,执行所有的testcase,然后可以去testLink上查看报告。
Selenium是浏览器模拟器,可以通过脚本来实现对浏览器的操作。 Testlink是测试管理软件,可以负责test case的管理和report的管理。
当然,selenium和testlink也都有自己的弱点。 Selenium的弱点在于,啥都要自己做,除了做操作浏览器的,还要testcase的管理,每次test执行的配置,居然还要做测试报告。实在是娘西皮。。。。 Testlink的弱点在于,testlink虽然有testcase的管理,但是这里的testcase都是文档,而不是自动化执行的脚本。虽然按照testlink的roadmap来看,2.0以后的testlink会越来越多的支持自动化测试,testlink官方也并没有说要怎么来支持自动化测试。
两者的结合可以很好的弥补各自的短处,很完美的配合。
下面介绍一下,我的实现思路 利用testlink的导出功能,导出test plan所有的test case,当然,这些test case都是文本,是不能执行的。但是导出的xml里面包含了所希望被执行的testcase,可以通过testlink导出的xml,来指导测试引擎,最后由测试引擎来调用selenium,调用浏览器来执行操作。当测试结束的时候,调用testlink的xml-rpc接口,把绑定运行的测试结果输入到testlink,然后就能在testlink的report界面上,看到执行结果了。
看上去很不错的解决方法。。。。 但是xml和测试引擎需要数据绑定,把testlink管理的testcase和测试引擎管理的testcase绑定起来。在我的实现里面,是使用的testcase的name来作为绑定依据的,所以一定要让testlink中的testcase的名称和测试引擎管理的testcase一致。
附件为我写的一个简单的测试执行引擎。 就是按照上面的思路实现的。
如何使用我的程序 1.打开testlink的远程调用 2.新建一个远程访问用户,在数据库中手动修改script_key字段,该字段是远程调用testlink的时候,用户的识别字段,对应到程序中的配置为dev_key
在testlink中存在一个testcase,testcase的命名请用“googletest”,大小写区分。。。。 在testlink中,导出test plan,得到一个xml 把这个xml放到classpath路径下面
修改Main类的静态变量PLAN_FILE设置为xml的路径,运行Main类,就开始自动执行xml中的testcase了。
可执行testcase的管理是在application.xml里面,testCaseFactory管理的所有的可执行testcase,通过testcase的名称关联。
程序认为执行失败的标识是执行过程抛出异常,并且会把异常的message作为note上传到testlink,同时上传已经打开页面的数据截图。方便让用户看到这个失败的testcase到底出了什么错。
程序中testlink.properties为testlink的配置
结果分析 这样只是一个临时性的方法,实现了selenium和testlink的集成,可以做自动化测试 但是有一些硬伤是不能解决的,在正式引入项目前,必须要考虑到 1.testlink的testcase执行状态,不能被赋予NOT RUN,也就是说,一个testcase开是绑定到testplan以后,并且被执行,当解除绑定后,这个testcase应该不被执行,由于testlink的执行状态不能设置NOT RUN,所以这个状态不能设置到testlink上,在report页面上看到的结果都是先前执行的结果 2.测试数据的绑定。脚本化的testcase所用到的数据,应该和sql绑定。在每次执行testcase的时候,应该对数据库进行初始化。但是在我的测试引擎里面,怎么做都是不合适的。。。这边有考虑欠妥的地方
最后,大家要是有时间,访问一下我的产品www.groob.net 帮我增加点人气 目前,产品开放试用版下载,请访问http://www.iteye.com/topic/1122520
由于iteye不能看到我上传的附件,可以使用我的网盘下载 http://163.fm/DpvF9mW 提取码:grOBiDGU 或者 http://www.rayfile.com/zh-cn/files/dba18c30-8445-11e1-ab55-0015c55db73d/ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|||||||
返回顶楼 | |||||||
发表时间:2012-04-12
为什么看不到我上传的附件呢。。。。明明程序已经上传了呀。。。。
|
|||||||
返回顶楼 | |||||||
发表时间:2012-04-15
最后修改:2012-04-15
senvon 写道 为什么看不到我上传的附件呢。。。。明明程序已经上传了呀。。。。
有附件啊。 我用的是fitnium = fitness+selenium,用wiki写测试 |
|||||||
返回顶楼 | |||||||
浏览 5937 次