51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

12
返回列表 发新帖
楼主: rcpp
打印 上一主题 下一主题

[原创] 让你的QTP永不停歇

[复制链接]

该用户从未签到

21#
发表于 2008-9-2 16:08:48 | 只看该作者

回复 20# 的帖子

"每一次调用function是一次action的循环",这句能再详细解释下么?
脚本的结构到底是怎样?
是将每个功能放在各个Action中,然后通过一个Function来RunAction;还是直接把脚本都封装在Function中?
回复 支持 反对

使用道具 举报

该用户从未签到

22#
 楼主| 发表于 2008-9-2 16:58:10 | 只看该作者
这样吧,你可以按我说的尝试一下
下面这段代码
Sub test1()
   msgbox "test1"
End Sub

Sub test2()
   msgbox "test2"
End Sub
你保存为一个.vbs
然后新建一个脚本,引入刚才的.vbs库
脚本代码写入
Execute datatable(1,dtGlobalSheet)
然后在datatable里面的global sheet里的第一列,填写两行,分别是test1,test2

其实这就是我们的组织方式,具体测试代码都是function或者sub,每一个是一个功能点颗粒,以vbs库的形式import到用于组织的脚本main中
这个脚本main其实真正有意义的就是datatable里填写的东西
每一行就是一个调用,qtp自己就会把函数名作为参数循环去取这执行
settings里面的错误处理设置为遇到错误进入下一个action循环就好了
你可以自己故意加一个错误代码到test1里面,比如被零除之类的,再试试看,是不是直接跳出test1而运行test2

从一开始没有错误处理,到后来用脚本中加入on error处理,再到封装函数,每个函数中on error处理,并加入err对象捕捉等等;发展到现在,原来这些都摒弃不用了,只用一个设置,再加我写的解析qtp日志的方法。既可以捕捉到所有的错误,也可以实现测试人员希望的无人值守。
最开始用action,发现action的添加非常麻烦,又没有api可以用;于是想到vbs,以lib形式import进来,有api可以调用,添加起来非常方便。于是脚本都进了vbs变成了function

目前还有一个最大的麻烦,始终解决不了,就是对象库的维护,一直是一件很头疼的事情。

[ 本帖最后由 rcpp 于 2008-9-2 16:59 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2008-9-2 17:07:17 | 只看该作者
的确不好用  很不爽 本人用的不好 学习了
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2008-9-3 14:44:53 | 只看该作者
听得晕晕呼呼的!能在说详细点吗?
需要有中间设置的细节呀 要不大家都很难理解的
至少我没听明白
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2008-9-5 10:08:17 | 只看该作者
请问楼主,如果你的一个function里的功能点,出现了必录项校验的错误,弹出一个对话框提示某文本框的内容不对,(比如身份证有效性检验),如果不正确录入,当光标移动到其他位置时,就会反复弹出校验的对话框,请问你的脚本会怎么处理?跳出了当前的function,后续的function似乎也无法执行,因为那个提示框如果不做处理,其他操作也无法执行。
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2008-9-5 10:14:46 | 只看该作者

回复

原帖由 rcpp 于 2008-9-2 14:09 发表
……
你不会是只登录一下,然后把所有操作做完吧?
我们以前也是这么设计,后来抛弃了,改成每一个点都独立登录登出
一次登录然后所有操作全做完,这样脚本耦合太高了
又不是所有功能点都有执行顺序的,大部分功 ...


你这样每一次都独立做一次登入与等出,不觉得代码冗余了吗?
回复 支持 反对

使用道具 举报

该用户从未签到

27#
 楼主| 发表于 2008-9-5 11:18:05 | 只看该作者
呵呵,25楼和26楼的问题就是互相的答案
补充一句就是,登出点无论成功失败,窗口都会关闭,而登入点总是新开窗口的
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2008-9-5 16:18:15 | 只看该作者
我Globalsheet来控制这个脚本的运行。一个Action就是一个Function;然后用Main这个Action来调用需要运行的Function,好像还不错,不知道能否扑捉到出错的详细信息,例如:截图,消息框等等。
我们目前还是用Recovery Scenario来控制出错后的处理。
回复 支持 反对

使用道具 举报

该用户从未签到

29#
发表于 2008-10-28 15:43:52 | 只看该作者
每一次调用function是一次action的循环,每一个function是一个校验点,这样不错。
但是如果一些校验的case是需要在执行多步后才能达到需要校验的位置,并且在你的粒度比较小的情况下,是否会花费很多时间在反复创建校验点的准备工作上?

另外,采用你的出错便退出并进行下一个校验点的的策略的话,用action封装功能校验点是一样的。并且也不是在每一行都尝试要获取Err对象吧,Recovery Scenario可以让出错在捕捉并处理异常。
回复 支持 反对

使用道具 举报

该用户从未签到

30#
发表于 2008-10-28 15:52:14 | 只看该作者
原帖由 没有蛀牙 于 2008-9-2 13:17 发表
事实上,你一步出错,后面的都会fail


所以应该考虑做出错后的恢复
回复 支持 反对

使用道具 举报

该用户从未签到

31#
发表于 2008-10-28 16:51:30 | 只看该作者
原帖由 rcpp 于 2008-9-2 16:58 发表
这样吧,你可以按我说的尝试一下
下面这段代码
Sub test1()
   msgbox "test1"
End Sub

Sub test2()
   msgbox "test2"
End Sub
你保存为一个.vbs
然后新建一个脚本,引入刚才的.vbs库
脚本代码写入
Ex ...


为什么对象库管理会成问题呢?使用一个大的整合好的基础对象库不就可以了吗。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-20 17:23 , Processed in 0.073079 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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