51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8657|回复: 28
打印 上一主题 下一主题

[原创] "通过过录制对象+测试案例=自动生成QTP脚本"的原理

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-5-9 16:10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天听朋友说他们的QTP测试脚本是自动生成,我想知道一下原由,请各位指导一下,他生成脚本步骤是这样的:
  首先首先设计测试案例,同时用QTP录制程序对象,录制完成后,通过一种工具将录制的对象与测试案例调入工具中,工具自动生成测试脚本,运行测试脚本就可以批量跑测试案例,同时生成测试报告;
我想知道怎么实现的;一般我们的脚本都是先录制完成后,在录制的基础上,手工编写的一些参数化,循环,检查点设置。但是我上面说的他都不需要这样去操作;直接在案例里面通过文字描述,导入工具中就可以实现了;

[ 本帖最后由 annio4 于 2009-5-9 16:14 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-5-10 10:34:17 | 只看该作者
LZ说的应该是关键字驱动框架,如果是这种框架,那么QTP本身的一个视图就体现着这种思想,用的描述文字应该还是关键字级别的,从技术角度来说,不怎么难实现。但要将其做好,还是需要花点功夫的;如果不是关键字驱动,而是从一般的MANUAL CASE 直接转化得到脚本,还是挺难做的,有点技术水平了。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-5-11 12:54:29 | 只看该作者

举两个自动化录制无法生成的例子

1.Mousemove
2.Drag=left button down -> Mousemove -> left button up

两者最根本的相同点在于 无法清晰界定 该操作 开始和结束。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-5-11 15:28:58 | 只看该作者
也不是绝对的,比如以下QTP帮助中的一个简单的例子。当然,你也可以使用模拟录制的方法。
'The following example uses the Drag and Drop methods to drag a copy of an item from the Inbox pane of 'Microsoft Outlook Web Access and drop it in the Junk folder. Then it uses the Drag and Drop methods again to move the item from the Junk folder to the Deleted Items folder.

Sub Drag_and_Drop_Example()
Browser("Microsoft Outlook Web").Page("Microsoft Outlook Web_2").Frame("viewer").WebElement("MyEmail").Drag , micNoCoordinate, micNoCoordinate, micCtrl
Browser("Microsoft Outlook Web").Page("Microsoft Outlook Web_2").Frame("navbar").Link("Junk E-mail").Drop
Browser("Microsoft Outlook Web").Page("Microsoft Outlook Web_2").Frame("viewer").WebElement("MyEmail").Drag
Browser("Microsoft Outlook Web").Page("Microsoft Outlook Web_2").Frame("navbar").Link("Deleted Items").Drop
End Sub
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-5-11 15:45:33 | 只看该作者
找到规律性东西
剩下就是些字符串处理了

其实我一点不喜欢这种作业模式  虽然规范化  但对人的培养很差。。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-5-11 16:29:14 | 只看该作者
原帖由 hsjzfling 于 2009-5-11 15:28 发表
也不是绝对的,比如以下QTP帮助中的一个简单的例子。当然,你也可以使用模拟录制的方法。
'The following example uses the Drag and Drop methods to drag a copy of an item from the Inbox pane of 'Microsoft O ...



我看你就是一个傻子。  我说的是录制,不是写代码。
写代码当然容易生成了,这猪都晓得!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-5-11 16:43:34 | 只看该作者
原帖由 shanxi 于 2009-5-11 16:29 发表



我看你就是一个傻子。  我说的是录制,不是写代码。
写代码当然容易生成了,这猪都晓得!


你不知道Drag操作也是可以被直接录制下来的么?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-5-11 18:35:10 | 只看该作者
原帖由 shanxi 于 2009-5-11 12:54 发表
1.Mousemove
2.Drag=left button down -> Mousemove -> left button up

两者最根本的相同点在于 无法清晰界定 该操作 开始和结束。

从技术角度讲,肯定是可以被录制的,大不了加个标识操作嘛!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-5-11 18:53:38 | 只看该作者
原帖由 hsjzfling 于 2009-5-11 16:43 发表


你不知道Drag操作也是可以被直接录制下来的么?


请明示。 QTP仅有的对Drag的支持限制于web,请给出具体设置。
我刚用QTP 10根本无法录制: 拖动MSIE滚动浏览网页这样的操作

已经设置了 Tools->Web Event Recording Configuration。里面的Event没有:
<Event Name="ondragstart" Listen="1" Record="2"/>
<Event Name="ondrop" Listen="1" Record="2"/>

见下图:


另,我在help里面确实发现了你所说的代码。但我现在要的是录制自动生成drag操作的例子。



[ 本帖最后由 shanxi 于 2009-5-11 19:36 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2009-5-11 20:42:42 | 只看该作者

回复 11# 的帖子

分析的不错!
但毕竟咱不是做工具的,其实没必要考虑的那么全,实现了功能就好。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2009-5-11 20:53:36 | 只看该作者

回复 12# 的帖子

我现在 主要是想研究这个操作 是否有实现的可能性和价值。

用了半天QTP 10在vista 和 win7上, drag & drop始终无法录制当拖动MSIE滚动条这样的操作。 看到现象才能分析原理。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2009-5-12 10:42:52 | 只看该作者

回复 13# 的帖子

还是建议你多研究下帮助文档,不是所有的对象都支持Drag方法的,比如Browser等,同样也不像你10楼所说的只支持web,这些帮助中都有,不赘述了。

如果你非要录制拖动IE Scroll Bar的操作,技术上当然可以实现。51的老师就教过,录制前不启用Web插件,就能让QTP将Browser识别为Window,将Page识别WinObject,然后就可以录制到拖动滚动条的操作了。只是这需要坐标,不是很稳定。

如果只是要实现滚动条的操作,那还不如用IE 的 DoScroll呢
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2009-5-12 12:16:59 | 只看该作者
原帖由 hsjzfling 于 2009-5-12 10:42 发表
如果你非要录制拖动IE Scroll Bar的操作,技术上当然可以实现。51的老师就教过,录制前不启用Web插件,就能让QTP将Browser识别为Window,将Page识别WinObject,然后就可以录制到拖动滚动条的操作了。只是这需要坐标,不是很稳定。

如果只是要实现滚动条的操作,那还不如用IE 的 DoScroll呢


你好,我的目的是研究如何录制这样的操作生成代码,所以不需要不通过录制生成这样的work around。
其次,我disable掉了web插件,但还是不行。见下图已经识别出windows object




1.你总说你老师说的,你能否提供一个自己做过确定可以录制的例子呢? 老师说的就一定对?测试是严谨的过程,如果没有证据,光凭某人说就证实一个结论微妙太草率! 无法repro的操作,我自然无法认同QTP确实支持了drag & drop的录制!验证的场景是:拖动MSIE scrollbar;在桌面拖动文件从A点到B点,都没有drag & drop事件生成。

2.你说的QTP帮助里面有 录制 drag & drop的操作,我找了好半天全是编码实现的,麻烦你能否指出是哪个文档写明了这个? 我用的QTP 10。

期待你拿出强有力的证据来说明,谢谢!

[ 本帖最后由 shanxi 于 2009-5-12 12:39 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2009-5-12 14:07:42 | 只看该作者

回复 15# 的帖子

<<录制前不启用Web插件,就能让QTP将Browser识别为Window,将Page识别WinObject,然后就可以录制到拖动滚动条的操作了

1. 例子不是已经写给你看了么?在写之前这段话的同时我就已经再确认了一次,以免有疏漏。你可以质疑我是否自己实践过,而没必要上那么大一堆。作为一个测试人员,能否请你说话冷静一点,严谨一点,否则沟通是没办法进行下去了的。5楼不过就是告诉你QTP是可以录制Drag的,看看你自己在7楼说的话,就凭那句话我就已经有了充足的理由任凭你在无知中郁闷。  我没有用过QTP10,但至少我能确认QTP9.2和9.5都是可以录制这一操作的。

2. 请不要曲解我的原话,我的原话是让你多去研究下帮助。你说你找了半天全是编码实现,请问你是如何确定你找到的例子全是编码实现的?假设我录制了
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Drag 984,140
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Drop 974,613
这么一段代码,那是不是写成
Sub DragScroll()
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Drag 984,140
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Drop 974,613
End Sub
就也变成编码实现的了?
用你自己的话来说,测试时严谨的过程,请让你得出结论的过程也严谨一点。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2009-5-12 14:14:32 | 只看该作者
至于要证明,很容易,关注此帖的朋友按照以下操作来实践下,然后回复下结果就可以了。
1. 在启动QTP时显示插件管理的界面去掉Web插件,其它设置无需修改,使用QTP的即可
2. 开始录制,打开一个IE,然后跳转到以下url(就是在google中查询Test)
http://www.google.cn/search?hl=z ... a=&aq=f&oq=
3. 随意拖动IE右侧的滚动条,看看是否能录制的到。
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2009-5-12 14:53:14 | 只看该作者

回复 17# 的帖子

根本没有生成这样的代码:
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Drag 984,140
Window("Microsoft Internet Explorer").WinObject("Internet Explorer_Server").Drop 974,613
我也描述了,没有相应的监控事件生成。

请问你是如何确定你找到的例子全是编码实现的?搜索帮助里面找到的,录制过程根本没有生成过这些代码!


其次,我disable掉了web插件,但还是不行。 在上贴中我也答复过了。


很可惜你这次又重复了你之前说的步骤,我已经说明了按你的步骤不行的结果。实际上你根本并没有拿出证据来证实,哪怕截图也没有看见,能证实你所说的操作正确。

我截了好几张图,你却总在空喊你所说的操作能够成功,实际上你自己也无法按照你所说的操作录制到!
严谨的测试当然没错,但它是需要数据和截图来证明的。现在你空口大白话不就在忽悠人嘛,什么QTP drag& drop支持的地方很多,基本的桌面上文件位置的拖拽都无法录制,这就是你说的能支持吗?

[ 本帖最后由 shanxi 于 2009-5-12 15:10 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2009-5-12 15:26:11 | 只看该作者

回复 18# 的帖子

作为一名测试人员,你的耐心呢?平常心呢?也许是我高看你了。
关于这个问题,无法用截图来证实什么,去截录制下来的代码?我在16楼贴出的这两句就是我录下来的,截了图你也可以说是手动修改的,没什么意义,不如让其它朋友实际操作过后来发帖证实。
在论坛上交流下技术而已,是就是,不是就不是,完全没必要去颠倒黑白没录到说录到了,还请不要以小人之心度君子之腹。你说录不到,那原因也可能有很多种,QTP也是程序,也会有bug。其他朋友如果录到了就出来回下帖好了。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2009-5-12 15:42:13 | 只看该作者

回复 19# 的帖子

你在16楼说的是:
假设我录制了

既然你已经录制到了,为什么这么说?

你理解到了我问的问题一直是 拖拽无法录制吗?至于代码我从没要求过。我要求的也是重现的条件,难道这也是属于强求?
关于这问题谁没有耐心,你自己清楚。

[ 本帖最后由 shanxi 于 2009-5-12 15:52 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2009-5-12 15:45:41 | 只看该作者

都这么大火气阿,和好

大家都是为了讨论问题,何必非要这么大火气呢
回到一直争论的这个问题,公平的说,QTP是支持部分对象的Drag和Drop操作的录制,我的QTP版本是10.0,以下是录制的截图,shanxi你可以看一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2009-5-12 15:48:53 | 只看该作者

回复 21# 的帖子

hsjzfling  你有耐心照楼上的来截图说明吗?

我先前说过拿出证据,你就一张空口在那忽悠。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-25 11:28 , Processed in 0.080317 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表