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模式下导入即可。

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

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

相关文章

前置微小信号放大器有哪些经典应用场景

前置微小信号放大器是电子系统中的关键组件,用于放大输入信号的微小幅度,以提高信号与噪声比和系统的灵敏度。这些放大器在各种应用中发挥着关键作用,以下是前置微小信号放大器的一些经典应用场景: 通信系统: 前置微小…

CSS案例:flex、justify-content、align-items

黑马程序员JS学习时的一个案例,CSS有点不懂,单拎出来分析。 具体出处是某站视频中的数组篇讲解,(点击链接跳转) CSS案例 效果&代码1. 先分析最大的boxflex布局 justify-contentalign-items以 flex-end 为例 2. box…

公众号文章如何提高阅读量?媒介盒子教你几招

公众号作为微信运营的主要载体,做得好就能让品牌得到大量曝光,公众号文章作为长文案想要写好还需要一定的技术,今天媒介盒子就来和大家聊聊公众号文章怎么写才能提高阅读量: 一、 内容干货满足读者求知欲 只要你的文章实用性强&…

(17)Linux的进程阻塞进程程序替换 exec 函数簇

前言:本章我们讲解它的 options 参数。在讲解之前我们需要理解进程阻塞,然后我们重点讲解二进程程序替换,这是本章的重点,然后介绍一个进程替换函数 execl,通过介绍这个函数来打开突破口,引入进程创建的知识…

openmediavault(OMV) (27)网络(2)adguardhome

简介 AdGuard Home 是一个开源的网络广告和隐私保护解决方案,它充当局域网中的 DNS 服务器,提供广告拦截、跟踪器阻止和家长控制等功能。它可以在个人电脑、树莓派或其他支持的硬件设备上运行。 AdGuard Home 的主要功能包括: 广告拦截:AdGuard Home 使用广泛维护的广告…

数据湖的概念

1.定义 不同的公司对数据湖有不同的描述: 维基百科:数据湖是一类存储数据自然/原始格式的系统或存储,通常是对象块或者文件。数据湖通常是企业中全量数据的单一存储。全量数据包括原始系统所产生的原始数据拷贝以及为了各类任务而产生的转换…

基于人工智能的数据库工具Chat2DB使用

文章目录 前言Chat2DB介绍Chat2DB地址下载安装 Chat2DB配置Chat2DB使用1、自然语言转sql2. SQL解释3. SQL优化4. SQL转换 写在最后 前言 随着人工智能的发展,各行各业都出现了不少基于AI的工具来提升工作效率。就连国内的各个大厂也都在基于大模型开发自己的产品线…

大公司里怎样开发和部署前端代码?

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello,大家好,我是 Sunday。 昨天的时候有同学问到前端部署相关的内容,正好在知乎中看到…

Flask入门教程

Flask入门教程 简介 Flask是由Armin ronacher于2010年用Python语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。 特点 Flask只提供核心功能,其他几乎所有的功能都需要用到拓展,比如可以通过Flask-SQLAlchemy拓展对数据库进行操作等等。 核心 由…

基于双向LSTM模型完成文本分类任务

6.4.1 数据处理 IMDB电影评论数据集是一份关于电影评论的经典二分类数据集.IMDB 按照评分的高低筛选出了积极评论和消极评论,如果评分 ≥7≥7,则认为是积极评论;如果评分 ≤4≤4,则认为是消极评论.数据集包…

“ManageEngine荣获Gartner SIEM客户选择四连冠“

我们非常激动地宣布,ManageEngine已经连续第四次被认定为Gartner Peer Insights‘Voice of the Customer’:安全信息与事件管理(SIEM)中的客户选择。这不仅是对我们卓越SIEM解决方案承诺的肯定,也延续了ManageEngine在…

检测和缓解僵尸网络

僵尸网络源自“机器人网络”一词,是感染了恶意软件的网络或机器集群,允许黑客控制并发起一系列攻击。僵尸网络的强度完全取决于它所包含的受感染机器的数量。攻击者接管这些设备的操作,以使用僵尸网络命令和控制模型进行远程控制。 什么是僵…

K线+直线 现货黄金也可能变现

现货黄金行情怎么做,这是投资者需要思考的问题。幸运的是,现在市面上有很多书籍,是其他有经验、有想法的投资者们对其经验的总结和分享,此外网络上还有不同的文章和各种各样的视频介绍相关交易经验,这都是可以让我们借…

22款奔驰GLE450升级香氛负离子 车载香薰

相信大家都知道,奔驰自从研发出香氛负离子系统后,一直都受广大奔驰车主的追捧,香氛负离子不仅可以散发出清香淡雅的香气外,还可以对车内的空气进行过滤,使车内的有害气味通过负离子进行过滤,达到车内保持清…

前端根据URL地址实现下载(txt,图片,word,xlsx,ppt)

前端根据URL地址实现下载(txt,图片,word,xlsx,ppt) 一、对于txt,图片类的二、对于word,xlsx,ppt类的1.a标签可以实现下载2. window.open() 一、对于txt,图片类…

aliexpress商品API(item_get-获得aliexpress商品详情):进行批量操作

使用AliExpress的店铺或分类API:这些API可以为你提供某个店铺或分类下的所有商品列表,然后你可以根据这个列表逐个查询商品详情。分批查询:你可以将商品ID分成多个批次,每次只查询一部分商品详情,这样既可以减少每次请…

记录一个常量定义导致的重复问题duplicate symbol ‘_kk‘ in:

原因: 在.h文件中定义了一个常量 如下 NSString *const kk "FASDF";interface CardCourseViewController : LBBaseViewControllerend将这句代码去掉即可 NSString *const kk "FASDF";![请添加图片描述](https://img-blog.csdnimg.cn/direct…

买工业用品就找震坤行,提供震坤行商品数据,数据分析的API接口

要接入API接口以采集电商平台上的商品数据,可以按照以下步骤进行: 1、找到可用的API接口:首先,需要找到支持查询商品信息的API接口。这些信息通常可以在电商平台的官方文档或开发者门户网站上找到。 2、注册并获取API密钥&#x…

什么是差值表达式

在Vue.js中,差值表达式是一种基本的数据绑定形式,用于将数据绑定到文档对象模型(DOM)上。差值表达式通常使用双大括号 {{ }} 来表示,这种语法非常直观。当Vue实例的数据发生变化时,差值表达式的内容也会相应…

CCNP课程实验-06-EIGRP-Trouble-Shooting

目录 实验条件网络拓朴 环境配置开始排错错误1:没有配置IP地址,IP地址宣告有误错误2:R3配置了与R1不同的K值报错了。错误3:R4上的AS号配置错,不是1234错误4:R2上配置的Key-chain的R4上配置的Key-chain不一致…