[转帖]jmeter编写测试脚本大全
目录
3.1.5 请求 /xxx/xxxx/getSession获取 token与key
3.1.6 请求 /xxx/xxx/getVerificationCode?token=${token}获取验证码
一、背景
使用jmeter编写脚本时,有好多注意事项,也写好了好多博客,但是很散。
这次统一整合一下。
二、按照功能划分
2.1 加密处理、验签处理
jmeter脚本处理加密验签_jmeter加密_做测试的喵酱的博客-CSDN博客
2.2 jmeter 使用beanshell 编写脚本
jmeter 使用beanshell 编写脚本_beanshell脚本_做测试的喵酱的博客-CSDN博客
2.3 jmeter脚本报错大全
jmeter写脚本报错大全_jmeter录制报错_做测试的喵酱的博客-CSDN博客
2.4 jmeter打印log
jmeter脚本调试_jmeter调试_做测试的喵酱的博客-CSDN博客
2.5 jmeter压测java代码
jmeter 压测java代码_jmeter压测java代码_做测试的喵酱的博客-CSDN博客
2.6 jmeter读取数据保证每个线程拿到的数据唯一
jmeter读取数据保证每个线程拿到的数据唯一_做测试的喵酱的博客-CSDN博客
2.7 jmeter设置并发量线程数为变量
jmeter设置并发量线程数为变量_做测试的喵酱的博客-CSDN博客
2.8 beanshell 将数据写入到本地txt
-
import java.io.BufferedReader;
-
import java.io.BufferedWriter;
-
import java.io.FileReader;
-
import java.io.IOException;
-
-
FileWriter fileWriter = new FileWriter(new File(vars.get("data_file_path_token")), true);
-
BufferedWriter writer = new BufferedWriter(fileWriter);
-
-
-
String TOKEN = vars.get("token");
-
writer.append(TOKEN+"\r\n");
-
writer.close();
-
fileWriter.close();
data_file_path_token 为本地文件的路径
2.9 beanshell 读取本地txt
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.IOException; String data_file_path = "/xxx/user.txt"; FileReader filereader = new FileReader(new File(data_file_path)); BufferedReader reader = new BufferedReader(filereader); String line = reader.readLine(); reader.close(); filereader.close();
三、按照场景划分
3.1 登录场景
3.1.1 背景
整个登录场景,是由三个接口组成的。
1、获取token 与 key
/xxx/xxxx/getSession
2、获取图片验证码
需要拿着1中的token去获取图片验证码。
/xxx/xxx/getVerificationCode?token=${token}
3、将1中获取的token,放到header里。
将1中获取的key用来对密码加密
这个请求header中,还需要生成一个验签。
/xxx/xxx/login
3.1.2 整体脚本结构

3.1.3 参数化
参数化的处理:循环控制器+CSV数据文件设置
jmeter读取数据保证每个线程拿到的数据唯一_做测试的喵酱的博客-CSDN博客
3.1.4 HTTP信息头管理器
信息头中,很多都是变量。token 、key、验签sign 都是变量。

3.1.5 请求 /xxx/xxxx/getSession获取 token与key
直接去/xxx/xxxx/getSession,然后在返回值中,提取token与key

1、http请求

2、提取token

3、提取 key

3.1.6 请求 /xxx/xxx/getVerificationCode?token=${token}获取验证码
开发将登录的时候,验证码写死了一个固定值。
getVerificationCode?token=${token} 请求,需要带着上一个请求提取的token
1、http请求

3.1.7 /xxx/xxx/login
进行登录 /xxx/xxx/login
1、login请求中的参数,是需要经过加密处理的。
所以设置参数为消息体。消息体为一个变量${param}

2、预处理来处理header与传参数
header所需的信息,传参所需要的信息。都在预处理中,进行处理。最后将我们所需要的token、sign、param吐出来。
jmeter脚本处理加密验签_jmeter加密_做测试的喵酱的博客-CSDN博客
3.2 查询商品详情
3.2.1 背景
查询商品的详情,避免缓存问题,要使用参数化,根据不同的商品id去查询商品详情
/xxx/xxx/commodity?id=${id}
3.2.2 整体结构

3.2.3 信息头管理
我们用同一个用户信息,去查询不同商品的详情。所以这里信息头写死就好了。
3.2.4 参数化处理
jmeter读取数据保证每个线程拿到的数据唯一_做测试的喵酱的博客-CSDN博客
3.3 获取批量token,并写到本地文件中
3.3.1 背景
我需要获取2万个用户登录后的token,写到 本地txt文件中。
3.3.2 脚本结构

3.3.3 用户自定义变量
这里定义了我们写入txt文档的路径

3.3.4 循环控制器
想要获得20000个token,就要登录20000个不同的用户。这里使用循环控制器读取20000个不同的用户信息。
jmeter读取数据保证每个线程拿到的数据唯一_做测试的喵酱的博客-CSDN博客
3.3.5 登录请求


1、信息头管理器

注意,这个信息头管理器的位置,要在login请求里面。

2、预处理器
处理登录的加密、验签等。千万不要勾选脚本编译缓存。

3、提取token

4、后置处理器,将拿到的token写入到本地文件

-
import java.io.BufferedReader;
-
import java.io.BufferedWriter;
-
import java.io.FileReader;
-
import java.io.IOException;
-
-
FileWriter fileWriter = new FileWriter(new File(vars.get("data_file_path_token")), true);
-
BufferedWriter writer = new BufferedWriter(fileWriter);
-
-
-
String TOKEN = vars.get("token");
-
writer.append(TOKEN+"\r\n");
-
writer.close();
-
fileWriter.close();
注意:
为了避免缓存影响,最后选择True.

3.4 查询不同用户个人信息
3.4.1 背景
需要使用2000个用户的token,然后去查询个人信息。
正常 逻辑,就是先去登录,登录成功后再去获取个人信息。
但是这样的话,获取个人信息接口的tps 要受到登录接口性能的影响。
登录只能支持30个并发,但是查询个人信息接口要测试100个并发。
所以只能先将登录成功后的信息写到本地,然后再去读取本地登录的token 去请求个人信息接口。
3.4.2 整体结构

3.4.3 循环控制器
读取2000个token,且保证每一个线程取到的token是唯一的。


3.4.4 信息头管理
信息头管理器,要在请求的里面。

<div id="blogExtensionBox" style="width:400px;margin:auto;margin-top:12px" class="blog-extension-box"><div class="blog_extension blog_extension_type2" id="blog_extension">
<div class="extension_official" data-report-click="{"spm":"1001.2101.3001.6471"}" data-report-view="{"spm":"1001.2101.3001.6471"}">
<div class="blog_extension_card_left">
<img src="https://img-blog.csdnimg.cn/ab4f72676f0847b58f9a9f7e207f1466.jpeg" alt="">
</div>
<div class="blog_extension_card_cont">
<span class="text">测试童鞋</span>
<div class="blog_extension_card_cont_r">
<img class="weixin" src="https://g.csdnimg.cn/extension-box/1.1.6/image/weixin.png" alt="">
<span>微信名片</span>
</div>
</div>
<img class="blog_extension_card_right" src="https://g.csdnimg.cn/extension-box/1.1.6/image/ic_move.png" alt="">
</div></div></div>
</article>
[转帖]jmeter编写测试脚本大全的更多相关文章
- JMeter性能测试基础 (4)-使用JMeter录制测试脚本
在进行压力测试时,由于很多web页面包含了Ajax异步请求等内容,为模拟用户真实输入,除了对html的访问外,还需要将其它的访问考虑入内,这时最好的办法就是对实际访问过程中的所有请求进行录制. 例如, ...
- [转]jmeter 自定义测试脚本
http://blog.csdn.net/kash_chen007/article/details/37690411 http://wangym.iteye.com/blog/731729 1.创建一 ...
- 用python编写测试脚本
def f(n): """ >>>f(1) 1用例 >>>f(2) 2用例 ...... >>>f(n) n用例 & ...
- 用BlazeMeter录制JMeter测试脚本
工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...
- 菜鸟教程之工具使用(十)——用BlazeMeter录制JMeter测试脚本
工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...
- 用BlazeMeter录制JMeter(三十五)测试脚本(转载)
转载自 http://www.cnblogs.com/yangxia-test 工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤 ...
- python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)
经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路. 我们在百度搜索天气查询,会出现如下图所示结果: 接下来,我们以该天气查询接口为例,编写接 ...
- 实践作业2:黑盒测试实践——编写自动化脚本并拍摄测试过程视频 Day 6
下午下课之后小组成员一起交流了一下实验过程遇到的一些问题,并汇总了下各个项目完成情况 该实验目前(写博客是时间)基本完成,具体情况如下 (1)分析系统需求 .(done) (2)设计测试用例.(don ...
- jmeter压力测试笔记- HTTP协议
一.目标 使用jmeter进行HTTP接口压力测试: 命令行方式运行,方便在linux环境运行: 二.面临的问题 支持多环境测试(开发.测试.生产环境) 支持用户数据.线程数.循环次数等配置在运行时自 ...
- Postman—测试脚本
前言 对于Postman中的每个请求,我们都可以使用JavaScript语言来开发测试脚本.这也就好比单元测试.我们先看看Postman的相关界面: 编写测试脚本 Postman测试脚本本质上是在发送 ...
随机推荐
- 这一次,弄明白JS中的文件相关(一):概念篇
概念是学习的基础.在学习JS中的文件操作之前,先把文件相关的各种概念搞清楚,很有好处. 1. 二进制: 计算机硬件仅能处理和存储二进制数据,所以不管是你正在写的代码,还是你硬盘里的小姐姐,都是以二进制 ...
- 文心一言 VS 讯飞星火 VS chatgpt (127)-- 算法导论11.2 2题
二.用go语言,位向量(bit vector)是一个仅包含0和1的数组.长度为m的位向量所占空间要比包含m个指针的数组少得多.请说明如何用一个位向量来表示一个包含不同元素(无卫星数据)的动态集合.字典 ...
- 15、Flutter 按钮组件
按钮组件的属性 ButtonStylee里面的常用的参数 ElevatedButton ElevatedButton 即"凸起"按钮,它默认带有阴影和灰色背景.按下后,阴影会变大 ...
- antd ui的from使用问题
select 的allowClear失效问题 select的value与allowClear同时使用会导致allowClear失效 解决方法 from包装一层,通过const [form] = For ...
- 华为云GaussDB为MetaERP“成本核算”产品“保驾护航”
摘要:华为宣布实现了自主创新的MetaERP研发,并且完成了对旧ERP系统的全面替换,这其中,就采用了华为云GaussDB数据库特有的全密态技术,对ERP系统中的绝密数据进行加密保护,从而保障了数据的 ...
- 云图说|图解制品仓库CodeArts Artifact
摘要:制品仓库用于存放由源码编译生成的.可运行的二进制文件,重要作用是实现制品文件的可信存储,支撑软件开发活动. 本文分享自华为云社区<[云图说]第277期 图解制品仓库CodeArts Art ...
- 解读顶会ICDE’21论文:利用DAEMON算法解决多维时序异常检测问题
摘要:该论文针对多维时序数据的异常检测问题,提出了基于GAN和AutoEncoder的深度神经网络算法,并取得了当前State of the Art (SOTA)的检测效果.论文是云数据库创新LAB在 ...
- DarkMode(5):深色模式不同实现方案切换
sass自定义函数转 sass预处理 在<DarkMode(2):深色模式解决方案--css颜色变量实现Dark Mode>与<DarkMode(3):深色模式解决方案--颜色反转与 ...
- 开心档之MySQL 导入数据
MySQL 导入数据 本章节我们为大家介绍几种简单的 MySQL 导入数据命令. 1.mysql 命令导入 使用 mysql 命令导入语法格式为: mysql -u用户名 -p密码 < 要导入的 ...
- 创元集团的数智化实践 这次选择了和火山引擎 VeDI 搭档
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,上海创元化妆品有限公司(以下简称"创元集团")与火山引擎数智平台 VeDI 达成合作,旨 ...
