场景

用loadrunner11录制脚本,处理后回放,加上检查点,报错找不到检查点对应的内容,去掉检查点,没有报错,但是打开页面没有该操作的痕迹。手动在页面上操作没有问题。

解决过程

  1. 怀疑是脚本中请求有问题或者没有作关联。在页面上通过开发者工具(F12)查看几个关键请求,都没有问题,顺序和内容都能对得上。使用到的参数和返回值,都是固定的,无须关联。
  2. 查看应用日志,看是否有报错信息。应用有十几个中心,通过dubbo调用,然而由于使用的docker容器,日志没有做改造,无法进行采集查看,而且启用的容器数量比较多,还有其他人使用,查看入口的web容器日志(6个),跑loadrunner脚本,无法看清日志内容,只能作罢。
  3. 使用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报错的更多相关文章

  1. Token报错问题

    解决token报错,CSRF令牌问题: <form method="POST" action=""> {{ csrf_field() }} < ...

  2. LoadRunner录制回放脚本RecContentType=application/json报错

    今天做一个新项目,项目系统的框架是用SSH,特意查看了一下项目源码,用的ajax提交比较多,主要的问题是该系统对IE(8~10)浏览器都不兼容,无法进行录制. 是问题,总有解决的办法! 我本机为Loa ...

  3. shell 字符串比较与脚本 too many arguments 报错

    一.问题 最近在写 shell 脚本的时候,遇到了一些小问题,就是我在判断一个字符串是否为空的时候经常报下面的错,程序是正常执行了,但是有这个提示很蛋疼,下面就是看看是什么问题导致的? [: too ...

  4. shell脚本if判断语句报错[: too many arguments的两种原因

    shell脚本,if判断语句报错[: too many arguments 我遇到过两种情况: 1.第一中情况就是网上大家说的,字符串变量中可能存在空格,shell解析时将其认为是多个参数,再进行判断 ...

  5. MySQL执行外部sql脚本文件命令是报错:unknown command

    使用source导入外部sql文件: mysql> source F:\php\bookorama.sql; -------------- source F: -------------- ER ...

  6. 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. ...

  7. Error parsing XML: not well-formed (invalid token) 报错+R文件消失解决的方法

    xml报错: 这个xml文件上右键source ->format 注意:res下的文件名称不能大写 R文件消失: 在攻克了其它问题的情况下(或者其它问题还没解决先凝视掉) 手动删除gen pro ...

  8. Jenkins在shell脚本运行docker权限报错解决

    报错环境 系统信息 Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial doc ...

  9. weblogic下 微信公众平台获取token报错

    问题描述: 开发微信公众平台,本地tomcat可以正常获取token并发送模板消息,部署在weblogic后报错,异常信息如下: java.security.InvalidKeyException: ...

随机推荐

  1. Oracle 连接排序

    ---左联操作SELECT e.* FROM hs_opt_ewb e left join hs_workform_main m on e.ewb_no=m.ewb_nowhere e.ewb_no= ...

  2. 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 ,报错 ...

  3. python--ctypes模块:调用C函数

    Python 的 ctypes 要使用 C 函数,需要先将 C 编译成动态链接库的形式,即 Windows 下的 .dll 文件,或者 Linux 下的 .so 文件 Windows 系统下的 C 标 ...

  4. Java Spring MVC工作流程

    本文是对 SpringMVC 工作流程的总结,自己一定要可以用语言描述. 名词解释: DispatcherServlet:前端控制器,是 SpringMVC 工作流程的中心,负责调用其他组件,在系统启 ...

  5. MacOS使用zsh & oh-my-zsh

    shell 俗称壳,c 语言编写的命令解析器程序,是用户使用 linux 的桥梁. 目前常用的 Linux 系统和 OS X 系统的默认 Shell 都是 bash. zsh  和 bash 相似,且 ...

  6. 前端导出pdf

    html2canvas文档地址 http://html2canvas.hertzen.com/configuration 方式一:使用html2canvas和jspdf插件实现 该方式是通过html2 ...

  7. Python基础面试题整理

    基础 Python中lambda是什么意思 Python中的pass是什么意思 作为解释型语言,Python如何运行 什么是Python的单元测试 在Python中unittest是什么 如何将数字转 ...

  8. python位运算版的算术四则运算

    #!/usr/bin/python # -*- coding: utf-8 -*- class ElementOperator: def add(self, num1, num2): # 32bits ...

  9. HTTP缓存机制和原理

    前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能.但是对于很多前端同 ...

  10. spring boot打包以及centos下部署

    spring boot打包以及部署 一.打包 springboot的打包方式有很多种.有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的.这里主要介绍如何打成j ...