loadrunner 关联 边界 随机_LoadRunner关联技巧与字符处理

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 01:06   36   0

a26a3c312854ac3b9b16aba4fb556cde.png

》》》推荐阅读《《《

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

2、性能测试的重要意义

3、性能分析流程及方法

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

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

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


二、为什么要关联

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

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

b4e880d12fd6b01b5be1e594064f637b.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及其强大的插件,断点排查


三、如何建立关联

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

176bfc9eacd644baa2d1abab0e8b635d.png

(1)、明确关联字段

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

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

8ed08cd7b608a3d4bb7405f3e42844ae.png

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

(2)、创建关联函数

创建关于

763f3bbba445c887c1d07e2b2e57da9e.png

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

763f3bbba445c887c1d07e2b2e57da9e.png

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

763f3bbba445c887c1d07e2b2e57da9e.png

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

763f3bbba445c887c1d07e2b2e57da9e.png

(3)、处理关联字段

此前我们在处理

lr_eval_string("{ridList_1}");

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

lr_paramarr_random("ridList");

b265d2b63f7d2cac55bd68428bbffdc0.png

5524c35b6605642ea65c0331386cb133.png

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

763f3bbba445c887c1d07e2b2e57da9e.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";
}

763f3bbba445c887c1d07e2b2e57da9e.png

763f3bbba445c887c1d07e2b2e57da9e.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";
}

763f3bbba445c887c1d07e2b2e57da9e.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、性能测试-性能调优之二

9794f943769dd9698442e8a0fc809b04.png

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP