51Testing软件测试论坛

标题: Winrunner之描述性编程 [打印本页]

作者: lantianwei    时间: 2007-7-24 17:18
标题: Winrunner之描述性编程
刚刚用了QTP的描述性编程,忽然想起用WinRunner也用一下描述性编程。做了感觉还不错,呵呵。。。。
       以下是本人用WINDOW XP自带的一个计算器做的一个小例子:
#################################################################################
#
#  Description-------------Use Description Programing to Test the CALC in Window XP  by WinRunner
#
#  Tester------------------Lantian Wei
#
#  Modify Time-----------2007-7-24
#
#################################################################################
invoke_application("calc.exe","","c:\\windows\\system32\\",SW_SHOW);
static myarr[]={{1,"+",2,3},{1,"-",2,-1},{1,"*",2,2},{1,"/",2,0.5}};
win_activate("{class: window,label: Calculator}");
set_window("{class: window,label: Calculator}",5);
for(i=0;i<4;i++)
{ for(j=0;j<3;j++)
     button_press("{class: push_button,label:"&myarr[i,j]&"}");
  button_press("{class: push_button,MSW_class: Button,label:=}");
  edit_get_text ("{class: edit}", result);
if(index(myarr[i,j],".")==0)
{
   if(result==myarr[i,j]&". ")
     tl_step("CheckAnswer",0,"The calculatation is right:"&myarr[i,j-3]&" "&myarr[i,j-2]&" "&myarr[i,j-1]&" = "result);
   else
     tl_step("CheckAnswer",1,"The calculatation is wrong:"&myarr[i,j-3]&" "&myarr[i,j-2]&" "&myarr[i,j-1]&" != "result);
  wait(1);
  }
else
{
  if(result==myarr[i,j]&" ")
    tl_step("CheckAnswer",0,"The calculatation is right:"&myarr[i,j-3]&" "&myarr[i,j-2]&" "&myarr[i,j-1]&" = "result);
  else
   tl_step("CheckAnswer",1,"The calculatation is wrong:"&myarr[i,j-3]&" "&myarr[i,j-2]&" "&myarr[i,j-1]&" != "result);
  wait(1);
  }
}
win_close("{class: window,label: Calculator}");

以上是本人用描述性编程写的脚本,至此现丑了。如有不足之处还请大家指正!在此先表示感谢!
通过这个例子的练习,我发现它确实有好多优点,比如你从此不用在关心那烦人的对象库了,而一个测试脚本里基本上在对象库中出现的问题最多了。然而它还是有缺点的,比如对于无法识别的对象,它就无能为力了,而对于那些OBJECT对象,它的支持也不好。所以如果WR对应用程序识别的满好的话,不如用描述性编程试试。sdlkfj5

[ 本帖最后由 lantianwei 于 2007-8-15 14:24 编辑 ]
作者: dionysus    时间: 2007-7-24 17:37
非常不错的帖子!
描述性编程在QTP中被炒的很火,其实在WR中就已经支持了,Rational Robot就是直接将识别对象的属性放到脚本中的,这样做可以使脚本更独立,但可读性相应就会下降,而且脚本的编写工作量加大了(一得一失吧)。
非常支持lantianwei 的探索和学习精神!
作者: lantianwei    时间: 2007-7-24 17:56
非常感谢dionysus 的支持,我相信WR如果对对象的支持变得越来越好的话,那么描述性编程在WR还是有立足之地的。呵呵。。。
作者: dionysus    时间: 2007-7-25 11:27
对于第三方控件目前WR的支持确实不够好,我想一部分原因也是目前WR的更新慢了下来,跟不上开发工具的速度。而最新的9.2版我们也一直没有接触到
作者: lok_198461    时间: 2007-7-26 17:00
描述性编程,对第三方控件也有一定的局限性,虽然说可以使脚本更独立,但是有些问题还是解决不了的。
例如:在delphi中的某些控件自己会自动生成MWS_id,使回放时会出现找不到控件问题。
作者: dyq    时间: 2007-7-27 13:42
描述性编程有点难,
作者: kolecat    时间: 2007-7-27 14:49
请问什么是描述编程?

就是指 用GUI对象的 物理描述 代替 逻辑名?
作者: lantianwei    时间: 2007-7-27 14:54
标题: 回复 #7 kolecat 的帖子
所谓描述性编程,我觉得他的真谛在于脱离了对象库,而对于运用的非常好的话,又可以达到脚本非常高的复用。
至于原理吗,也就是你说的,差不多。
作者: renpan02    时间: 2007-7-29 12:13
标题: 知己啊
原帖由 lantianwei 于 2007-7-24 17:18 发表
刚刚用了QTP的描述性编程,忽然想起用WinRunner也用一下描述性编程。做了感觉还不错,呵呵。。。。
       以下是本人用WINDOW XP自带的一个计算器做的一个小例子:
####################################### ...

我也喜欢这个个性签名

我的性格决定命运,气度影响格局啊
作者: magenzqp    时间: 2007-7-31 10:19
sdlkfj6
作者: qinemma    时间: 2007-8-16 17:43
很不错哦,值得学习
作者: cynthiaa    时间: 2007-8-27 10:13
win_activate("{class: window,label: Calculator}");
在这里就过不了了, 是不是因为是中文系统?
作者: lantianwei    时间: 2007-8-27 12:16
标题: 回复 #12 cynthiaa 的帖子
是的 你要把win_activate("{class: window,label: Calculator}");改成win_activate("{class: window,label: 计算器}");
作者: sjc911_2005    时间: 2007-9-17 11:11
不错,学习ingsdlkfj2
作者: zuo_yue    时间: 2007-9-18 16:45
各位高手,我想问问在WR里录制脚本,在窗口中没有脚本显示是怎么回事呢?以前我用过是没有这个问题的,现在
了这个问题,我也不知道是怎么回事,请各位高手指点。不甚感激!
作者: lantianwei    时间: 2007-9-18 17:09
我也没有碰到过 建议你重装一下!
作者: wyadxx    时间: 2007-9-24 16:02
很受用的帖子,谢谢LZ 了
作者: zhangtanyu    时间: 2007-9-27 21:20
这样确实使代码的独立性增强了,但感觉偶尔用一下还好,如果整个测试都用描述性语言,就不好了。因为一旦出现被测控件的物理属性被改变,那就可能改一大片代码的,效率反而下降了
作者: lantianwei    时间: 2007-9-28 09:44
最近在项目中我真正用到了描述性编程,发现确实有其好处,我在一个窗体中有176个对象,但是我却只用了一句话来表示,效率很高吧!我觉得描述性编程对大量的相似对象以及一些未知对象非常适用,但对大部分我觉得还是用对象库比较合适.所以觉得对象库和描述性编程没有好坏之分,只有适合不适合的差别.
作者: mythxhg    时间: 2007-10-10 10:22
不错不错,不过调试是个麻烦事,因为你并不知道代码里对象描述是否正确,所以还是有必要先把对象都获取到对象库然后利用对象库确认描述方式和方法都无误,再来才是将这写对象的描述提取出来代码化.所以工作量是比较大了,不知道会不会影响自动化测试建立的进度啊.
作者: mythxhg    时间: 2007-10-10 10:28
我也曾经用GUI描述来建立脚本,理论上通过对象描述的编程可以识别出灵活变化的界面,特别是一些由数据驱动生成的界面,不过实际效果并不理想,只能说在一定程度和局限上能起到一些帮助吧,我还是倾向于非GUI的API与传统的GUI库来建立脚本.

[ 本帖最后由 mythxhg 于 2007-10-10 10:30 编辑 ]
作者: yulele    时间: 2007-10-11 13:11
非常不错的帖子!
作者: muyang327    时间: 2007-10-17 12:13
不错,支持
作者: cc_test    时间: 2007-10-25 16:56
刚学,先收,等以后再真正搞明了这知识。
作者: zkfxysy    时间: 2007-10-29 14:43
还是不太明白什么是描述性编程?
作者: michell25    时间: 2007-11-1 16:43
搞不懂
作者: Submarine    时间: 2007-11-6 11:21
不知道有没有完整介绍WR中脚本的编写教程,软件自带的介绍文档看起来还不是很清楚,求达达们给介绍一个!
作者: dss    时间: 2007-12-13 10:58
可不可以在一个脚本中既用gui库,又使用描述性编程?
作者: lantianwei    时间: 2007-12-13 12:48
标题: 回复 30# 的帖子
是可以的
两者没有什么必然的联系
但是要注意:如果你的WINDOWS对象用的是描述性编程 则该窗体对象下的子对象就不可以用对象库了
作者: lele33080801    时间: 2007-12-14 16:08
非常感谢啊
作者: 在水_一方    时间: 2007-12-15 20:16
标题: 回复 1# 的帖子
这个都是简单的,也是WR的内涵所在!!
作者: su97    时间: 2007-12-25 18:25
值得学习!!
作者: 5555    时间: 2008-1-20 21:43
路过~ 学习了!
作者: moonboy678    时间: 2008-1-21 22:46
顶下..终于花了半个多小时看懂了..
以前是用robot,但感觉它都依靠脚本,维护起来还不如重做..
现在正在努力学习WR..
非常感谢楼主分享..
作者: badguy    时间: 2008-2-25 21:39
感觉用描述性编程的话,代码写得比较慢.没有经过封装,可读性不强.
另外某些情况下,代码也不好维护
作者: melanqy    时间: 2008-4-2 18:49
请问有些WR函数参数不支持描述性编程,那应该如何处理?在一个脚本中其他函数都采用了描述性编程,这一个函数应该怎样处理?
比如:menu_select_item ( menu;item [ x,y ] );
menu        The logical name of the menu.这个变量描述中表示不支持描述性编程,应该如何处理?
作者: look心    时间: 2009-9-3 18:17
学习了!!!




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