查看完整版本: 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

[[i] 本帖最后由 lantianwei 于 2007-8-15 14:24 编辑 [/i]]

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

知己啊

[quote]原帖由 [i]lantianwei[/i] 于 2007-7-24 17:18 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=623882&ptid=84070][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
刚刚用了QTP的描述性编程,忽然想起用WinRunner也用一下描述性编程。做了感觉还不错,呵呵。。。。
       以下是本人用WINDOW XP自带的一个计算器做的一个小例子:
####################################### ... [/quote]
我也喜欢这个个性签名

我的性格决定命运,气度[b]影响[/b]格局啊

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

不错不错,不过调试是个麻烦事,因为你并不知道代码里对象描述是否正确,所以还是有必要先把对象都获取到对象库然后利用对象库确认描述方式和方法都无误,再来才是将这写对象的描述提取出来代码化.所以工作量是比较大了,不知道会不会影响自动化测试建立的进度啊.:hug:

mythxhg 2007-10-10 10:28

我也曾经用GUI描述来建立脚本,理论上通过对象描述的编程可以识别出灵活变化的界面,特别是一些由数据驱动生成的界面,不过实际效果并不理想,只能说在一定程度和局限上能起到一些帮助吧,我还是倾向于非GUI的API与传统的GUI库来建立脚本.

[[i] 本帖最后由 mythxhg 于 2007-10-10 10:30 编辑 [/i]]

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中脚本的编写教程,软件自带的介绍文档看起来还不是很清楚,求达达们给介绍一个!:lol

dss 2007-12-13 10:58

可不可以在一个脚本中既用gui库,又使用描述性编程?

lantianwei 2007-12-13 12:48

回复 30# 的帖子

是可以的
两者没有什么必然的联系
但是要注意:如果你的WINDOWS对象用的是描述性编程 则该窗体对象下的子对象就不可以用对象库了

lele33080801 2007-12-14 16:08

非常感谢啊:lol

在水_一方 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.这个变量描述中表示不支持描述性编程,应该如何处理?
页: [1]
查看完整版本: Winrunner之描述性编程