场景

用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。

  1. // token长度较长,web_reg_save_param默认长度为256,不够存储,所以需要该函数设置其长度(1024字节)
  2. web_set_max_html_param_len("1024");
  3. // 获取token函数,第一个参数为存储的变量名,LB和RB为左边界和右边界,ORD为第几位,NotFound为找不到时的响应
  4. web_reg_save_param("token",
  5. "LB=\"token\":\"",
  6. "RB=\"",
  7. "ORD=1",
  8. "NotFound=warning",
  9. LAST);
  10. // 打印
  11. lr_output_message("token is %s\n",lr_eval_string("{token}"));
  12. // 为接下来的请求header添加内容
  13. 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. JAVA-WEB-简单的四则运算

    首先附上选择题目数量和每行题数的JSP代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...

  2. Elastic-Job开发指南(转)

    原文地址:http://dangdangdotcom.github.io/elastic-job/post/1.x/user_guide/ 开发指南 代码开发 作业类型 目前提供3种作业类型,分别是S ...

  3. 【JAVA-算法】 截取2个字符中间的字符串

    Java Code /** 截取2个字符中间的字符串 */ private void GetMiddleString() { String str = "BB022220011BB007EB ...

  4. jmeter-post请求自动变成get,提示请求方式错误,修改协议即可

    修改协议: http  改为  https  或反之

  5. idea 高效找出全部未被使用的代码

    不得不说 idea 真的很强大,认真花一些时间,好好研究研究 idea 可以让你编写代码更加的高效,并且 idea 时不时会给你一些惊喜的,比如今天要分享的这个,就非常的惊喜: 背景 前几天,忽然又一 ...

  6. JS 定时器-setInterval、clearInterval、setTimeout

    在微信小程序里写的: // pages/splash/splash.js const app = getApp() Page({ data: { remainSecond: }, // 页面渲染完成后 ...

  7. ACM-ICPC 2018 南京赛区网络预赛Sum,线性筛处理积性函数

    SUM 题意:f(n)是n可以拆成多少组n=a*b,a和b都是不包含平方因子的方案数目,对于a!=b,n=a*b和n=b*a算两种方案,求∑i=1nf(i) 首先我们可以知道,n=1时f(1)=1, ...

  8. Codevs 1105 过河 2005年NOIP全国联赛提高组

    1105 过河 2005年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在河上有一座独木桥,一只青蛙 ...

  9. 灰度变换,gama变换,对数,反对数变换

    学习DIP第2天 灰度变换,及按照一定规则对像素点的灰度值进行变换,变换的结果可以增强对比度,或者达到其他的效果(例如二值化,或者伽马变换),由于灰度变换为针对单个像素点的灰度值进行变换,素以算法复杂 ...

  10. 第一次使用Open Live Writer写博客

    写一下来试一试,感觉还是蛮有趣的.但是我并不知道写下来的文章是什么格式的,我刚才用VS Code打开看了一下好像都是二进制格式. 7.5正式入职,已经过去七天了.等培训结束就要去Base地了,新的生活 ...