【Jmeter】性能测试脚本开发——性能测试环境准备、Jmeter脚本编写和执行

文章目录

    • 一、常用的Jmeter元件
    • 二、性能测试环境准备
    • 三、编写Jmeter脚本
    • 四、执行测试脚本

一、常用的Jmeter元件

  1. 取样器-HTTP请求
    作用:发送HTTP请求
  2. 配置原件-HTTP请求默认值
    作用:设置HTTP请求的默认参数
  3. 配置原件-用户定义的变量
    作用:定义变量,可以供后面引用
  4. 后置处理器-JSON提取器
    作用:提取JSON相应结果中的内容
  5. 断言-响应断言
    作用:对响应结果进行断言
  6. 断言-JSON断言
    作用:对响应结果进行断言
  7. 监听器-查看结果树
    作用:用于Jmeter脚本调试时查看运行日志
  8. 监听器-聚合报告
    作用:用于Jmeter性能测试时查看运行结果

二、性能测试环境准备

  1. 特点
    (1)性能测试环境独立使用,其他测试人员不可使用该环境。
    (2)性能测试的环境要求与用户真实使用的环境完全一致。
    (3)硬件环境:硬件服务器的台数、硬件服务器的配置、网络环境。
    (4)软件环境:所有的操作系统、数据库、被测程序、第三方软件等软件。
    (5)使用场景的一致性:数据量和发送请求的负载量与用户环境一致。

  2. 如何达成环境一致
    (1)硬件环境:找运维人员申请。
    (2)软件环境:所有软件版本和配置找开发人员要,然后安装。
    (3)测试数据:通过python脚本构造相同数量级的数据
    (4)业务场景:通过需求分析和运营数据获取主要的业务操作和对应的并发指标。

  3. 测试数据的准备
    如下构造用户数据。在性能测试时需要模拟不同的用户进行登录操作,因此需要提前构造用户数据。

#导包
import pymysql
#创建连接
conn = pymysql.connect(host="192.168.65.129",user="litemall",password="litemall123456",database="litemall",port=3306,charset='utf8')
#创建游标
cursor = conn.cursor()
#添加用户的SQL语句
user_sql = "INSERT INTO `litemall`.`litemall_user` (`id`, `username`, `password`, `gender`, `birthday`, `last_login_time`, `last_login_ip`, `user_level`, `nickname`, `mobile`, `avatar`, `weixin_openid`, `session_key`, `status`, `add_time`, `update_time`, `deleted`) VALUES ('{}', '{}', '$2a$10$SrnVvS/D6N0XNd4MHNjQR.W3VUfJhOdBylPC3Ika0zTvmxyiJ52AS', '0', NULL, '2020-08-14 12:00:58', '192.168.91.1', '0', 'xiaoh', '{}', 'https://yanxuan.nosdn.127.net/80841d741d7fa3073e0ae27bf487339f.jpg?imageView&quality=90&thumbnail=64x64', '', '', '0', '2020-08-12 14:14:37', '2020-08-14 12:00:58', '0');"
#循环插入数据
user_start = 100000
for i in range(100000):user_id = user_start + iusername = "test" + str(user_id)mobile = "13012" + str(user_id)print("插入第{}条数据ID为{}".format(i+1,user_id))sql = user_sql.format(user_id,username,mobile)cursor.execute(sql)conn.commit()
#关闭游标
cursor.close()
#关闭连接
conn.close()

三、编写Jmeter脚本

  1. HTTP信息头管理器
    在这里插入图片描述

  2. HTTP请求默认值
    写法:写入协议、域名、端口、编码格式,在HTTP请求取样器中只需要写入路径、请求方法、参数即可。
    优点:在测试时,如果换了测试环境,直接修改HTTP请求默认值即可,不需要修改所有脚本。
    在这里插入图片描述

  3. 独立线程组
    (1)线程组名称建议修改为用例名称。
    (2)HTTP请求取样器的名称修改为用户名称。
    (3)每个HTTP请求需要添加断言。
    (4)如果请求URL中的参数可能为中文,建议将参数放入到下面参数列表中,并将中文参数勾选“编码”。
    例一: 简单测试用例——登录
    在这里插入图片描述
    HTTP请求——登录:
    在这里插入图片描述
    JSON断言:
    在这里插入图片描述
    响应断言:
    在这里插入图片描述
    例二:复杂测试用例——业务流程1
    在这里插入图片描述
    JSON提取器:
    在这里插入图片描述
    HTTP信息头管理器:
    在这里插入图片描述

  4. 聚合报告:
    在这里插入图片描述

  5. jp@gc - PerfMon Metrics Collector
    在这里插入图片描述

四、执行测试脚本

  1. 执行测试脚本的测试机
    执行性能测试前,需要根据要模拟的业务负载量来选择适当的测试机。
    (1)单机执行
    windows:图形化界面、操作简单;资源使用低,能模拟的并发数低。
    linux:命令行操作,操作难度高;资源使用率高,能模拟的并发数高。
    (2)分布式执行
    如果单台测试机(无论windows或linux)都无法满足负载量要求时,需要使用分布式的方法,使用多台测试机一起来模拟特定负载量的业务。

  2. 根据性能测试用例,模拟用户并发执行,记录对应的性能指标
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/148870.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分类预测 | Matlab实现BES-ELM秃鹰搜索算法优化极限学习机分类预测

分类预测 | Matlab实现BES-ELM秃鹰搜索算法优化极限学习机分类预测 目录 分类预测 | Matlab实现BES-ELM秃鹰搜索算法优化极限学习机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 Matlab实现BES-ELM秃鹰搜索算法优化极限学习机分类预测(完整源码和数…

探秘前后端开发世界:猫头虎带你穿梭编程的繁忙街区,解锁全栈之路

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

算法题:盛最多水的容器

这个题目乍一看就是双指针,没想到官方解答也是双指针,我在官方的基础上优化了一下下,左右两边各一个指针,每次移动短的那一头的时候,不是移动一格,而是找到比短的那一头要长一点的,再进行比较。…

Linux免交互

免交互概念 不需要进入文件内部,可以在文件外对文件内容进行操作 sed 最强大的功能:改 新增 awk 最强大的功能:按行取列 如何对文本内容进行免交互 here document 免交互 对文本内容进行操作:标准输入的替代品 语法格式&…

火山引擎 ByteHouse:TB 级数据下,如何实现高效、稳定的数据导入

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近期,火山引擎开发者社区、火山引擎数智平台(VeDI)联合举办以《数智化转型背景下的火山引擎大数据技术揭秘》为主题的线下 Meeup…

【算法学习】-【双指针】-【盛水最多的容器】

LeetCode原题链接:盛水最多的容器 下面是题目描述: 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。…

【软件测试】自动化测试selenium(二)

文章目录 三. 掌握Selenium常用的API使用1. webdriver API2. 操作测试对象3. 添加等待4. 打印信息5. 浏览器的操作6. 键盘事件7. 鼠标事件8. 定位一组元素9. 多层框架/窗口定位10. 下拉框处理11. 弹窗处理12. 上传文件13. 关闭浏览器14. 切换窗口15. 截图操作 三. 掌握Selenium…

做私域,转化成交的秘诀!

数字化时代,企业开始重新定义和客户的关系,不仅是交易关系,更重要的是建立长久的、有价值的关系。 01. 私域的本质是客户经营 我们为什么要做私域?其实就是为了扩量提效,提复购加利润,把客户变成真正的自…

【LeetCode热题100】--199.二叉树的右视图

199.二叉树的右视图 思路: 使用根->右->左方法进行遍历节点,同时记录层数,将当前层数与记录的层数进行比较,如果当前层数大于记录的层数,添加该元素,若当前层数小于记录的层数,说明该层已…

博途1200/1500 ALT指令

SMART PLC的ALT指令实现代码,请查看下面文章博客 SMART PLC如何构造ALT指令_smart200类似alt指令-CSDN博客单按钮启停这些老生常谈的问题,很多人感兴趣。这篇博文讨论下不同的实现方法,希望对大家有所帮助。指令虽然简单,但是在编程的时候合理使用对我们高效率编程帮助还是…

蓝桥杯每日一题2023.10.5

3420. 括号序列 - AcWing题库 题目描述 题目分析 对于这一我们需要有前缀知识完全背包 完全背包的朴素写法&#xff1a; #include<bits/stdc.h> using namespace std; const int N 1010; int n, m, v[N], w[N], f[N][N]; int main() {cin >> n >> m;fo…

10链表-单链表构造LinkedList

目录 LeetCode之路——707. 设计链表 分析&#xff1a; Code&#xff1a; LeetCode之路——707. 设计链表 你可以选择使用单链表或者双链表&#xff0c;设计并实现自己的链表。 单链表中的节点应该具备两个属性&#xff1a;val 和 next 。val 是当前节点的值&#xff0c;n…

solidity 合约转java

Generate a Java Wrapper from your Smart Contract Solidity Gradle Plugin - Web3j web3j / web3j-maven-plugin GitLab

mysql面试题16:说说分库与分表的设计?常用的分库分表中间件有哪些?分库分表可能遇到的问题有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:说说分库与分表的设计? 在MySQL中,分库与分表是常用的数据库水平扩展技术,可以提高数据库的吞吐量和扩展性。下面将具体讲解MySQL中分库与分表…

C++ - 布隆过滤器

前言 之前介绍了 位图&#xff0c;位图在判断某一个 数是否存在&#xff0c;或者在计算某个数是否出现 一次 或者 两次这些问题之上有着非常高效的实现复杂度&#xff0c;它的时间复杂度 可以达到 O&#xff08;1&#xff09;&#xff0c;因为都是逻辑判断和 &#xff0c;常数…

【重拾C语言】五、模块化程序设计——函数(定义、调用、参数传递、结果返回、函数原型;典例:打印字符图形、验证哥德巴赫猜想)

目录 前言 五、模块化程序设计——函数 5.1 计算三角形的重心 5.2 函数 5.2.1 函数定义 5.2.2 函数调用 a. 函数调用的形式和过程 b. 参数传递 值传递 指针传递 c. 函数结果返回 5.2.3 函数原型&#xff08;先调用后定义&#xff09; 5.3 程序设计实例 5.3.1 打印…

React18入门(第二篇)——React18+Ts项目配置husky、eslint、pretttier、commitLint

前言 我的项目版本如下&#xff1a; React&#xff1a; V18.2.0Node.js: V16.14.0TypeScript&#xff1a;最新版工具&#xff1a; VsCode 本文将采用图文详解的方式&#xff0c;手把手带你快速完成在React项目中配置husky、prettier、commitLint&#xff0c;实现编码规范的统…

基于SpringBoot的ElasticSearch操作(超详细教程)

一、ElasticSearch 简介 1、简介 ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多员工能力的全文搜索引擎&#xff0c;基于 RESTful web 接口。Elasticsearch 是用 Java 语言开发的&#xff0c;并作为 Apache 许可条款下的开放源码发布&#xff0c;是一种…

天地无用 - 修改朋友圈的定位: 高德地图 + 爱思助手

1&#xff0c;电脑上打开高德地图网页版 高德地图 (amap.com) 2&#xff0c;网页最下一栏&#xff0c;点击“开放平台” 高德开放平台 | 高德地图API (amap.com) 3&#xff0c;在新网页中&#xff0c;需要登录高德账户才能操作。 可以使用手机号和验证码登录。 4&#xff0c…

经典算法-----汉诺塔问题

前言 今天我们学习一个老经典的问题-----汉诺塔问题&#xff0c;可能在学习编程之前我们就听说过这个问题&#xff0c;那这里我们如何去通过编程的方式去解决这么一个问题呢&#xff1f;下面接着看。 汉诺塔问题 问题描述 这里是引用汉诺塔问题源自印度一个古老的传说&#x…