目录

一、背景

二、按照功能划分

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


  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.FileReader;
  4. import java.io.IOException;
  5. FileWriter fileWriter = new FileWriter(new File(vars.get("data_file_path_token")), true);
  6. BufferedWriter writer = new BufferedWriter(fileWriter);
  7. String TOKEN = vars.get("token");
  8. writer.append(TOKEN+"\r\n");
  9. writer.close();
  10. fileWriter.close();

data_file_path_token 为本地文件的路径

2.9 beanshell 读取本地txt


  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.FileReader;
  4. import java.io.IOException;
  5. String data_file_path = "/xxx/user.txt";
  6. FileReader filereader = new FileReader(new File(data_file_path));
  7. BufferedReader reader = new BufferedReader(filereader);
  8. String line = reader.readLine();
  9. reader.close();
  10. 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写入到本地文件


  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.FileReader;
  4. import java.io.IOException;
  5. FileWriter fileWriter = new FileWriter(new File(vars.get("data_file_path_token")), true);
  6. BufferedWriter writer = new BufferedWriter(fileWriter);
  7. String TOKEN = vars.get("token");
  8. writer.append(TOKEN+"\r\n");
  9. writer.close();
  10. 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="{&quot;spm&quot;:&quot;1001.2101.3001.6471&quot;}" data-report-view="{&quot;spm&quot;:&quot;1001.2101.3001.6471&quot;}">
<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编写测试脚本大全的更多相关文章

  1. JMeter性能测试基础 (4)-使用JMeter录制测试脚本

    在进行压力测试时,由于很多web页面包含了Ajax异步请求等内容,为模拟用户真实输入,除了对html的访问外,还需要将其它的访问考虑入内,这时最好的办法就是对实际访问过程中的所有请求进行录制. 例如, ...

  2. [转]jmeter 自定义测试脚本

    http://blog.csdn.net/kash_chen007/article/details/37690411 http://wangym.iteye.com/blog/731729 1.创建一 ...

  3. 用python编写测试脚本

    def f(n): """ >>>f(1) 1用例 >>>f(2) 2用例 ...... >>>f(n) n用例 & ...

  4. 用BlazeMeter录制JMeter测试脚本

    工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...

  5. 菜鸟教程之工具使用(十)——用BlazeMeter录制JMeter测试脚本

    工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...

  6. 用BlazeMeter录制JMeter(三十五)测试脚本(转载)

    转载自 http://www.cnblogs.com/yangxia-test 工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤 ...

  7. python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)

    经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路. 我们在百度搜索天气查询,会出现如下图所示结果: 接下来,我们以该天气查询接口为例,编写接 ...

  8. 实践作业2:黑盒测试实践——编写自动化脚本并拍摄测试过程视频 Day 6

    下午下课之后小组成员一起交流了一下实验过程遇到的一些问题,并汇总了下各个项目完成情况 该实验目前(写博客是时间)基本完成,具体情况如下 (1)分析系统需求 .(done) (2)设计测试用例.(don ...

  9. jmeter压力测试笔记- HTTP协议

    一.目标 使用jmeter进行HTTP接口压力测试: 命令行方式运行,方便在linux环境运行: 二.面临的问题 支持多环境测试(开发.测试.生产环境) 支持用户数据.线程数.循环次数等配置在运行时自 ...

  10. Postman—测试脚本

    前言 对于Postman中的每个请求,我们都可以使用JavaScript语言来开发测试脚本.这也就好比单元测试.我们先看看Postman的相关界面: 编写测试脚本 Postman测试脚本本质上是在发送 ...

随机推荐

  1. LeetCode206反转链表、24两两交换节点

    206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL ...

  2. Java 设置PDF文档过期时间(有效期)

    有些文档具有一定时效性,需在规定时间段内才可阅读查看,针对此类文档,需要设置文档的过期日期.时间等.下面以Java示例演示为例如何给PDF文档设置过期时间.需使用PDF类库, Free Spire.P ...

  3. 扎根CNCF社区贡献五年是怎样的体验?听听华为云原生开源团队的负责人怎么说

    摘要:本月我们要重点介绍王泽锋(Kevin Wang),他是 CNCF 社区的长期贡献者,华为云原生开源团队的负责人,KubeEdge 和 Volcano 项目的联合创始人.Kevin 回答了几个关于 ...

  4. 华为云PB级数据库GaussDB(for Redis)介绍第四期:高斯 Geo的介绍与应用

    摘要:高斯Redis的大规模地理位置信息存储的解决方案. 1.背景 LBS(Location Based Service,基于位置的服务)有非常广泛的应用场景,最常见的应用就是POI(Point of ...

  5. 解读clickhouse存算分离在华为云实践

    摘要:本文是我们对clickhouse做了最简单的支持obs的适配改造. 本文分享自华为云社区<clickhouse存算分离在华为云实践>,作者: he lifu. clickhouse是 ...

  6. 乐高式扩展:在Seal软件供应链防火墙中轻松集成代码规范工具

    上个月,Seal 软件供应链防火墙 v0.2(以下简称"Seal")正式发布,这一版本实现了可扩展架构,用户可以根据自身需求插件式集成原生或第三方解决方案,灵活扩展扫描能力. 在前 ...

  7. 如何在跨平台的环境中创建可以跨平台的后台服务,它就是 Worker Service。

    一.简介 最近,有一个项目要使用 Windows 服务,来做为一个软件项目的载体.我想了想,都已经到了跨平台的时代了,会不会有替换 Windows 服务的技术出现呢?于是,在网络上疯狂的搜索了一番,真 ...

  8. 用火山引擎DataTester,这家企业开始了“数据驱动增长”

    年末购物季已至,近些年来,预售抵扣.平台满减.品类专享券.大额补贴--动辄四五种计算方法叠加的大促活动,让不少消费者"懵"感十足.同一样商品,到底谁家卖的最便宜?比价平台应声发展而 ...

  9. IIS 设置超时时间

    高级设置 => 限制 => 连接超时(秒),默认120秒,根据实际情况调整

  10. shardingsphere 5.1.1 分库分表

    1. mysql配置: application-dubboService = spring-csc-campaign-agent-context.xml kafka.topics.redisAcces ...