51Testing软件测试论坛

标题: 为什么QTP能很好的识别web应用,而对c/s支持不是很好? [打印本页]

作者: dreamever    时间: 2008-5-12 11:17
标题: 为什么QTP能很好的识别web应用,而对c/s支持不是很好?
想说我白痴的人拜托让我把话说完,再喷不晚。
大家都知道QTP能很好的识别WEB应用中的对象元素,但是如果要识别C/S比如JAVA应用中的元素时,就必须要安装相关的插件,并且大家也都公认QTP对delphi的支持不是很好。我想问的是为什么。
看看几款大家都比较熟悉的测试工具:Watir只能识别web应用,rft如果在eclipse平台上运行可以识别web应用和JAVA程序,如果运行在.net环境中(studio)可以识别.net应用,QTP天生能识别web,但是如果要识别java或者其他应用必须安装插件,几乎每款工具能识别的应用类型都不相同,他们为什么会有这样的差别?
我是这样认为的:QTP和Watir实现对象识别的基础其实就是调用IE的dom模型对象。不信的话大家可以去看看Watir的API,几乎所有的API的父类都扩展了dom模型的对象和方法;大家也一定注意到了在QTP录制脚本的过程中,QTP可以读取到HTML代码中对象的属性,例如HTML中如果有一个button的属性为username,那么在QTP录制时也一定能获取到这个属性name = username,这其实都是对dom的调用。VBS和JS都具备对DOM的访问能里,但是QTP之所以采用VBS是因为JS只能存活在网页中,我们不能在windows的环境下独立运行JS程序。
如果是这样的话,那么QTP所谓的JAVA插件,是不是也包含了对某种对象模型的调用?比如对JAVA中Swing模型的调用?
如果是这样的话,那么我们是不是可以自己去制作相关的插件,在这个问题上,我们应该首先了解哪些知识,或者说有哪些资料是我们可以参考的?这些问题是我真正想了解的
我的问题描述完了,想说我白痴的人现在可以拍板砖了。
作者: 小孩    时间: 2008-5-13 00:05
QTP 不是天生就识别WEB ,后天才识别JAVA和NET
只是购买QTP HP mercury就曾送了 VB WEB ACTIVEX 这3个插件,还有QTP是默认支持VC的
如果还要支持JAVA和NET只能购买 HP mercury 的插件,这都因为是商业策略
很多不识别的对象我们都可以通过编码的方式去识别它,
你说我们自己制作的相关插件,估计不行,涉及到QTP的接口问题,
还有就是如果我们有能力制作相关的插件的话,还不如自己开发一套针对被测系统的自动化工具。在成本和技术要求方面估计都会比开发制作插件还低,还有就是我们不知道QTP的接口!
自动化未必是一定要使用什么QTP和ROBOT这些商业工具!

以上都是个人见解,

[ 本帖最后由 小孩 于 2008-5-13 00:06 编辑 ]
作者: liangjz    时间: 2008-5-13 00:45
同意小孩的。

是QTP支持WEB最好,其他需要插件是基于商业原因,同时,也说明他们的插件机制还是不错的。

WINRUNNER支持WINDOWS更好
QTP支持WEB 更好。

很多其他工具都在解决QTP已经解决了的问题,所以QTP 的D版才这么流行 :)
作者: shanxi    时间: 2008-5-13 09:09
标题: 回复 1# 的帖子
WinRunner能识别.Net控件和Java界面?

QTP比WinRunner在对非Web界面的支持程度上感觉应该是更进了一步。QTP和WinRunner在本质上都是支持标准Windows UI而不支持程序定制UI控件。

象Java的swing和awt生成的界面属于非Windows标准界面,所以正常途径的支持不能。类似的还有用QT等图形库开发的界面。
作者: shanxi    时间: 2008-5-13 09:30
标题: 延伸一下
微软Windows上非Web UI的验证是通过Accessible库来实现,也就是说如果程序开发时对Accessible这个COM接口并没有实现,会使得自动化无法进行下去。

当我们用Visual studio新建一项VC MFC项目时,在Advanced feature中有一项Active Accessibility能供选择,勾选它后会在每项类初始化函数中自动生成EnableActiveAccessibility(),查找它的定义可以看到它被定义为Accessibility Support,微软有专门的文档说明了如何在程序设计时实现此接口。

一般自动化软件做验证时的过程是,找到窗口或者控件句柄后,用Accessiblity类利用该句柄获取该句柄上相应文字等特征值,跟录制时获取的相应值相比较从而得出Pass/Fail。

Java程序生成的类库所用的Accessibility是它自己的Java Accessibility API,需要通过Java Access Bridge才能同Windows based Assistive交互。这是它的兼容性表(Compatibility Table):http://java.sun.com/javase/techn ... /compatibility.html

[ 本帖最后由 shanxi 于 2008-5-13 09:33 编辑 ]
作者: dreamever    时间: 2008-5-13 13:19
大家说的都很精辟,其中5搂说的是我最感兴趣的。只要知道自动化测试工具识别对象的原理(底层实现),我感觉就有可能通过编码的形式增强自动化测试的识别功能。比如说把对c/s对象的识别封装成一个dll函数库(我还不知道什么是dll,纯举例)供QTP调用,这样我们就可以使用类似于object.click的方法来实现对C/S对象的识别了,只是工作量很大,就象2楼说的,到最后我们甚至有可能变成自己写了一个自动化测试工具
作者: lantianwei    时间: 2008-5-13 14:20
WR对非标准对象的操作,处理要比QTP简单,这点确实无可厚非。
作者: heqingbluesky    时间: 2008-5-13 15:49
QTP对于非标准的Window控件识别不是很好,例如:你的软件GUI是基于第三方的工具开发的,不是标准的Visual Basic 控件;但是如果用的是标准的Visual Basic控件,控制和录制起来就非常的方便了。这个就是.Net和Java控件需要额外的支持了。




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