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: ...
随机推荐
- Oracle 连接排序
---左联操作SELECT e.* FROM hs_opt_ewb e left join hs_workform_main m on e.ewb_no=m.ewb_nowhere e.ewb_no= ...
- ElasticsearchException: java.io.IOException: failed to read [id:0, file:/data/elasticsearch/nodes/0/_state/global-0.st]
from : https://www.cnblogs.com/hixiaowei/p/11213143.html 1.以前装过elasticsearch,重新安装elastic search ,报错 ...
- python--ctypes模块:调用C函数
Python 的 ctypes 要使用 C 函数,需要先将 C 编译成动态链接库的形式,即 Windows 下的 .dll 文件,或者 Linux 下的 .so 文件 Windows 系统下的 C 标 ...
- Java Spring MVC工作流程
本文是对 SpringMVC 工作流程的总结,自己一定要可以用语言描述. 名词解释: DispatcherServlet:前端控制器,是 SpringMVC 工作流程的中心,负责调用其他组件,在系统启 ...
- MacOS使用zsh & oh-my-zsh
shell 俗称壳,c 语言编写的命令解析器程序,是用户使用 linux 的桥梁. 目前常用的 Linux 系统和 OS X 系统的默认 Shell 都是 bash. zsh 和 bash 相似,且 ...
- 前端导出pdf
html2canvas文档地址 http://html2canvas.hertzen.com/configuration 方式一:使用html2canvas和jspdf插件实现 该方式是通过html2 ...
- Python基础面试题整理
基础 Python中lambda是什么意思 Python中的pass是什么意思 作为解释型语言,Python如何运行 什么是Python的单元测试 在Python中unittest是什么 如何将数字转 ...
- python位运算版的算术四则运算
#!/usr/bin/python # -*- coding: utf-8 -*- class ElementOperator: def add(self, num1, num2): # 32bits ...
- HTTP缓存机制和原理
前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能.但是对于很多前端同 ...
- spring boot打包以及centos下部署
spring boot打包以及部署 一.打包 springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成j ...