51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 16691|回复: 68
打印 上一主题 下一主题

[求助] loadrunner压asp.net网站 遇到问题三个 求解决方法[愿意支付RMB800元][已失效]

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-7-3 16:43:50 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
服务器:双至强2.8CPU, 2G内存,Windows 2003 标准版,.Net FrameWork 2.0,IIS6.0,SQLServer 2005 标准版
LoadRunner Controller: P4 640 2G内存,Windows 2000 Server,LoadRunner 7.8+官方中文包

服务器上有asp.net网站,包括一个论坛和文章发布系统。
服务器上网站上程序直接入库1万用户供测试用:user1--usser10000

loadrunner录制用户登录,点文章链接(弹出新窗口),这些操作.

运行Controller,手动方案,“同时加载所有Vuser”,Vuser数5,开始方案,多次测试,结果每次都有1-2个用户失败,经过检查发现两个问题:

1 网站的首页default.aspx中,IE打,开查看源文件,很靠前的位置,存在如下内容:
--------------------------
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTUzMzI1MTYxN2QYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgoFP2N0bDAwJEhlYWRDb250ZW50JERlZmF1bHRIZWFkZXIxJERlZmF1bHRMb2dpbjEkTG9naW5JbWFnZUJ1dHRvbgVIY3RsMDAkTWFpbkNvbnRlbnQkRGVmYXVsdDEkaW5xdWlyeTEkMjIyYzMwYTktNzU3Ni00MzA2LTk3ZTYtZGY0MTkzMGQ4NDViBUhjdGwwMCRNYWluQ29udGVudCREZWZhdWx0MSRpbnF1aXJ5MSRiOWE5NzBhYy0wYjUyLTQ5ZjEtOTlmMC05YTEyOTA4ZTc1MWEFSGN0bDAwJE1haW5Db250ZW50JERlZmF1bHQxJGlucXVpcnkxJDFmNTZhMjQ3LWZkZTktNGRjMC1hMDc4LTgyMjViY2RmMjJmNAVIY3RsMDAkTWFpbkNvbnRlbnQkRGVmYXVsdDEkaW5xdWlyeTEkMDI1MzVkYTctYjQ5NC00Mzk5LTk3NmMtMDBmMTczNTZhMWI5BUhjdGwwMCRNYWluQ29udGVudCREZWZhdWx0MSRpbnF1aXJ5MSQ1MjdjZDY4Ni04YjZmLTRjZjgtYTE2ZS1lNDc3NWJjOGY1ZmUFSGN0bDAwJE1haW5Db250ZW50JERlZmF1bHQxJGlucXVpcnkxJDY0MTIyYTQyLTI0YTItNDMyMC1iNjNiLTE1ODk5ZjFmNzk4YwVIY3RsMDAkTWFpbkNvbnRlbnQkRGVmYXVsdDEkaW5xdWlyeTEkNjRiYWYzZTUtNDE0Ny00ZWY0LTgyMzAtNjE5N2QxM2M2MjNhBUhjdGwwMCRNYWluQ29udGVudCREZWZhdWx0MSRpbnF1aXJ5MSQyNzVlNzE2YS0xMjAzLTQ2NzktYmUwMi04M2U3ODhmZWFlOTcFSGN0bDAwJE1haW5Db250ZW50JERlZmF1bHQxJGlucXVpcnkxJGU5ZmNlYjNjLTJhOTgtNGQ3OS04OTJjLThhN2ExMDQ3YjM3YjDuiOnVXoWOEqr1oTiU/RZceH7O" />
--------------------------
.net程序员解释这是保存页面上控件信息的,比如输入框,下拉菜单的状态等等。  如果手工打开IE,慢速的一次一次的刷新,每次刷新后查看源文件,都是如上内容。如果按着F5不动(快速刷新页面),就会出现如下内容:
--------------------
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTUzMzI1MTYxN2QYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFP2N0bDAwJEhlYWRDb250ZW50JERlZmF1bHRIZWFkZXIxJERlZmF1bHRMb2dpbjEkTG9naW5JbWFnZUJ1dHRvbqEwBCUQGl7HaTuz68uaD59YwVyR" />
--------------------
可以看到ViewState变少了。

如果是手工操作,不管ViewState是多的状态还是少的状态,用户都能正常登录进入系统。
但是在Loadrunner中,5个用户中失败的1个或者2个,查看Loadrunner的日志,可以看到ViewState总是第二种情形,也就是说,Loadrunner中,只要ViewState中的内容变少,则这个用户无法登录成功,表现为直接跳到报错页面,日志如下:
---------------------
Action.c(27): 通知: 参数替换:参数“Siebel_Analytic_ViewState2”=“/wEPDwUKMTUzMzI1MTYxN2QYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFP2N0bDAwJEhlYWRDb250ZW50JERlZmF1bHRIZWFkZXIxJERlZmF1bHRMb2dpbjEkTG9naW5JbWFnZUJ1dHRvbqEwBCUQGl7HaTuz68uaD59YwVyR”
Action.c(27): 通知: 参数替换:参数“NewParam”=“user5”
Action.c(27): “http://192.168.0.1/Default.aspx”(RelFrameId=1)的 t=1509ms: 275 个字节响应标头
Action.c(27):     HTTP/1.1 302 Found\r\n
Action.c(27):     Date: Mon, 03 Jul 2006 08:26:36 GMT\r\n
Action.c(27):     Server: Microsoft-IIS/6.0\r\n
Action.c(27):     X-Powered-By: ASP.NET\r\n
Action.c(27):     X-AspNet-Version: 2.0.50727\r\n
Action.c(27):     Location: /Error.aspx?aspxerrorpath=/Default.aspx\r\n
---------------------

这是第一个问题,希望有高手能够解决。
a 这是.net程序本身的问题,还是loadrunner的问题。
b 如果是loadrunner的问题,应该如何解决。
c 如果是.net程序问题,应该如何解决。

34楼和41楼有对这个问题更详细的说明:       移步到第三页看34楼和41楼
47楼有不是很完美的解决方法:移步到第四页看47楼

[ 本帖最后由 redsong 于 2006-7-7 11:14 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

68#
发表于 2016-6-15 23:23:15 | 只看该作者
不知道楼主问题解决了没有。我看也是06年的帖子了。。
现在我也遇到类似的问题,2016年了,10年了。。

问题是这样的。
伪代码,操作步骤如下:
1、打开页面:
    web_reg_save_param("viewstate1");
    web_url 方法,get页面
    此时,可以得到get消息返回的viewstate值
2、查询:
    web_reg_save_param("viewstate2");
    web_custom_request(post方法,viewstate = {viewstate1},name=某某人) //伪代码,查询这步的post,要用到第一步的viewstate值,这里可以获取,没有问题。
    此时,在查询框下方会查出几十条数据
3、勾选记录点击确定【问题就在这里】:
    web_custom_request(post方法,viewstate = /Wwjfwejfwoefwejof) //此处viewstate省略几千字符
问题如第三步所描述的。在第二步中,查出了记录。第三步,勾选某条记录【第二步name参数查出的人名,任选一个】,并不会产生HTTP消息,只有点击确认按钮,才会发送post消息,此时,post消息体中的viewstat不能从第二步获取,因为第二步获取的viewstat2这个参数,是没有勾选任何记录的,一旦使用了这个viewstat2,第三步的post就会报错(报为勾选任何记录)

请问还有好的解决方法?
回复 支持 反对

使用道具 举报

该用户从未签到

67#
发表于 2006-7-7 17:52:09 | 只看该作者

对于第2个问题 楼主有代码的话 把出错代码贴出来

对于第2个问题 楼主有代码的话 把出错代码贴出来~
看来我怀疑的没错~但是这种错误代码是不太好找的~
多见一些错误模式~对大家的工作都有好处
回复 支持 反对

使用道具 举报

该用户从未签到

66#
发表于 2006-7-7 15:39:10 | 只看该作者

思考

看了大家的贴子,发现自己思考问题的能力不够,多向大家学习.
以后有什么问题还需要向大家多请教.
回复 支持 反对

使用道具 举报

该用户从未签到

65#
发表于 2006-7-7 11:32:26 | 只看该作者
呵呵,奖金失效没关系,能够交到你这么一个朋友是更大的收获。
看了你分析问题解决问题的态度和方法,让我很是佩服,以后多交流,有机会去北京一定宰你一顿,呵呵。
同时你要是有机会来厦门,也欢迎来找我。
回复 支持 反对

使用道具 举报

该用户从未签到

64#
 楼主| 发表于 2006-7-7 11:13:22 | 只看该作者
再次强烈感谢所有回帖,关注的兄弟们
感谢51testing网站给了大家一个畅所欲言的平台!
感谢xingcyx兄弟,奖金没有送出去不是我的错,来北京的话不电联一下一起吃顿饭就是你的不对了。


愿所有的公司都像重视客户,重视利润,重视股票价格,重视企业信誉一样重视测试,也希望我们的薪水节节攀升!


此贴结贴,奖金失效。sdlkfj3
回复 支持 反对

使用道具 举报

该用户从未签到

63#
 楼主| 发表于 2006-7-7 11:05:29 | 只看该作者
第二个问题:

2楼提问第二个问题的时候,有这么两句话:
-------------------
传递这个用户名 用的是session
这个问题也请教大家是.net程序还是loadrunner的问题,应该如何解决。
-------------------

我想,web页面之间记录和传递数据(不是页面[客户端]和服务器之间传递数据),目前只有两种方法cookie和session
cookie因为安全性和可以被客户端禁止的问题而越来越少的被使用,所以我们这个网站用的session
发现问题之后,我的思路同样是先判断是谁的问题,研发?测试?只有先搞清楚谁应该解决这个问题之后才能往下走,
所以我问了"是.net程序还是loadrunner的问题",不过看起来搞测试的兄弟们还是太老实,太敬业了,上来都想先尝试解决这个问题。

这几天中,我屡次尝试手工操作,结果真的还让我重现了问题:

开两个IE,分别用user1 user2登录, 各自点开一个弹出新窗口的链接,分别显示欢迎user1 欢迎user2
按住一个IE(欢迎user2)的F5键疯狂刷新,停止,发现变成了另外一个(欢迎user1),再次按住另外一个IE(欢迎user1)的F5刷新,停止,发现变成了(欢迎user2)。到这里为止,问题就可以让研发解决了。

不过手工操作很难测试来这种情况,通常是反复操作多次,才能出现,也没有什么规律,并且一下一下的刷新不行,必须是很快速的刷新(和第一个问题有些相近)。

第三个问题:
三楼已有解决方案
回复 支持 反对

使用道具 举报

该用户从未签到

62#
 楼主| 发表于 2006-7-7 10:47:18 | 只看该作者
最后一贴.还有一个小时就失效了。让我把这个帖子完成吧。

首先感谢所有关注和回帖的兄弟们,感谢你们对问题的认真回答,感谢你们独到的分析,感谢你们在QQ上耽误自己下班的时间陪着我解决问题,其中的兄弟们包括  xingcyx  shongwei fish_yy suchboy ilovejolly Zee kernzhang xiao_jie98 AlanStone lbzhong ldneliza yuezhiyin Koffer swordsman lotus

接着来说问题:

第一个问题:
根据1楼 34楼 41楼的叙述,问题的情形大家都清楚了,不在重复,多数兄弟都判断是关联的问题,就是我没有对viewstate设置好手动关联。在发贴之前我还不知道什么是关联,不过现在已经知道了。关联就是服务器给浏览器端传过来的数据,如果有不同的话,loadrunner的虚拟用户,可以用把这些不同的值返回给服务器。
但是我在41楼贴出来的内容 和 4楼贴出的脚本中已经包含的内容:
----------------------------
        web_reg_save_param("Siebel_Analytic_ViewState2",
                "LB/IC=ViewState\" value=\"",
                "RB/IC=\"",
                "Ord=1",
                "RelFrameId=1",
                "Search=Body",
                LAST);

"Name=__VIEWSTATE", "Value={Siebel_Analytic_ViewState2}", ENDITEM,
----------------------------
足够说明:第一个问题和“关联”没有关系
所以在41楼的最后两句,问题被精简成:
-----------------------
IE手工操作的时候 如果刷新出来viewstate的内容少,则能够正常登录
loadrunner压的时候 如果vuser(模仿IE)刷新出来的viewstate内容少,则不能够正常登录

-----------------------
之后公司的一个作技术的同事(互联网上非常出名哦)一句话给了我一个思路

按照他的思路,才有了47楼的不完美解决方法,内容如下:
-----------------------------------
第一个问题暂时解决鸟   过程如下。

脚本中:

        web_reg_save_param("Siebel_Analytic_ViewState2",
                "LB/IC=ViewState\" value=\"",
                "RB/IC=\"",
                "Ord=1",
                "RelFrameId=1",
                "Search=Body",
                LAST);

全部注释掉

同时
"Name=__VIEWSTATE", "Value={Siebel_Analytic_ViewState2}", ENDITEM,
替换为
"Name=__VIEWSTATE", "Value=/wEPDwUKMTUzMzI1MTYxN2QYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgoFP2N0bDAwJEhlYWRDb250ZW50JERlZmF1bHRIZWFkZXIxJERlZmF1bHRMb2dpbjEkTG9naW5JbWFnZUJ1dHRvbgVIY3RsMDAkTWFpbkNvbnRlbnQkRGVmYXVsdDEkaW5xdWlyeTEkMjIyYzMwYTktNzU3Ni00MzA2LTk3ZTYtZGY0MTkzMGQ4NDViBUhjdGwwMCRNYWluQ29udGVudCREZWZhdWx0MSRpbnF1aXJ5MSRiOWE5NzBhYy0wYjUyLTQ5ZjEtOTlmMC05YTEyOTA4ZTc1MWEFSGN0bDAwJE1haW5Db250ZW50JERlZmF1bHQxJGlucXVpcnkxJDFmNTZhMjQ3LWZkZTktNGRjMC1hMDc4LTgyMjViY2RmMjJmNAVIY3RsMDAkTWFpbkNvbnRlbnQkRGVmYXVsdDEkaW5xdWlyeTEkMDI1MzVkYTctYjQ5NC00Mzk5LTk3NmMtMDBmMTczNTZhMWI5BUhjdGwwMCRNYWluQ29udGVudCREZWZhdWx0MSRpbnF1aXJ5MSQ1MjdjZDY4Ni04YjZmLTRjZjgtYTE2ZS1lNDc3NWJjOGY1ZmUFSGN0bDAwJE1haW5Db250ZW50JERlZmF1bHQxJGlucXVpcnkxJDY0MTIyYTQyLTI0YTItNDMyMC1iNjNiLTE1ODk5ZjFmNzk4YwVIY3RsMDAkTWFpbkNvbnRlbnQkRGVmYXVsdDEkaW5xdWlyeTEkNjRiYWYzZTUtNDE0Ny00ZWY0LTgyMzAtNjE5N2QxM2M2MjNhBUhjdGwwMCRNYWluQ29udGVudCREZWZhdWx0MSRpbnF1aXJ5MSQyNzVlNzE2YS0xMjAzLTQ2NzktYmUwMi04M2U3ODhmZWFlOTcFSGN0bDAwJE1haW5Db250ZW50JERlZmF1bHQxJGlucXVpcnkxJGU5ZmNlYjNjLTJhOTgtNGQ3OS04OTJjLThhN2ExMDQ3YjM3YjDuiOnVXoWOEqr1oTiU/RZceH7O", ENDITEM,

兄弟们看明白了吧,相当于我的IE在欺骗服务器, 就是说不管在刷新完成页面后,服务器给了浏览器什么值,都不管,就直接提交回去这串多的,正确的值。
-----------------------------------
用了这个办法,其实不是解决了问题,而是避开了问题。在没有找到更好的解决方法之前,也只能如此。


在这插几句别的,我不知道其他的公司如何,在我所在的公司,我自己崇尚的是“各司其职,各负其责”。但是往往某些时候,测试和研发是一个对立的方面,总会出现互相推卸责任的状况。就这个问题来说,最早的时候,似乎责任全部在我,因为手工操作,没有任何错误的程序在Loadrnner中报错。不过现在看起来,两方面都有责任。
研发:搞清楚为什么快速刷新IE之后查看源文件ViewState会变短。
测试:搞清楚为什么ViewState变短之后,手工操作正常,Loadrunner中不正常。

[ 本帖最后由 redsong 于 2006-7-7 17:15 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

61#
发表于 2006-7-7 10:35:54 | 只看该作者
问题一:同意Koffer 的观点使用web_reg_save_param()进行关联,对于楼主关心的这个值长或短,可以在这个函数前加一个web_set_max_html_param_len (const char *length )函数来设置大小,以摆脱默认viewstate值大小限制

问题二:如楼主所说,手工测试,显示没有问题,这说明程序没有出错,是脚本的总题.楼主给的出错信息,不清淅,请详细说明,描述如下,最初录制脚本,查看r的日志,会出现登录的时候是“user???”,第二页显示“欢迎 user?”;脚本参数化后,第二个Vuser日志显示是user????,第三个Vuser日志显示是user????.   建议把脚本相关部分贴上来
怀疑此问题,可能脚本某处有隐含值需要进行关联,显示才会正确
回复 支持 反对

使用道具 举报

该用户从未签到

60#
发表于 2006-7-6 17:41:58 | 只看该作者

关注!!!!

楼主问题解决之后一定要说明怎么解决的啊.我也遇到和你一样的情况,最终由于无法解决而放弃了.
这个问题困惑我N久了啊.
我会一直关注的!!!
回复 支持 反对

使用道具 举报

该用户从未签到

59#
发表于 2006-7-5 18:01:11 | 只看该作者

检查程序吧!!

检查程序吧~看看usename字段是怎么传递的~除了手动 检查 还没想出什么太好的方法
回复 支持 反对

使用道具 举报

该用户从未签到

58#
发表于 2006-7-5 11:22:40 | 只看该作者
呵呵,楼上对第一个问题说得很清楚,佩服佩服!
不过楼主的问题正好跟我们平常的理解相反,如果对viewstate做了关联,会发生他说的时而变长时而变短的情况,而且当他在手工操作的时候,不管viewstate是长还是短,都可以登录成功,而如果在脚本里就不行了,对这个现象我就觉得很奇怪。所以他最后才采取了不得已的办法,取消了关联。
回复 支持 反对

使用道具 举报

该用户从未签到

57#
发表于 2006-7-5 10:27:56 | 只看该作者
从LoadRunner的角度来看是不需要了解.Net的Session机制如何运作的。
LoadRunner只是从最终产生的HTML文件中收集、查找数据,从客户端发送给服务器端。

1. 你所说的长短ViewState 只是你在页面上操作多少导致的长短,.Net 会产生很多ViewState数据保存用户的操作信息,在你刷新页面的时候数据仍然保留,操作的过程越长,数据量越大,ViewState就越大,例如,你页面上有一个很大的DataGrid,那么你可以看看ViewState相当长。
    解决:不管ViewState多长或者多短,都需要关联。一般LR会自动关联,但是如果没有自动,就要手工操作了。就用web_reg_save_param()保存下来ViewState的数据。


2. 页面中某个地方没有完全参数化,仔细检查,或者跟Developer讨论是否这个东西加密了。然后在某个地方有解密出来了。

3. No comments.
回复 支持 反对

使用道具 举报

该用户从未签到

56#
 楼主| 发表于 2006-7-5 08:57:08 | 只看该作者
原帖由 yuezhiyin 于 2006-7-4 18:46 发表
第2个问题不是参数化的问题,应该是session的问题~

参数化只在你最开始的事取那个列里的值~取完以后就拉倒了~
剩下的都交给session处理~除非你在最后弹出页面的时候又参数化了一遍~

怀疑 session中 有荣誉 ...



同样是怀疑程序的问题。目前的状况是手工测试的时候,此问题无法出现,导致不能说服研发人员。
回复 支持 反对

使用道具 举报

该用户从未签到

55#
发表于 2006-7-4 18:46:06 | 只看该作者

第2个问题不是参数化的问题

第2个问题不是参数化的问题,应该是session的问题~

参数化只在你最开始的事取那个列里的值~取完以后就拉倒了~
剩下的都交给session处理~除非你在最后弹出页面的时候又参数化了一遍~

怀疑 session中 有荣誉数据~或者堆栈没清空什么的~我不懂 .net 凭经验心思着说~
请多包涵
回复 支持 反对

使用道具 举报

该用户从未签到

54#
发表于 2006-7-4 18:24:54 | 只看该作者

第一个问题不干关联什么事

第一个问题不干关联什么事
回复 支持 反对

使用道具 举报

该用户从未签到

53#
 楼主| 发表于 2006-7-4 18:24:18 | 只看该作者
原帖由 yuezhiyin 于 2006-7-4 18:19 发表
那个替换是不对的~你都强制换完了~那还测啥啊~


所以说这是一个不完美的解决方法,继续求更完美的方法。
回复 支持 反对

使用道具 举报

该用户从未签到

52#
 楼主| 发表于 2006-7-4 18:23:29 | 只看该作者
感谢49楼
第一个 问题暂时搁置 等明天问过研发经理之后再继续
第二个 试过多次,单独回放的时候因为只是user1这个用户 所以不会出这样的问题,log里边看不到,所以内置IE里边肯定也看不到。
第三个 估计我也搞定了。很莫名其妙,一直都不成,突然就成了。 (参见三楼的解决方法)
回复 支持 反对

使用道具 举报

该用户从未签到

51#
发表于 2006-7-4 18:22:25 | 只看该作者

我在JSP中遇到过这样问题

有一个静态集合存储 用户信息~等信息不要了~集合就被清空~当你并发的时候~几个用户争抢集合~后一个把前一个的信息清空了~我怀疑是这样的
回复 支持 反对

使用道具 举报

该用户从未签到

50#
发表于 2006-7-4 18:19:16 | 只看该作者

那个替换是不对的~你都强制换完了~那还测啥啊~

那个替换是不对的~你都强制换完了~那还测啥啊~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 09:33 , Processed in 0.087320 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表