• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

LoadRunner登录脚本认证失败的原因分析

发布: 2009-6-05 08:01 | 作者: 网络转载 | 来源: 测试时代采编 | 查看: 213次 | 进入软件测试论坛讨论

领测软件测试网

LoadRunner登录脚本认证失败的原因分析

测试对象:某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个虚拟用户的脚本正确无误的通过。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: loadrunner LoadRunner Loadrunner loadRunner 登录 脚本 认证 失败


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网