51Testing软件测试论坛

标题: LR 并发2个用户时,一个用户可以通过,另一个用户就报错26377错,求达人解决 [打印本页]

作者: daisy02    时间: 2011-5-31 17:13
标题: LR 并发2个用户时,一个用户可以通过,另一个用户就报错26377错,求达人解决
背景:脚本是一个添加一个记录的操作,对生成的记录的ID做了一个关联。
脚本单独可以运行通过,获取的关联值也正确,在controller中并发一个用户也可以通过,获取到正确的关联值,并发2个用户时,其中一个用户可以正常通过,另一个则报错26377错。
在论坛上也搜到很多该类问题,但是和我的都不太一样,自己也尝试了一些方法,但始终不得解。
在controller中log中错误是:
Action.c(796): Error -26377: No match found for the requested parameter "logicId". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size  
logicId为我关联值,

我把整个页面的body返回值也做了关联,出错返回值如下:
throw 'allowScriptTagRemoting is false.';\r\n//#DWR-INSERT\r\n//#DWR-REPLY\r\ndwr.engine._remoteHandleException('18','0',{javaClassName:"com.A.common.util.except.UserException",message:"\u7528\u6237\u672A\u767B\u5F55,\u7981\u6B62\u64CD\u4F5C!"});\r\n".

正确的返回值应该如下这样:
throw 'allowScriptTagRemoting is false.';
//#DWR-INSERT
//#DWR-REPLY
dwr.engine._remoteHandleCallback('18','0',"T_LOGIC_DEVICE_STP-8a8083ea2fd2e3bc012fe806d58c1f46@T_PHY_DEVICE_COMMON-8a8083ea2fd2e3bc012fe806d5bf1f48");
请问该种情况是被测试系统问题,还是我脚本的问题啊?
作者: daisy02    时间: 2011-5-31 17:15
//{logicId}=T_LOGIC_DEVICE_STP-8a8083ea2fd2e3bc012fe806d58c1f46
        web_reg_save_param("logicId",
                "LB/IC=T_LOGIC_DEVICE_STP-",
                "RB/IC=@",
                "Search=Body",
//                "NotFound=warning",
                "Ord=1",
                LAST);

这是我设置的关联函数,感觉我设置的关联函数应该没有错误,
作者: 云层    时间: 2011-5-31 19:20
业务问题可能是2个用户连接另外一个用户并没有正常的读到数据页面
作者: jadeyu712    时间: 2011-5-31 20:33
你把这个关联值输出来看一下。是否是自己的关联的值嘛!
作者: lijian509    时间: 2011-5-31 22:14
1、关联值发生变化,后台已经报错
2、关联取回来的值太大了,保存不了
作者: daisy02    时间: 2011-5-31 23:35
回复 5# lijian509


   1。后台的log是报错了
  2.应该排除关联值太大的问题,我是把整个返回值取出,但是另一个用户的返回中没有包含我想要取的值
作者: daisy02    时间: 2011-5-31 23:37
回复 3# 云层


    请详细指点下,是另一个用户没有读取到正确的页面,但是为什么会发生这样的问题,是不是系统的问题啊?
作者: daisy02    时间: 2011-5-31 23:41
业务问题可能是2个用户连接另外一个用户并没有正常的读到数据页面
云层 发表于 2011-5-31 19:20



    麻烦能详细指点下不,我都已经购买了你的书啦,呵呵
作者: daisy02    时间: 2011-6-1 11:08
自己顶
作者: june871128    时间: 2011-6-1 14:15
建议可以尝试改变一下录制协议重新录制。
用web_reg_save_param这个函数进行关联时,一般情况下建议用基于脚本的URL录制,或者用HTML录制,但是勾选“仅包含明确URL的脚本”。
作者: daisy02    时间: 2011-6-1 16:37
建议可以尝试改变一下录制协议重新录制。
用web_reg_save_param这个函数进行关联时,一般情况下建议用基于 ...
june871128 发表于 2011-6-1 14:15



    按照你说的我又重新录制一边,跑了一遍还是存在上述问题,看来不是录制脚本的问题
作者: june871128    时间: 2011-6-2 11:02
回复 11# daisy02


    那你通过日志看第二个用户是否登录成功,以查服务器是否返回了正确的页面。
如果是,那你可以考虑是否是你的服务器的并发能力问题,这个主要看是否是服务器
的参数设置不当。比如tomcat服务器的最大允许线程数和最大允许连接时间是否设置合理。
作者: june871128    时间: 2011-6-2 11:42
回复 11# daisy02

在web_reg_save_param函数之前设置web_set_max_html_param_len(“5000″),试试是否是返回值太大有关。如果还出现这样的问题,那么你的任务就完成了,接下来解决问题的过程由开发来发挥了。
作者: daisy02    时间: 2011-6-2 11:59
回复  daisy02

在web_reg_save_param函数之前设置web_set_max_html_param_len(“5000″),试试是否是返 ...
june871128 发表于 2011-6-2 11:42


我尝试过,应该不是返回值太大的问题,并且另一个用户登陆时成功的,我单独做多用户并发登陆都是成功的,后台不报错,并且查看controller的log中两个用户都获得到了不同的sessionID值
作者: daisy02    时间: 2011-6-2 12:01
我觉得我脚本是没有问题的,并且曾怀疑是系统太慢,响应比较慢,我也加大了think time的时间,但是依然如此,
作者: daisy02    时间: 2011-6-2 12:04
一点头绪都没有啦,为此还被领导海批,领导们都觉得是我的问题,我也没有办法,也找不出合理的证据说是研发程序的问题。领导们都是站着说话不腰疼的角。不知道你们在做场景并发时遇到问题时,都从哪些方面入手啊?
作者: christixo    时间: 2011-6-2 13:59
session ID 必须做手工关联?还是可以自动关联。
你可以试下自动关联脚本是否可以回放,另外可以手工并发登录(我是指在不用的PC上),因为你打开同一个IE可能会利用用一个sessionid
作者: daisy02    时间: 2011-6-2 14:04
session ID 必须做手工关联?还是可以自动关联。
你可以试下自动关联脚本是否可以回放,另外可以手工并发登 ...
christixo 发表于 2011-6-2 13:59


用户等系统会获得sessionID,我用的手工关联,这个关联是没有问题的,而且每次都可以成功获得正确的值,登陆操作是没有问题,就是登陆后,并发添加记录就会有问题
作者: christixo    时间: 2011-6-2 14:09
建议你参考下
http://www.51testing.com/html/11/n-8711.html
作者: daisy02    时间: 2011-6-8 16:11
该问题的原因找到了,2个用户并发时,其实有一个用户应该是没有正确登陆,导致后来的操作请求失败,后来解决的办法是,在录制的登录脚本中注释掉了关于amf的函数:
                web_custom_request("amf",
                "URL=http://IP:port/web/messagebroker/amf",
                "Method=POST",
                "Resource=0",
                "RecContentType=application/x-amf",
                "Referer=http://IP:port/web/air/managerview/index.swf",
                "Snapshot=t10.inf",
                "Mode=HTML",
                "EncType=application/x-amf",
                "BodyBinary=\\x00\\x03\\x00\\x00\\x00\\x01\\x00\\x04null\\x00\\x02......",
                EXTRARES,
                "Url=../air/managerview/assets/images_wg/w_resize.png", "Referer=http://IP:port/web/air/managerview/index.swf", ENDITEM,
                ...
                "Url=../air/managerview/assets/gmNetResManager/swf/shanxi.swf", "Referer=http://IP:port/web/air/managerview/index.swf", ENDITEM,
                LAST);
但是不知道为什么去除这个函数后,就可以正常并发登陆了那?
我用的是lr11.使用的协议的HTTP录制的,有知道原因的吗?
作者: daisy02    时间: 2011-6-9 14:14

作者: xihong2004    时间: 2011-6-9 17:22
可能是IE缓存有关系
作者: soarsky629    时间: 2011-6-13 10:38

作者: daisy02    时间: 2011-6-13 13:07
回复 22# xihong2004


    应该不是的,我尝试过清楚IE缓存也不行,而且LoadRunner的运行配置中,也勾选了清楚每次迭代的缓存,应该和缓存没有关系吧
作者: mantou111    时间: 2011-9-16 11:41
我也遇到同样的问题,头痛中,我在登录设置了检查点是没有问题的,并发时都有登录成功,也没有发现关于amf的函数呀
作者: 398073412    时间: 2013-7-18 15:17
因为其它地方没有做关联(比如用户id),你不关联的话,虽然2个用户都登录成功,但却是使用同一个userid(录制时的userid)提交表单的,这样多半会出错




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