LoadRunner的几个问题

我在用loadrunner的时候,有几个问题比较困惑。想请教网上的高手(基于WEB—test):
1.我用Virtual user录制教本要在登陆时设置Rendzvous是要在点“登陆”按钮前设还是要在点登陆按钮后设置?
2.在做压力测试的时候服务器的各个性能都能看到变化,但好像对我们实际操作没什么影响。比如我们有个程序在实际操作的时候如果有100个人同时登陆,那么再来登陆就再也登陆不进去了,但我们用LoadRunner也用100个人来模拟时去能却能轻松的登陆进去,不知是什么原因。
3.在用loadrunner来模拟操作时看不到SQLSERVER的连接数有什么变化,我是用sp_who来追踪的。连接数保持不变。
4.我录制登陆页面的脚本后修改登陆的密码和帐号,发现就是密码错误也能顺利通过测试。如果这样的话我怎样把登陆帐号和密码设置成参数呢?搞不懂啊。
5.你们在使用这个软件时是不是觉得他们模拟出来的数据跟实际操作的出入不大,能否分享下成果,不胜感激。
---------------------------------------------------------------

简单说一下我的想法:
1 假如你是要模拟N个用户执行登陆操作,当然是在登陆前设置Rendzvous。集合点(自己翻译的)应该设置到希望并发的操作前面
2 不知道你的脚本是怎样的,也不知道你说的有个程序指什么程序,但有可能是LoadRunner中的100个人并不是同时登陆,可能只有20个人在同时执行登陆操作;而前面的那个可能就是100个人同时登陆。另外可能还有thinktime的问题
3 sqlserver的连接数本来就应该没有什么变化,假如随着用户数的增加,连接数大幅度增加,说明程序代码中没有释放连接,这样程序很快会crash
4 loadrunner记录的只是请求,请求各个页面(page),虽然密码错误,但登陆后的各个页面它还能访问到,说明你的验证机制不好,可以绕过登陆页面,直接访问其中的页面,安全性很有问题
5 loadrunner功能强大,关键是如何使用。比较重要的有 脚本(我认为是最关键的)controller的设置,还有结果的分析。不知道你是怎么分析结果的

LoadRunner登录脚本认证失败

发现Loadrunner参数化,是按照它内置的机制执行的,符合这个机制,编译就能通过。后来在Gen中的Tools—>general option中找到了可以更改这个机制的地方,修改完了之后,脚本再次编译,这次OK了。


  测试对象:某Web即时通讯系统(以下称WebIM)
  开发语言:XML

  数据通讯协议:Web(HTTP/HTML)协议、Windows Sockets协议

  底层数据库:Mysql

  服务器操作系统:Redhad 4

  脚本实现功能:登入系统后,再退出系统。

  问题1:录制开发的脚本可以成功回放,但是数据库的logout表里却查不到“登出”的用户?

  分析:录制的时候只选用了单协议:Web(HTTP/HTML)协议,而WebIM的实现不只用到了Web(HTTP/HTML)协议,也用到了 Windows Sockets协议。在定位了问题的"原因"之后,笔者尝试录制多协议的脚本,结果回放失败。回放失败是因为Webim在登录的过程中有个加密验证的过程。脚本回放时提交了上一次的经过Sha1加密后的密文,而此时服务器端的Sha1密文已经发生了改变。从而导致了失败。

  解决方法:

  a、使用双协议录制脚本

  b、开发Sha1算法的DLL文件并在脚本中调用。

  问题2:录制的脚本中并没有捕获到服务器返回的Session ID?

  分析和方案:Webim的开发用到了XML和Windows Sockets协议,因此按照正常的思路,Loadrunner在录制脚本时,也应该采用XML和Windows Sockets协议,但实际情况是这样的,录制的脚本中并没有捕获到服务器返回的Session ID。既然公司内网的Jabberd服务器有专门的测试客户端,笔者决定通过这个客户端录制脚本,由于这个客户端和服务器的通信协议是Windows Sockets,因此录制协议也采用了这个最底层的协议。这一次,录制的脚本中捕获到了服务器返回的Session ID。为了保证脚本回放时能够动态的获取到这个Session ID,需要做“关联”操作,笔者使用了lrs_save_searched_string()函数,对脚本做了处理。

  问题3:如何调用Dll来对服务器返回的序列和Password加密,以产生Sha1的密文?

  分析和方案:脚本中加载了Dll库文件后,在调用库文件中的加密函数对Session ID+Password字符序列加密时,必须采用如下格式endes(a,b),其中的a代表源序列,b代表密文。经过这样的步骤处理后,调试脚本,就可以看到密文了。

  问题4:Buf中参数化密文后,脚本还是不能编译通过,存在语法错误?

  分析和方案:发现Loadrunner参数化,是按照它内置的机制执行的,符合这个机制,编译就能通过。后来在Gen中的Tools—>general option中找到了可以更改这个机制的地方,修改完了之后,脚本再次编译,这次OK了。

  问题5:错误提示:没有足够的虚拟用户分配给这个NewPara?

  分析和方案:loadrunner中在对用户名和密码或其他数据参数化了以后,不要将参数删除后,重新参数化,否则就会出现上述问题。笔者决定重新录制脚本,重新参数化,重新修改脚本。事实证明这样做是正确的,编译运行后,5个虚拟用户的脚本正确无误的通过。

    web_set_user("ajco/tina","tina@2848804","172.18.14.172:80");

在这个前面加上:ajco是机器名,tian是用户名,“密码”,“ip和端口号”

web_url("Service1.asmx_2",
  "URL=http://172.18.14.172/test/Service1.asmx?op=QueryPoliceList",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=http://172.18.14.172/test/Service1.asmx",
  "Snapshot=t2.inf",
  "Mode=HTTP",
  LAST);

 Loadrunner并发用户与集合点讨论

http://qsfwy.javaeye.com/blog/203061

MS系统下Quality Center9.0安装部署

http://www.51testing.com/?uid-205125-action-viewspace-itemid-92966

http://www.51testing.com/?uid-64098-action-viewspace-itemid-124882

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章