51Testing软件测试论坛

标题: 使用Java构建稳定可靠的QTP自动化测试框架 [打印本页]

作者: sunshinelius    时间: 2009-11-30 00:17
标题: 使用Java构建稳定可靠的QTP自动化测试框架
了解和使用过QTP的朋友都知道,QTP的脚本开发语言都是基于vbscript的,由此所衍生出的lib,automation也都大多采用vbscript的,可以说,qtp的自动化测试是一个vbscript的世界。但vbscript作为脚本语言来说,尤其天生的缺陷,比如出错处理非常薄弱,不适合构建大规模的自动化测试,如测试框架等等。为此我开始将qtp的automation执行转化为java语言,以能够符合框架的大规模开发要求。下面将设计及实现介绍一下,以抛砖引玉。

QTPDriver_java的目标:
1.  使用java语言实现qtp automation object model,并在此基础上构建完整的自动化测试解决方案,包括健壮的错误诊断处理,和丰富的自动化测试报告等等。
2. 为qtp脚本提供丰富的框架规范及接口,以解决qtp脚本的健壮性和可诊断性问题。

目前java_qtp_driver有两个配置文件:
1. QTP 环境配置文件config.xml,格式如下:
主要是qtp启动的相关参数,包括synctimeout,screenshot的设置,测试运行的最大超时时间等等。qtpdriver会读取这些参数,并通过automation object model设置到qtp的运行实例中去
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "
http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>This is Config xml for AC agent,the screen shot value could be ERROR,NONE,ALL</comment>
<entry key="GENERATE_FILE_ONLY">false</entry>
<entry key="RECOVERY_LEVEL">1</entry>
<entry key="SCREENSHOT">ERROR</entry>
<entry key="SYNC_TIMEOUT">20000</entry>
<entry key="TEST_TIMEOUT">18000</entry>
</properties>

2. 测试执行脚本任务文件,格式如下:
qtpdriver会在运行的时候,读取此xml,执行不同响应的测试任务
<suite name="demo_test_suite" desc="this is a suite for demo">
  <component name="demo_test_component" desc="this is a component test for demo">   
    <casefile file="D:\learn\cesoo\cesooProject\JavaQTP\QTPAgent\driver\testscripts\flightDemo" desc="flightDemo"></casefile>
    <casefile file="testscripts\flightDemo" desc="flightDemo"></casefile>
  </component>
</suite>


3. java_qtpDriver的功能如下:
1)启动qtp,按照配置文件中的参数,完成qtp的相关设置
2)加载recovery 场景和相关lib
3)读取测试任务xml文件,循环执行指定的测试任务,直到结束
4)生成qtp结果报告,并在qtp报告的基础上,再做一层分析,最终生成xml报告,抓图如下:


总结一下:
qtp_driver的优势是
1. 全java编写,提高测试的稳定性和可靠性
2. java命令即可触发自动化测试的执行和结果报告的收集,完全实现无人值守运行
3. 强大的报告功能,生成基于qtp的总览报告及细分报告,直观简洁,适合回归测试
4. 持续开发改进
qtp_driver的劣势是.....目前下载只对读者用户开放,普通用户必须经过管理员升级,方可获得下载权限

使用指南1. 下载附件zip包,并解压
2. 双击运行install_driver.bat,完成driver系统文件注册
3. 编辑TestSuite.xml文件。通过增加<casefile>节点,来添加已有的qtp脚本
3. 双击runqtp.bat,开始运行qtp测试任务
4. 会在当前目录下生成results子目录,保存qtp各个脚本的测试结果报告,同时ac会为您生成一份总览报告ACSummary.html,在results/timestamp目录下。
可在本人博客站内论坛下载框架jar包(提示一下,因为本人博客空间性能有限,下载仅对读者用户开放)
http://www.cesoo.com/bbs/viewtopic.php?f=4&t=21

[ 本帖最后由 sunshinelius 于 2009-12-4 11:40 编辑 ]
作者: lantianwei    时间: 2009-12-4 11:47
好东西,支持一下!
作者: sunshinelius    时间: 2009-12-7 11:00
谢谢!测试报告是自动化测试中一个很重要的部分。一份信息充分,直观简介的自动化测试报告可以反过来促进自动化测试脚本的规范化。
作者: aliceella    时间: 2009-12-7 14:50
楼主很强大,自己写了自动化测试框架!但是QTP中的场景恢复好像也是可以自动回避错误,直接向后执行后面的CASE,不知道其中有什么区别?
作者: lansnor    时间: 2009-12-7 15:20
先看看LZ的框架是如何处理错误的,这方面比较迷惑,学习下
作者: yuandjing    时间: 2009-12-7 17:23
必火,和我的Aspx框架非常类似,有些做的比我的还要好很多,占座
作者: sunshinelius    时间: 2009-12-7 18:21
标题: 回复 4# 的帖子
出错处理有两个层次
第一在语言层次上,脚本语言的错误处理相比编译语言如java的exception机制要脆弱得多,在不同平台上脚本语言的出错返回点和处理机制都是不一样的,因此错误表现可以说是千奇百怪,不利于错误的定位。这时,脚本语言的解决办法是在code中加入很多的判断分支,以捕获和处理错误。
第二在qtp层次上,qtp提供了recover manager,可以预设错误条件和处理分支,这个方案相对来说比较成熟,但是仍有增强的空间,比如全屏截图,详细的诊断log等等,应该由框架来提供。
因此我的观点是:在qtp的自动化测试框架中,能用编译语言来实现的功能尽量使用编译语言开发,由于qtp本身限制的部分只能采用vbscript了
作者: sunshinelius    时间: 2009-12-7 21:55
补充。
在UI自动化测试中,首先要建立一个切实的实施目标和合适的策略,然后在此基础上进行规划。在这个过程中,涉及到如下问题:
1. 选择手工测试还是自动化测试?(切实的目标)
2. 选择哪些测试案例进行自动化能够获得最高的收益比?(最合适的自动化测试集)
3. 应该在测试什么阶段介入自动化测试?(最佳介入时机)
4. 测试团队如何向自动化测试团队转型?(人才组织,技术储备)
5. 如何完成流程上的整合?(形成稳定的自动化回归测试)

在以上问题明确之后,可进入框架实施阶段,框架实施要解决的问题
1. 无人值守的执行自动化(解决稳定性,可靠性)
2. 自动化测试报告规范格式的制定(标准化log,检查点,抓图等等)
3. 测试拓扑的建立与管理
4. 测试资源的管理

有关详细信息和思路,可参考本人的新书《软件自动化测试框架设计与实践》
目录可见链接:
http://www.51testing.com/?uid-2382-action-viewspace-itemid-186208
作者: sunshinelius    时间: 2009-12-7 22:03
标题: 回复 4# 的帖子
目前这个java qtp模块是我的整体自动化测试框架Automation center(AC)的一部分,可以说它只是一个qtp的agent。AC将会支持更多的测试类型,如perl agent,robot agent等等。有关AC更多信息,可以参考我的博客www.cesoo.com

[ 本帖最后由 sunshinelius 于 2009-12-7 22:06 编辑 ]




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2