51Testing软件测试论坛

标题: 关于使用QTP开发脚本中具体活动的一点见解 [打印本页]

作者: jackymail    时间: 2007-10-17 16:00
标题: 关于使用QTP开发脚本中具体活动的一点见解
以下只针对业务函数的一些想法。

操作对象库之前应该先预先练习几次,找到能够尽量减少对象库命名重复的识别属性object indentification相关设置要在联系中不断调整,形成最佳属性识别方案以后,导出成Script

不使用智能识别.对象同步时间设置成1秒,方便找不到对象的时候快速调试。不激活Active Screen,控制Test文件尺寸。

即便多人开发,对象库也不需要同步,不应交差开发脚本,必须分模块,彼此隔离。同一模块内对象库,函数库,全局变量(Test)全部自己确定,无需同步。同一模块(一个人开发的部分)只用一个对象库,只有一个名字为main的Action(个人意见),方便在任何情况下随时抽取lib中的代码在专家模式下调试。

函数命名:把业务函数的入口函数命名成 动作+名称, 其余的具体操作细节的子函数动作+名称+细节名称。。。,参数只在子函数中确定,入口函数不携带参数。动作数据来自Excel表。
业务入口函数名称与对应Excel中的Sheet同名,方便查找,一个Test最终只对应一个Excel表格,相关函数对应不同Sheet.Sheet倒入到出后需在函数结束时清空相关对象及Sheet,防止后续适用变量产生混乱。

开发中不进行容错,只在后期回归测试时候做必要容错,毕竟是测试工具,不必尽善尽美,否则开销太大。形成固定可运行的模式(固化部分输入数据),仍然可达到24*7运行目标

变量命名:不怕长,单词首字母大写,表达要准确。不怕重复(因为所有的变量都在使用之前必须先赋值,后使用)

只要重复使用多次的语句组,哪管2行代码也要形成函数,日后好处多多。


不妥之处,还请有经验认识指明。,

[ 本帖最后由 jackymail 于 2007-10-17 16:48 编辑 ]
作者: lelebachelor    时间: 2007-10-17 19:59
呵呵。。同意。。
作者: hsjzfling    时间: 2007-10-17 23:19
收藏先,有空再研究下~
尽量符合国内的条件和环境吧~
作者: yabest    时间: 2007-10-17 23:45
原帖由 jackymail 于 2007-10-17 16:00 发表

不使用智能识别.对象同步时间设置成1秒,方便找不到对象的时候快速调试。不激活Active Screen,控制Test文件尺寸。

一秒钟也太小气了吧,要知道网络或者数据处理原因,反应有时会比较慢,1秒钟的话肯定会导致很多Case超时失败的。
其实这个时间还是要稍长点的好,10秒钟以上差不多吧。尽量保证Case PASS,不然Case Fail了,分析查找原因,要浪费很多时间的!

即便多人开发,对象库也不需要同步,不应交差开发脚本,必须分模块,彼此隔离。同一模块内对象库,函数库,全局变量(Test)全部自己确定,无需同步。同一模块(一个人开发的部分)只用一个对象库,只有一个名字为main的Action(个人意见),方便在任何情况下随时抽取lib中的代码在专家模式下调试。

一个模块一个对象库?还是一个被测软件一个对象库的好吧。
不然一个被测软件划分为好几个模块,那此软件里的Case就要同时使用好几个对象库,很麻烦的。

函数命名:把业务函数的入口函数命名成 动作+名称, 其余的具体操作细节的子函数动作+名称+细节名称。。。,参数只在子函数中确定,入口函数不携带参数。动作数据来自Excel表。
业务入口函数名称与对应Excel中的Sheet同名,方便查找,一个Test最终只对应一个Excel表格,相关函数对应不同Sheet.Sheet倒入到出后需在函数结束时清空相关对象及Sheet,防止后续适用变量产生混乱。

入口业务函数是个啥概念?
入口业务函数不带参数? 那如果一个业务函数需要调用另外一个入口业务函数,怎么办?
一个入口业务函数对应一个sheet,那函数多了,sheet岂不是也要很多,那这个Excel文件用起来就很麻烦了!
作者: wtucel    时间: 2007-10-18 09:16
有一定道理,不过还是因地制宜的好,可以多借鉴下开发的经验
作者: jackymail    时间: 2007-10-18 10:29
原帖由 yabest 于 2007-10-17 23:45 发表

一秒钟也太小气了吧,要知道网络或者数据处理原因,反应有时会比较慢,1秒钟的话肯定会导致很多Case超时失败的。
其实这个时间还是要稍长点的好,10秒钟以上差不多吧。尽量保证Case PASS,不然Case Fail了,分析查 ...


谢谢Y大人指点,在下有不同意见,暂时保留。日后规律总结明晰再与老师切磋
作者: 木卫十二    时间: 2007-10-18 13:17
问一下哈,到了后期,case特别多,查询就不方便了。vbs文件也有很多个,有没有好的管理软件来统一管理的?
有用的好的推荐个,多谢!
作者: Jimmyshao    时间: 2007-10-18 13:27
原帖由 jackymail 于 2007-10-17 16:00 发表
以下只针对业务函数的一些想法。

操作对象库之前应该先预先练习几次,找到能够尽量减少对象库命名重复的识别属性object indentification相关设置要在联系中不断调整,形成最佳属性识别方案以后,导出成Script

...

我觉得这些要基于一些情况下比较适用
1。Server在local,Test和Dev有不同的Env,响应比较快;
2。Automation开发的人员不是很多,互相之间问题容易协调;
3。整个系统不是特别复杂,项目不是特别大;
作者: jackymail    时间: 2007-10-18 13:38
vbs在我看来不会产生很多。
比如一个软件有10个模块,它的vbs库也不过20多个。
moduler1-> mobusiness1.vbs
moduler2->mobusiness2.vbs
....
GlobalData.vbs 装全局变量,开始载入
SpecialProcess.vbs 装特别处理过程/函数。
。。。。
如果把软件划分成1000模块来处理,我就不知道该说什么了。


原帖由 木卫十二 于 2007-10-18 13:17 发表
问一下哈,到了后期,case特别多,查询就不方便了。vbs文件也有很多个,有没有好的管理软件来统一管理的?
有用的好的推荐个,多谢!

[ 本帖最后由 jackymail 于 2007-10-18 15:25 编辑 ]
作者: jackymail    时间: 2007-10-18 13:45
原帖由 Jimmyshao 于 2007-10-18 13:27 发表

我觉得这些要基于一些情况下比较适用
1。Server在local,Test和Dev有不同的Env,响应比较快;
2。Automation开发的人员不是很多,互相之间问题容易协调;
3。整个系统不是特别复杂,项目不是特别大;

关于你的第一个问题,我觉得你和Y的理解都与我不同,我不知道是不是我理解错了,对象同步的时间可以设置成0,连1秒都不用,这个时间的作用是用来在智能识别的时候使用的,因为没有启动智能识别,找不到对象就马上弹出错误框,不必等待。 比如一个网页上的控件,在网页已经完全刷新完毕(载入)才开始对象识别,载入完毕意味着对象已经存在了,剩下的事情就是你的属性是否能找到对象了。

关于项目复杂开发人员多少的问题。

开发人员越多,越需要相对独立,不能同步!同步的工作量是相当大的,模块彼此独立,它们之间互不影响才能提高效率。独立意味着模块间没有互相操作。如果认为有必要的操作时候,可以在需要进行跨模块操作的步骤里添加必要步骤,的确这样产生了一定的重复代码(tests之间),但对于这部分test里的应用,只要固化就好了,只要配置固定的数据,如果说还需要
灵活的数据,那开始的时候就一定要把他们划入同一模块!

复杂与否在我看来都需要通过开发脚本前对软件有明确的模块划分概念。
作者: hsjzfling    时间: 2007-10-27 20:37
原帖由 yabest 于 2007-10-17 23:45 发表

一个模块一个对象库?还是一个被测软件一个对象库的好吧。
不然一个被测软件划分为好几个模块,那此软件里的Case就要同时使用好几个对象库,很麻烦的。


这点我有疑问,请yabest解惑,一个Case使用一个对象库,具体是如何操作呢?一次性录制完脚本得到一整个对象库?还是说一个页面录制一个Action或者一个模块(或子模块)一个Action(我们的软件中模块间的调用是很频繁的,而且多数情况只调用模块中的一个子模块),然后执行Case前先将需要调用到的模块的对象库合并?合并对象库可能会产生对象不识别的问题吧,手动修改的修改量也是很大的,做一个case在对象库上就得忙活好半天了。。。请问Y大大是怎么做的呢?
作者: lovealina    时间: 2007-11-8 19:42
学习中
作者: danmy    时间: 2007-11-9 09:12
这个还是根据各自开发的要求来定比较好。只是一套脚本一定应该有个规则




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