LoadRunner11脚本小技能之同步/异步接口分离+批量替换请求头
最近在公司又进行了一次LoadRunner11性能测试,技能又get了一点,继续Mark起来!!!
一、异步/同步接口分离
之前在另一篇博文中有提到“事务拆分”的小节,即一个html页面包含了很多个接口,录制完毕后还需我们手动进行事务拆分。以上录制是基于[录制选项-常规-录制-基于HTML的脚本]进行录制的。
此种操作不仅增加后续需要手动拆分事务的繁琐,还无法区分和统计同步、异步接口的平均响应时间;而在性能测试过程中,我们是需要区分统计同步、异步接口请求,才能正确统计整个事务的响应时间。
此处从测试角度来简单描述何为同步、异步接口:同步,即执行一个接口需等待结果返回才能执行下一个接口;异步,可同时执行多个接口,不需要等待上一个接口请求返回结果后才可继续往下执行下一接口请求。
因此,异步请求接口组中,仅需计算统计耗时最长的接口的平均响应时间即可。
举个例子:一个事务中包含11个接口请求,其中10个接口为异步接口,剩余一个为同步接口。假设每个接口的平均响应时间均为1秒。当不区分同步、异步接口时,该事务的平均响应时间为11秒;而区分同步、异步接口时,该事务的平均响应时间仅为2秒。由此可看出在性能测试过程中区分统计同步、异步接口请求来计算事务的平均响应时间的重要性。
而在LoadRunner11中,我们可在[录制选项-常规-录制]中设置“基于URL的脚本”进行录制,这样就可以在脚本中完成事务拆分(即请求URL不会重定向到HTML页面下)、同步/异步接口拆分的工作。
设置录制“基于URL的脚本”后,对应的录制脚本中会出现web_concurrent_start(NULL)、web_concurrent_end(NULL)函数,分别用来标记异步请求接口组的开始、结束。
因此截图中“信息自检”事务的平均响应时间仅需计算web_url("apply.html")+异步请求组中耗时最长的接口+web_submit_data("query.v_12")的平均响应时间之和。不过事务的平均响应时间不用我们手动去统计,压测之后在分析测试结果的概要报告中各事务已根据同步、异步情况自行统计。
二、Notepad批量替换请求头
同样是在另一篇博文中有提到“添加请求头”小节,但如何在众多的url类、submit类请求前添加批量替换添加,接下来将讲解如何使用Notepad进行批量替换请求头。
将脚本复制到Notepad中,使用快捷键Ctrl+F调出查找替换窗口,在[替换]页签下填写查找目标、替换内容,查找模式选择“扩展”,最后进行全部替换即可。
查找内容:LAST);\r\n\r\n #即查找内容为“LAST);”且其后换两行的内容,其中\r\n 表示一个换行
替换内容:LAST); \r\n\r\n web_add_header("access-token","{b}");\r\nweb_add_header("loginaware","true");\r\n #标红部分为要添加的请求头
替换后的结果:
以上完成了使用Notepad进行批量替换请求头,可自行检查脚本是否替换完整并复制粘贴到LoadRunner中执行验证即可。
LoadRunner11脚本小技能之同步/异步接口分离+批量替换请求头的更多相关文章
- LoadRunner11脚本小技能之添加请求头+定义变量+响应内容乱码转换打印+事务拆分
一.添加请求头 存在一些接口,发送请求时需要进行权限验证.登录验证(不加请求头时运行脚本,接口可能会报401等等),所以需要在脚本中给对应请求添加请求头.注意:请求头需在请求前添加,包含url类.su ...
- Pycharm小技巧--使用正则进行查找和批量替换
分享一个Pycharm中使用正则的分组匹配来进行批量替换的小技巧 例如,我现在需要把HTML文件中的静态文件得到路径全部替换为django模板引用路径的格式 修改为类似这样的格式: {% static ...
- .Net Core ----通过XUnit进行接口单元测试(带请求头及参数)并用output输出结果
最近在做core的接口单元测试,所以在这拿出来分享一下,添加XUnit的nuget包 话不多说,直接上代码了: 输出结果(需要的命名空间using Xunit.Abstractions;): ITes ...
- 【转载】高性能IO设计 & Java NIO & 同步/异步 阻塞/非阻塞 Reactor/Proactor
开始准备看Java NIO的,这篇文章:http://xly1981.iteye.com/blog/1735862 里面提到了这篇文章 http://xmuzyq.iteye.com/blog/783 ...
- shell脚本小案例
1.获取远程ftp数据到本地目录 #!/bin/bash ftp -n<<! open 135.0.24.19 user exchange exchange binary cd /idep ...
- {Python之进程} 背景知识 什么是进程 进程调度 并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 multiprocess模块 进程池和mutiprocess.Poll
Python之进程 进程 本节目录 一 背景知识 二 什么是进程 三 进程调度 四 并发与并行 五 同步\异步\阻塞\非阻塞 六 进程的创建与结束 七 multiprocess模块 八 进程池和mut ...
- linux基础编程:IO模型:阻塞/非阻塞/IO复用 同步/异步 Select/Epoll/AIO(转载)
IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作.那么我们对与外部设备的操作都可以看做对文件进行操作.我们对一个文件的读写,都通过调用内核提供的系统调用:内核给我们返回一个file ...
- js的同步异步
由于js没有多线程,所以处理多任务的时候,可以用异步回调来解决.js中setTimeout.setInterval.ajax(jq中可以选择同步或异步)均会开启异步.遇到异步模块,会将其推入值任务队列 ...
- 【面试】迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)
常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据. 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTT ...
随机推荐
- python必备基础
1. 基础函数 序号 函数 说明 1 print() 打印 2 input() 输入 3 int() 转化为整形 4 float() 转化为浮点型 5 str() ...
- 二 代理模式【Proxy Pattern】 来自CBF4LIFE 的设计模式
什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀. ...
- win10电脑自动连接蓝牙设备攻略
每次在电脑上想连接蓝牙耳机,但不想手动去连接怎么办呢? 自动连接! 其实微软已经解决了这个问题,只要打开蓝牙,他就会自动匹配上次连接的设备 打开设置--->设备勾选 "显示使用&quo ...
- KingbaseES Query Mapping 查询映射功能
有过SQL优化经历的人都知道,对于有些SQL性能问题,可能需要涉及到SQL层面的修改,这不仅麻烦,而且在已上线的系统还存在很大的风险.KingbaseES V8R6 提供了query mapping功 ...
- KingbaseES 与Oracle 函数稳定性对于性能影响差异比较
一.函数的属性 KingbaseES 函数在定义时有三种稳定性级别:volatile.stable 和 immutable.默认情况下,创建函数的稳定性为volatile.以下是这三种函数的区别: V ...
- Nessus-8.11.1-x64.msi安装包
希望能给那些和我一样迷茫受挫的小伙伴们一些帮助,这玩意儿下载挺慢的,我把安装包分享出来,如果有博客园账号的,点个赞呗,CSDN那些用着别人的软件还要积分,呸! 08-18更新,截止到现在,已更新到最新 ...
- Django CSRF验证失败. 请求被中断.
当页面中form使用POST方式向后台提交时,报如下错误: 禁止访问 (403) CSRF验证失败. 请求被中断. Help Reason given for failure: CSRF toke ...
- Elasticsearch:top_hits aggregation
top_hits指标聚合器跟踪要聚合的最相关文档. 该聚合器旨在用作子聚合器,以便可以按存储分区汇总最匹配的文档. top_hits聚合器可以有效地用于通过存储桶聚合器按某些字段对结果集进行分组. 一 ...
- 几篇关于MySQL数据同步到Elasticsearch的文章---第三篇:logstash_output_kafka:Mysql同步Kafka深入详解
文章转载自: https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247484411&idx=1&sn=1f5a371 ...
- Elasticsearch:同步 MongoDB 数据到 Elasticsearch
转载自:https://elasticstack.blog.csdn.net/article/details/114639152 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写 ...