jmeter编写测试脚本大全

目录

一、背景

二、按照功能划分

2.1 加密处理、验签处理

2.2 jmeter 使用beanshell 编写脚本

2.3 jmeter脚本报错大全

2.4 jmeter打印log

2.5 jmeter压测java代码

2.6 jmeter读取数据保证每个线程拿到的数据唯一

2.7 jmeter设置并发量线程数为变量

2.8 beanshell 将数据写入到本地txt

2.9 beanshell 读取本地txt

三、按照场景划分

3.1 登录场景

3.1.1 背景

3.1.2 整体脚本结构

3.1.3 参数化

3.1.4 HTTP信息头管理器 

3.1.5 请求 /xxx/xxxx/getSession获取 token与key

3.1.6 请求 /xxx/xxx/getVerificationCode?token=${token}获取验证码

3.1.7 /xxx/xxx/login 

3.2 查询商品详情

3.2.1 背景

3.2.2 整体结构

3.2.3 信息头管理 

3.2.4 参数化处理

3.3 获取批量token,并写到本地文件中

3.3.1 背景

3.3.2 脚本结构

3.3.3 用户自定义变量

3.3.4  循环控制器

3.3.5 登录请求

3.4 查询不同用户个人信息

3.4.1 背景

3.4.2 整体结构

3.4.3 循环控制器

3.4.4 信息头管理


一、背景

使用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 信息头管理

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

猜你喜欢

转载自blog.csdn.net/qq_39208536/article/details/130059136