loadrunner录制0事件_LoadRunner关联技巧与字符处理

97b4738a666e573349a9ca946e066e48.png

》》》推荐阅读《《《

1、性能测试学习笔记-场景设计

2、性能测试的重要意义

3、性能分析流程及方法

4、应用系统性能调优之性能分析

一、概述       Loadrunner作为HP出品的性能测试工具,拥有太多奇妙魔法甜点供予性能测试人员享用,其中吃起来比较有嚼劲的那就是关联了。当然在关联之后我们还需要一些简单的字符处理,用以生成我们所需要的切糕、煎饼果子等。

       ps:在此我只会分享手动关联技巧。


二、为什么要关联

       通常而言我们的网络应用软件都需要输入账户密码登陆,在用户验证通过登陆以后,服务器如何确认谁是谁呢?

       此时一般而言就是SESSIONID了,如下图所示:

8c9feae52d4c6a2b969a522f5d1500eb.png

Session在 网络应用中称为“会话”,借助它可提供客户端与服务系统之 间必要的交互。因为HTTP协议本身是无状态的,所以经常需要 通过Session来解决服务端和浏览器的保持状态的解决方案。用户 向服务器发送第一个请求时,服务器为其建立一个Session,并为 此Session创建一个标识,用户随后的所有请求都应包括这个标识 号。服务器会校对这个标识号以判断请求属于哪个Session。会话 保持有效,默认状况下,直到浏览器关闭,会话才结束。

Session中存储的内容包括用户信息:昵称、用户ID、登录状 态等。      

      我们的服务器通过SESSIONID确认了,谁是谁?但是在我们所录制的脚本里面,每次发送的协议包还一直是我们所录制的内容,此时就引发了如下报错信息:

Error -26612: HTTP Status-Code=500 (Internal Server Error) for

       当然这项报错信息,除了是因为服务器无法识别用户以外。更为根本的原因在于发送给服务器的协议包,导致了服务器报500错误。

       那还有那些原因导致报错呢?

  • 数据新增修改删除,违反唯一索引(未关联页面隐藏的表关键字段)

  • 发送回服务器的字段所用字符集,不能被服务器正确解析

  • SESSIONID不被服务器认可

       以上只是简单的列举了我所经历过的现象,如果有错漏请大家多多指正。

       一般我遇到这问题,在毫无头绪的时候我是如此做的:

  • 开启浏览器F12开发人员工具,分析页面request与response

  • 如果还是难以发现其中症结,就从svn下载源码,自己搭建开发环境,回放脚本发送协议,源码中断点排查

  • 当没有源码的情况下,我们还可以考虑反编译war文件,利用Eclipse及其强大的插件,断点排查


三、如何建立关联

       建立关联我总结了以下几步:

3b41edc317087503951f0add0f9ac83c.png 

      (1)、明确关联字段

      录制结束以后,进入Tree试图,查看Response Body,如下图所示:

 

      在确定操作ID之后,我们还需要确定哪个值是数据库表里面的主键或者复合主键字段,如下图所示:

6a849f720f75c10d77092e277383e34c.png 

      在确定我们的主键为PARTY_ID之后,我们通过查询数据库得知,前五位为”10000“,长度为十四的数字为我们需要关联的另一个字段。(因涉及安全原因数据库查询结果,不能予以展示)

      (2)、创建关联函数

      创建关于

44b0f345165ff96b308e60dd1e54e74a.png

    web_reg_save_param_ex(                     "ParamName=ridList",                      "LB= r id=\"",                                    "RB= \"",                                            "Ordinal=ALL",                                  
        SEARCH_FILTERS,                              "Scope=All",                                      "RequestUrl=**********************", LAST);

44b0f345165ff96b308e60dd1e54e74a.png

 创建关于主键字段的关联,相对比较复杂。在此确定它的左边界为:,1000,右边界为:,1。关联函数如下如下:

44b0f345165ff96b308e60dd1e54e74a.png

    web_reg_save_param_ex(                     "ParamName=party_id",                  "LB=,1000",                                        "RB=,1",                                             "Ordinal=ALL",                                  
        SEARCH_FILTERS,                              "Scope=All",                                      "RequestUrl=**********************",LAST); 

44b0f345165ff96b308e60dd1e54e74a.png

      (3)、处理关联字段

      此前我们在处理

    lr_eval_string("{ridList_1}");

      在此推荐一个LR提供随机获取数组元素的函数:

    lr_paramarr_random("ridList");

1fe1212150916f86fca94acb23373e52.png

a290a381042f49f64a8c5b4906be60c8.png

  下面分享两个我所写的函数,用于获取按一定分隔符分隔的字符串中字符。类似此类字符"23sdf|2323d|jdjj,|||2323|3dd|"

44b0f345165ff96b308e60dd1e54e74a.png

//argv为源字符串,delimiters为切分分隔符,number为所需获取分隔符数char* strlick(char *argv,const char delimiters ,int number)
{ int i; int j = 0; int p = 0; char buf[64] = {0};if(number 1)
    {return "the number can't ";
    }for(i = 0;argv[i] != 0;i++)
    {
        buf[j] = argv[i];if(argv[i] == delimiters)
        {
           buf[j] = 0;if(p == number) return buf;
           j = 0;
           p++;continue;
        }
        j++; 
    } return "can't find";

44b0f345165ff96b308e60dd1e54e74a.png

44b0f345165ff96b308e60dd1e54e74a.png

//argv为源字符串,delimiters为切分分隔符, number为所需获取分隔符数 ,length为所需截取字符长度char* strputty(char *argv,const char delimiters ,int number,int length)
{int count = 0;char buf[64] = {0};int i ;for(i = 0;argv[i] != 0;i++)
    {if(argv[i] == delimiters)
        {if(count == number)
           { 
                strncpy(buf,argv + i +1,length); return buf; 
           }
       count++; continue;
        }
    }return "can't find";
}

44b0f345165ff96b308e60dd1e54e74a.png

      (4)、替换关联字段

       就替换关联字段而言,已然没有什么奥妙。不过在此推荐一个小技巧,把被处理关联字段复制起来,然后按快捷键ctrl + h全局替换相应的{value}。


四、总结

       Loadrunner应用各种函数不会使,其实官方文档才是最好的资料查找点。它给予了各种详细的应用技巧说明,确实找不到资料的时候,推荐上google。

》》》推荐阅读《《《

1、性能测试学习笔记-场景设计

2、Web站点性能调优完全攻略

3、应用系统性能调优之性能分析

4、Windows监控——性能指标详解

6、性能测试的重要意义

7、软件性能测试的本质_致命版

8、性能分析流程及方法

9、性能测试流程

10、性能测试从需求分析开始

11、性能测试指标

12、双活数据中心揭秘之—DB2 PureScale

13、循序渐进学习oracle

14、软件项目管理中的十个误区

15、功能测试方法总结及常见面试问题

16、MQ来账通道及队列配置

17、Linux命令大全整理

18、JMeter工具简单介绍

19、性能瓶颈分析方法

20、性能测试-LoadRunner操作流程之一

22、性能测试-LoadRunner操作流程之二

23、性能测试-LoadRunner操作流程之三

24、性能测试-脚本编写之一

25、性能测试-脚本编写之二

26、性能测试-脚本编写之三

27、性能测试-性能调优之一

28、性能测试-性能调优之二

7336900dbb35f2a593db0607355157d5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值