jmeter使用心得(一)

jmeter作为接口测试的常用工具之一,在我们的测试中经常会用到,往期的文章中,我们也分享过jmeter的各种功能和用法,基本覆盖了方方面面,可以满足各种接口测试的需求。但实际测试中我们也会发现,jmeter这么强大的一个工具,具备这么多的功能,然而某些情况下反倒会让我们觉得用起来不是那么的顺手,甚至导致测试效率降低和工作量增加。本期文章,小编将着眼于jmeter的一些使用心得,重点分享如何更简单地利用jmeter进行测试以及如何避免一些问题的发生。

一、jmeter在测试中的定位

对于测试工具或测试框架,我们可能会觉得,如果一个工具就能满足所有的测试需求就好了,测试数据生成、自动测试、结果分析、报告产出、日志回溯等等,全部由一个工具来实现。于是,当了解到jmeter有这么强大的功能之后,我们很自然就去研究如何用jmeter来实现上述种种功能。然后经过长时间调研发现,jmeter确实可以做到,因为jmeter有各种控制器、取样器、断言、监听器,甚至还有BeanShell这样可以在中间某个环节自己写代码来处理一些逻辑的方法。

第一感觉,好像确实这些工作都用jmeter来实现就好了,但实际上,这里的坑却有不少。举个最简单的例子,当我们用jmeter来处理请求数据、返回数据时,每个请求相当于会在jmeter这里增加额外的耗时和资源占用,如果处理的逻辑比较复杂,比如写个超级复杂的BeanShell,这些额外的开销可能会很大程度上影响我们测试的结果。小编曾经遇到过,为了实现一个对返回结果进行判断和分类的功能,导致测试得到的接口QPS比之前下降了很多,虽然最后实现了将返回结果进行自动化分析、归类等操作,但最重要的性能指标却出现了偏差,还得返工再测,得不偿失。

所以,在这里,我们需要明确下jmeter在测试中的定位,小编认为,jmeter最重要的功能是实现自动化并发测试+日志收集,而并非是用来做数据处理和统计的。在jmeter接口测试的脚本中,如果存在很多的与请求无关的逻辑处理,在这里强烈建议大家对脚本进行精简,避免出现问题。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:1150305204【暗号:csdn000】

二、jmeter线程组的使用

利用jmeter的线程组,我们可以很方便地对接口进行并发测试,无论是性能测试还是稳定性测试,我们都可以用线程组来实现。jmeter一个测试计划中可以添加多个线程组,每个线程组都可以独立起若干个线程进行测试。于是有时我们会在测某个服务时,把该服务的所有接口分成不同线程组放到测试计划下,期望实现“一个脚本测所有”。但往往这样做又会产生一些意想不到的问题。小编在实际测试中就遇到过类似定时器跨线程组使用的时间问题,多个线程组共享变量导致的问题、多个线程组的启停问题等等,给测试带了比较大的困扰,虽然每次可以找到解决方法,但这样频繁踩坑也着实不爽。

为了避免麻烦,后来我逐渐换了一种设计脚本的方式,那就是尽量在一个脚本中只使用一个线程组,不同的接口,如果互不关联,就分成不同的脚本来进行测试。这样看似增加了脚本的数量,但实际上却大大优化了设计、修改脚本以及执行测试的效率和自由度。测试时,每个接口的测试都是单独的进程,彼此之间不会产生影响,且可以做到每个接口的测试随起随停,在NO-GUI模式下操作起来非常方便。

图片

一个极简的jmeter脚本,只需一个线程组、一个请求

图片

三、使用NO-GUI模式进行测试

jmeter支持使用GUI和NO-GUI两种模式进行测试,这两种模式的各有特点。在GUI模式下,我们可以通过图形化界面直观地进行测试脚本的设计以及通过监听器实时观察测试结果,使用起来十分方便;而NO-GUI模式与GUI模式执行测试脚本的方式是相同的,但由于不显示图形界面,也不实时打印测试结果,使得测试中jmeter本身对资源占用的影响降到最低,在并发测试中可以很大程度得减少对性能结果的干扰。在公司环境中,性能好的机器一般都使用centos等linux操作系统,几乎不会用到图形界面,加之为了获得更准确的测试结果,在进行大并发测试时,我们一般会采用NO-GUI模式进行测试。

所以,在脚本设计阶段,我们依然可以在PC上使用GUI模式进行设计,发挥图形化设计的优势。当脚本设计完成后,我们只需将脚本放到linux机器上,然后用NO-GUI模式执行,以最大程度保证获得更准确的测试结果。测试完成后,如果需要在GUI模式下查看测试结果或图表信息,将NO-GUI模式下产生的日志文件在GUI模式下导入即可。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

测试管理-缺陷管理工具安装

前言: 项目生命周期里面,开发软件后,需要进行正规的测试,测试除了需要编写测试用例和写测试总结外,还需要进行bug的闭环控制,方便追踪。之前用过惠普的QC系统,这个是收费的,专业做缺…

【网络】网络层IP地址和IP数据报的格式

🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁&am…

图像分割 分水岭法 watershed

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本文的C#版本请访问:图像分割 分水岭法 watershed(C#)-CSDN博客 Watershed算法是一种图像处理算…

区域HIS系统源码,二级医院、专科医院his系统源码,经扩展后能够应用于医联体/医共体

二级医院、专科医院his系统源码,java语言开发 基于云计算技术的B/S架构的HIS系统,为医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。 系统利用云计算平台的技术优…

宏集PC Runtime软件助推食品行业生产线数字化革新

一、前言 近年来,中国食品行业发展迅速且灵活多变,在当前经济下行的情形下,食品行业正面临着日益激烈的竞争,导致企业利润下降。 为了保持企业市场竞争力,国内某top10食品企业采用宏集SCADA解决方案—PC Runtime软件…

【linux】日志管理和分析

一、概述 在Linux系统的管理和运维中,日志文件起到至关重要的作用。它们记录了系统运行过程中的各种事件,包括系统故障、性能数据和安全事件。 二、 日志的作用和分类 日志的作用 日志文件记载了系统的生命线,利用它们可以: 1…

Linux操作系统基础(08):Linux的用户权限

1. 用户权限是什么 在Linux中,用户权限是指用户对文件、目录或者系统资源的访问权限,用户权限决定了用户可以执行哪些操作,比如读取、写入、执行等等,用户权限与文件权限紧密不可分。 用户权限可以分为三种: 读取权限…

青蛙目标检测数据集VOC格式600张

青蛙,一种两栖动物,以其独特的形态和习性,成为了大自然中的一道亮丽风景。 青蛙的外观非常特别,绿色的皮肤上布满了大小不一的斑点,既有助于它们在草丛中隐身,又能够有效地迷惑天敌。头部扁平,…

珠海盈致浅析MES生产管理系统的优点

MES系统是用于管理和控制制造过程的信息化系统.它具有许多优点: 1. 生产过程可视化:MES系统提供实时的生产过程监控和数据收集,使管理人员能够清晰地了解生产线上的各个环节,包括设备状态、生产进度、质量指标等.这使得管理人员能够作出准确的决策并快速响应变化. 2…

实现文本 内容展开 / 收起

<template><el-table :data"tableData" style"width: 100%" height"250"><el-table-columnfixedprop"date"label"日期"width"150"></el-table-column><el-table-columnprop"name…

聚丙烯腈,到预测期结束时将达到36亿美元的市场规模

聚丙烯腈 (PAN) 是一种合成聚合物&#xff0c;广泛用于各种应用&#xff0c;包括纺织品、碳纤维生产和水处理。近年来&#xff0c;受航空航天、汽车和建筑行业对碳纤维增强复合材料需求不断增长的推动&#xff0c;全球 PAN 市场稳步增长。 全球 PAN 市场预计从 2020 年到 2025 …

HttpClient库与代理IP在爬虫程序中的应用

目录 前言 一、HttpClient库的基本使用方法 二、代理IP的使用方法 三、代理IP池的使用方法 四、总结 前言 在编写爬虫程序时&#xff0c;我们经常会使用HttpClient库来发送HTTP请求&#xff0c;获取网页内容。然而&#xff0c;有些网站可能会对频繁的请求进行限制&#x…

CMake入门教程【核心篇】包含目录(include_directories)

&#x1f608;「CSDN主页」&#xff1a;传送门 &#x1f608;「Bilibil首页」&#xff1a;传送门 &#x1f608;「本专栏容」&#xff1a;CMake入门教程 &#x1f608;「动动你的小手」&#xff1a;点赞&#x1f44d;收藏⭐️评论&#x1f4dd; 文章目录 1. 基本用法2. 添加单个…

【SpringBoot开发】之商城项目案例(订单及订单项生成)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《SpringBoot开发之商城项目系列》。&#x1f3af…

鸿蒙系列--装饰器

一、基础UI组件结构 每个UI组件需要定义为Component struct对象&#xff0c;其内部必须包含一个且只能包含一个build(){}函数&#xff0c;用于绘制UI&#xff1b;struct之内、build()函数之外的地方用于存放数据。 二、基本UI装饰器 Entry 装饰struct&#xff0c;页面的入口…

系列十、Spring Cloud Gateway

一、Spring Cloud Gateway 1.1、概述 Spring Cloud全家桶中有个很重要的组件就是网关&#xff0c;在1.x版本中采用的是Zuul网关&#xff0c;但是在2.x版本中&#xff0c;由于Zuul的升级一直跳票&#xff0c;Spring Cloud最后自己研发了一个网关替代Zuul&#xff0c;即&#xf…

2020年认证杯SPSSPRO杯数学建模B题(第二阶段)分布式无线广播全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 B题 分布式无线广播 原题再现&#xff1a; 以广播的方式来进行无线网通信&#xff0c;必须解决发送互相冲突的问题。无线网的许多基础通信协议都使用了令牌的方法来解决这个问题&#xff0c;在同一个时间段内&#xff0c;只有唯一一个拿到令牌…

Unity 2022 版本 寻路 NavMesh

官方教程地址 https://docs.unity3d.com/Packages/com.unity.ai.navigation1.1/manual/index.html 首先装包 先给地图 和 阻挡 设置为静态 然后给地上行走的地方 添加组件 可以直接bake 然后会显示蓝色的可行走路径 player 添加插件 然后给角色添加脚本 using System.Co…

MySQL基础篇(一)SQL

视频地址: 黑马程序员 MySQL数据库入门到精通&#xff0c;从mysql安装到mysql高级、mysql优化全囊括 SQL&#xff0c;全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一 标准。 一、SQL通用语…

ImportError: DLL load failed while importing imaging: 找不到指定的模块

24.1 ImportError: DLL load failed while importing imaging: 找不到指定的模块 参考&#xff1a;https://zhuanlan.zhihu.com/p/662305030?utm_id0 说明&#xff1a;Pillow 与pillow都可以&#xff0c;不区分首字母大小写 第一步&#xff1a;查看是否有pillow 1&#xff09;…