51Testing软件测试论坛

标题: 脚本中如何用循环反复刷新某一页面?其中关联的参数会递增 [打印本页]

作者: lingxdbc    时间: 2008-11-27 11:24
标题: 脚本中如何用循环反复刷新某一页面?其中关联的参数会递增
web_reg_save_param("RequestId17",
"LB=name='__dmfRequestId' value='",
"RB='>",
"Ord=1",
"RelFrameId=1",
"Search=Body",
LAST);

web_reg_find("Text=ACTIVE",
                "Search=body",
                LAST);
       
web_submit_data("greet.jsp",
"Action=https://branchautomationuat.singaporeconsumer.citigroup.net/webtop_goldenvision/custom/jsp/greet/greet.jsp",
"Method=POST",
"RecContentType=text/html",
"Referer=https://branchautomationuat.singaporeconsumer.citigroup.net/webtop_goldenvision/custom/jsp/welcome/welcome.jsp",
"Snapshot=t16.inf",
"Mode=HTML",
ITEMDATA,
"Name=__dmfFormId", "Value=Greet_0", ENDITEM,
"Name=__dmfAction", "Value=Greet_0_populateTaskGrid", ENDITEM,
"Name=__dmfHandler", "Value=Greet_0_Greet_0", ENDITEM,
"Name=__dmfHandlerArgs", "Value=Greet_0_", ENDITEM,
"Name=__dmfControl", "Value=", ENDITEM,
"Name=__dmfServletPath", "Value=/custom/jsp/greet/greet.jsp", ENDITEM,
"Name=Greet_ddl_gre_search_0", "Value=NRIC", ENDITEM,
"Name=Greet_txt_gre_key_0", "Value={NRIC}", ENDITEM,
"Name=__dmfRequestId", "Value={RequestId14}", ENDITEM,
"Name=__dmfHiddenX", "Value=0", ENDITEM,
"Name=__dmfHiddenY", "Value=0", ENDITEM,
"Name=__dmfFormclass", "Value=com.citibank.northstar.components.greetcomponents.Greet", ENDITEM,
"Name=__dmfNlsclass", "Value=com.citibank.northstar.greetNlsProp", ENDITEM,
"Name=__dmfInitDocbase", "Value=", ENDITEM,
"Name=__dmfInitDocbaseUser", "Value=", ENDITEM,
"Name=__dmfInitDocbasePassword", "Value=", ENDITEM,
"Name=__dmfInitDocbaseDomain", "Value=", ENDITEM,
"Name=__dmfInitLocale", "Value=", ENDITEM,
"Name=__dmfSerialNumber", "Value=7", ENDITEM,
"Name=__dmfClientId", "Value=_new", ENDITEM,
EXTRARES,
"URL=/webtop_goldenvision/custom/theme/citibank/icons/arrow-leftdarkgrey.gif", ENDITEM,
"URL=/webtop_goldenvision/custom/theme/citibank/icons/arrow-rightdarkgrey.gif", ENDITEM,
LAST);

上面是我在某项目中截取的一段代码.在某页面设置的字段检查点”ACTIVE”在controller并发测试时经常会找不到, 于是想加段代码以实现ACTIVE找不到时刷新一次submit请求,直到页面刷新出来找到”ACTIVE”字段为止.
上面关联的参数”RequestId#”会根据每次页面的刷新而递增.比如上面代码中如果ACTIVE找不到,再提交submit请求时,RequestID的Value就不能继续用{RequestID14}了,只能用新抓取的{RequestID17}来替代.其中{RequestID14}已经与上一层省略掉的页面关联.{RequestID17}本来是为下一个衔接的页面做的关联.请教高人如何编写脚本实现这种循环?


[ 本帖最后由 lingxdbc 于 2008-11-27 14:14 编辑 ]
作者: lingxdbc    时间: 2008-11-27 14:15
希望大家踊跃讨论一下编写这种脚本的实际应用问题.
作者: Athenth    时间: 2008-11-27 14:39
首先问下LZ检查“Active”的目的是什么?其次,用反复刷新页面的方法去得到Active,会不会影响性能测试的结果?最后,能不能简单写一条延迟语句,比如加一个Think time(数值可以设置的大一点,分析的时候也可以很方便的去掉)等到Active出现?

仅供参考,呵呵~~
作者: lingxdbc    时间: 2008-11-27 18:25
原帖由 Athenth 于 2008-11-27 14:39 发表
首先问下LZ检查“Active”的目的是什么?其次,用反复刷新页面的方法去得到Active,会不会影响性能测试的结果?最后,能不能简单写一条延迟语句,比如加一个Think time(数值可以设置的大一点,分析的时候也可以很方 ...

检查点是为了判断这个页面的响应状况是否正常. 事实上因为LR对的Pass的理解与我们对Pass的理解不一样,造成有些页面不能够完全正常显示却能够Pass的现象.  
这个项目中几乎每个主要页面都设置了类似检查点,脚本在VUGen中反复迭代回放没有任何问题.但在Controller中多用户并发时总是会有部分虚拟用户不能通过,比如8个Vuser总会有3-5个Fail掉.Log显示就是在上面这个检查点上出的问题,不能找到对应的字段.
初步判断是源程序中对于并发的支持有问题,但条件不允许去优化程序或其他.所以目前想用循环刷新的方式让这段容易报错的页面通过测试,然后再在结果中做详细说明.Think time数值已经试过设的很大,但效果不明显.
只能寄希望于反复提交Query来得到正确的响应了.

[ 本帖最后由 lingxdbc 于 2008-11-27 18:27 编辑 ]
作者: lingxdbc    时间: 2008-11-28 15:44
顶一下看有回复吗.
作者: qiguojie    时间: 2008-11-28 17:19
写一个while循环,应该可以轻松搞定这个问题吧




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