loadrunner脚本因为没有token报错
场景
用loadrunner11录制脚本,处理后回放,加上检查点,报错找不到检查点对应的内容,去掉检查点,没有报错,但是打开页面没有该操作的痕迹。手动在页面上操作没有问题。
解决过程
- 怀疑是脚本中请求有问题或者没有作关联。在页面上通过开发者工具(F12)查看几个关键请求,都没有问题,顺序和内容都能对得上。使用到的参数和返回值,都是固定的,无须关联。
- 查看应用日志,看是否有报错信息。应用有十几个中心,通过dubbo调用,然而由于使用的docker容器,日志没有做改造,无法进行采集查看,而且启用的容器数量比较多,还有其他人使用,查看入口的web容器日志(6个),跑loadrunner脚本,无法看清日志内容,只能作罢。
- 使用postman模拟loadrunner中报错的请求。将loadrunner中的请求转换在postman中实现,发现报错用户没有登录。这次采用的架构与之前不同,后端为java应用,前端为react,通过接口和后端交互,所以其实loadrunner中的请求与前端和后端交互的请求基本一致,但是loadrunner没有保存接口要求的验证信息token,同时,token经过一定时间要求更新,所以出现该问题。
解决方案
知道了问题为loadrunner请求时没有在header中加入token,就简单了很多。在登录步骤,获取token,然后,在需要token认证的步骤的header中加入token。
// token长度较长,web_reg_save_param默认长度为256,不够存储,所以需要该函数设置其长度(1024字节)
web_set_max_html_param_len("1024");
// 获取token函数,第一个参数为存储的变量名,LB和RB为左边界和右边界,ORD为第几位,NotFound为找不到时的响应
web_reg_save_param("token",
"LB=\"token\":\"",
"RB=\"",
"ORD=1",
"NotFound=warning",
LAST);
// 打印
lr_output_message("token is %s\n",lr_eval_string("{token}"));
// 为接下来的请求header添加内容
web_add_header("token","{token}");
总结
压测相关的东西,现在是在边实战边学(主要是之前搞压测的同事离职了),之前看着同事弄,感觉很简单,就是录制,然后参数化,关联,就完事了,只要懂业务就行了,自己上手了才发现,好多loadrunner方面的东西很多都不懂,还有业务方面也有很多不懂,还是要多动手多学习。
------------------------------------------分割线-------------------------------------------------------------
2019.10.16号补充:
今天发现,web_add_header只对后续的第一个请求有效(这个早就知道了其实),而如果是通过页面录制的脚本,往往请求数很多,每个请求前都加上会很麻烦,lr提供了另一个函数web_add_auto_header,自动为所有请求加上header,只需要在获取到token后,使用该函数,则会自动为后面所有请求添加header。
loadrunner脚本因为没有token报错的更多相关文章
- Token报错问题
解决token报错,CSRF令牌问题: <form method="POST" action=""> {{ csrf_field() }} < ...
- LoadRunner录制回放脚本RecContentType=application/json报错
今天做一个新项目,项目系统的框架是用SSH,特意查看了一下项目源码,用的ajax提交比较多,主要的问题是该系统对IE(8~10)浏览器都不兼容,无法进行录制. 是问题,总有解决的办法! 我本机为Loa ...
- shell 字符串比较与脚本 too many arguments 报错
一.问题 最近在写 shell 脚本的时候,遇到了一些小问题,就是我在判断一个字符串是否为空的时候经常报下面的错,程序是正常执行了,但是有这个提示很蛋疼,下面就是看看是什么问题导致的? [: too ...
- shell脚本if判断语句报错[: too many arguments的两种原因
shell脚本,if判断语句报错[: too many arguments 我遇到过两种情况: 1.第一中情况就是网上大家说的,字符串变量中可能存在空格,shell解析时将其认为是多个参数,再进行判断 ...
- MySQL执行外部sql脚本文件命令是报错:unknown command
使用source导入外部sql文件: mysql> source F:\php\bookorama.sql; -------------- source F: -------------- ER ...
- zabbix官方源替换为阿里云的zabbix源,一键脚本。(安装zabbix报错curl#18 - "transfer closed with 2988713 bytes remaining to read":15 ETA Trying other mirro)
最近突然安装zabbix总是报错,比如 (24/27): t1lib-5.1.2-14.el7.x86_64.rpm | 166 kB 00:00:00 zabbix-web-4.4.6-1.el7. ...
- Error parsing XML: not well-formed (invalid token) 报错+R文件消失解决的方法
xml报错: 这个xml文件上右键source ->format 注意:res下的文件名称不能大写 R文件消失: 在攻克了其它问题的情况下(或者其它问题还没解决先凝视掉) 手动删除gen pro ...
- Jenkins在shell脚本运行docker权限报错解决
报错环境 系统信息 Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial doc ...
- weblogic下 微信公众平台获取token报错
问题描述: 开发微信公众平台,本地tomcat可以正常获取token并发送模板消息,部署在weblogic后报错,异常信息如下: java.security.InvalidKeyException: ...
随机推荐
- Windows下安装配置Apache+PHP+Mysql环境
1.下载相关安装包 Apache下载: http://archive.apache.org/dist/httpd/binaries/win32/ ,选择httpd-2.2.25-win32-x86-n ...
- python的内置函数(一)
1.数学计算函数 abs(x) 求绝对值1.参数可以是整型,也可以是复数2.若参数是复数,则返回复数的模 complex([real[, imag]]) 创建一个复数 divmod(a, b) 分别取 ...
- qs.stringify()与JSON.stringify()区别
qs.stringify.JSON.stringify虽然都是序列化,但他俩却不是一个东西. qs是nodejs的一个模块 JSON.stringify是js自带的方法,是将json对象转换为json ...
- mybatis sql语句中转义字符
问题: 在mapper ***.xml中的sql语句中,不能直接用大于号.小于号要用转义字符 解决方法: 1.转义字符串 小于号 < < 大于号 > & ...
- 外观模式(Facade)---结构型模式
1 基础知识 定义:提供了一个统一的接口(外观类),用来访问子系统中的一群接口.特征:定义了一个高层接口让子系统更容易使用,减少了外部与子系统内多个模块的耦合. 本质:封装交互,简化调用. 优点:简化 ...
- OFDM发端硬件实现原理图
OFDM时域削峰法的详细说明可参考:https://www.cnblogs.com/achangchang/p/11037498.html
- JAVA日期格式转换---让人不得不说的故事
链接:https://my.oschina.net/xinxingegeya/blog/394821 这是给我自己参考的,大家不惜勿喷 1.举例使用 2.各种作用 3.坑(默认中文日期,加上这个就是英 ...
- 【线性代数】1-1:线性组合(Linear Combinations)
title: [线性代数]1-1:线性组合(Linear Combinations) toc: true categories: Mathematic Linear Algebra date: 201 ...
- 阿里云Ubuntu安装LNMP环境之Nginx
在QQ群很多朋友问阿里云服务器怎么安装LNMP环境,怎么把项目放到服务器上面去,在这里,我就从头开始教大家怎么在阿里云服务器安装LNMP环境. 在这之前,我们先要知道什么是LNMP. L: 表示的是L ...
- windows 安装python2.7
下载:https://www.python.org/downloads/release/python-2716/ 安装即可. 设置环境变量 进入C:\Python27,修改python.exe 为py ...