[转帖]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测试脚本本质上是在发送 ...
随机推荐
- 前世今生:Kubernete 是如何火起来的?
本课时,我们就开始正式进入 Kubernetes 的学习,或许你已经听过或简单了解过 Kubernetes,它是一款由 Google 开源的容器编排管理工具,而我们想要深入地掌握 Kubernetes ...
- 全网最全的华为ensp数通设备命令全集
[命令] display history-command [视图]所有视图 [参数]无 [描述] display history-command 命令用来显示当 前用户曾键入的最后 10 条命令.用户 ...
- BlockCanary原理解析
一.背景 为了解决应卡顿,分析耗时. 二.原理 Looper中的loop方法: public static void loop() { ... for (;;) { ... // This must ...
- LeetCode141环形链表I、II
141. 环形链表 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. ...
- 基于LiteOS Studio零成本学习LiteOS物联网操作系统
摘要:大家在学习物联网操作系统开发的时候,都不得不准备一套开发板和仿真器,也是一笔不小的投资.LiteOS社区现在对外开放了对Qemu模拟器的适配工程,在不使用开发板的情况下,也可以搭建LiteOS开 ...
- 掌握ROMA Compose,报表清单不秃头
摘要:在没有ROMA Compose之前,完成一个跨数据源的关联查询是一个十分艰巨的任务. 1. ROMA Compose为何诞生 试想这样一个场景,主管让刚入职的小沛明天下班前给他发一份报表.小沛兴 ...
- 解析数仓lazyagg查询重写优化
摘要:本文对Lazy Agg查询重写优化和GaussDB(DWS)提供的Lazy Agg重写规则进行介绍. 本文分享自华为云社区<GaussDB(DWS) lazyagg查询重写优化解析[这次高 ...
- 谁说count(*) 性能最差,我需要跟你聊聊
摘要:当我们对一张数据表中的记录进行统计的时候,习惯都会使用 count 函数来统计,但是 count 函数传入的参数有很多种,比如 count(1).count(*).count(字段) 等.到底哪 ...
- 火山引擎ByteHouse:ClickHouse如何保证海量数据一致性
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 背景 ClickHouse是一个开源的OLAP引擎,不仅被全球开发者广泛使用,在字节各个应用场景中也可以看到它的身 ...
- 火山引擎DataTester:三类AB实验,让企业营销拥有灵敏“网感”
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 作者:火山引擎AB测试 近日,火山引擎数智平台举办了"走进火山-全链路增长:数据飞轮转动消费新生力& ...
