[转帖]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测试脚本本质上是在发送 ...
随机推荐
- LeetCode206反转链表、24两两交换节点
206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL ...
- Java 设置PDF文档过期时间(有效期)
有些文档具有一定时效性,需在规定时间段内才可阅读查看,针对此类文档,需要设置文档的过期日期.时间等.下面以Java示例演示为例如何给PDF文档设置过期时间.需使用PDF类库, Free Spire.P ...
- 扎根CNCF社区贡献五年是怎样的体验?听听华为云原生开源团队的负责人怎么说
摘要:本月我们要重点介绍王泽锋(Kevin Wang),他是 CNCF 社区的长期贡献者,华为云原生开源团队的负责人,KubeEdge 和 Volcano 项目的联合创始人.Kevin 回答了几个关于 ...
- 华为云PB级数据库GaussDB(for Redis)介绍第四期:高斯 Geo的介绍与应用
摘要:高斯Redis的大规模地理位置信息存储的解决方案. 1.背景 LBS(Location Based Service,基于位置的服务)有非常广泛的应用场景,最常见的应用就是POI(Point of ...
- 解读clickhouse存算分离在华为云实践
摘要:本文是我们对clickhouse做了最简单的支持obs的适配改造. 本文分享自华为云社区<clickhouse存算分离在华为云实践>,作者: he lifu. clickhouse是 ...
- 乐高式扩展:在Seal软件供应链防火墙中轻松集成代码规范工具
上个月,Seal 软件供应链防火墙 v0.2(以下简称"Seal")正式发布,这一版本实现了可扩展架构,用户可以根据自身需求插件式集成原生或第三方解决方案,灵活扩展扫描能力. 在前 ...
- 如何在跨平台的环境中创建可以跨平台的后台服务,它就是 Worker Service。
一.简介 最近,有一个项目要使用 Windows 服务,来做为一个软件项目的载体.我想了想,都已经到了跨平台的时代了,会不会有替换 Windows 服务的技术出现呢?于是,在网络上疯狂的搜索了一番,真 ...
- 用火山引擎DataTester,这家企业开始了“数据驱动增长”
年末购物季已至,近些年来,预售抵扣.平台满减.品类专享券.大额补贴--动辄四五种计算方法叠加的大促活动,让不少消费者"懵"感十足.同一样商品,到底谁家卖的最便宜?比价平台应声发展而 ...
- IIS 设置超时时间
高级设置 => 限制 => 连接超时(秒),默认120秒,根据实际情况调整
- shardingsphere 5.1.1 分库分表
1. mysql配置: application-dubboService = spring-csc-campaign-agent-context.xml kafka.topics.redisAcces ...
