JMeter入门,既要又要还要掌握的基础元件

本文详细介绍了JMeter的各种基础元件,包括配置元件、前置处理器、逻辑控制器、定时器、Sampler、后置处理器、断言和监听器等。重点讲解了BeanShell在不同组件中的应用,如BeanShell PreProcessor、BeanShell Sampler和BeanShell PostProcessor,以及如何利用BeanShell进行数据处理和高级断言。此外,还提到了性能测试的最佳实践,强调在实际工作中掌握核心功能的重要性。
摘要由CSDN通过智能技术生成

目录

JMeter(二十一):使用BeanShell解析Json格式的报文icon-default.png?t=N7T8https://tester-joe.blog.csdn.net/article/details/103954794

JMeter(二十二):使用Beanshell Assertion做高级断言icon-default.png?t=N7T8https://tester-joe.blog.csdn.net/article/details/88867111

JMeter(二十三):使用beanshell断言处理json数据icon-default.png?t=N7T8https://tester-joe.blog.csdn.net/article/details/88530637

JMeter(二十四):实现文件上传的http接口测试icon-default.png?t=N7T8https://tester-joe.blog.csdn.net/article/details/103954671

JMeter(二十五):正则后置处理器及逻辑循环控制器icon-default.png?t=N7T8https://tester-joe.blog.csdn.net/article/details/78429783

JMeter(二十六):Scanner类实现短信验证码处理方式icon-default.png?t=N7T8https://tester-joe.blog.csdn.net/article/details/78288761

JMeter(二十七):tesseract工具实现图片验证码处理方式icon-default.png?t=N7T8https://tester-joe.blog.csdn.net/article/details/78293250

JMeter(二十八):接口自动化测试设计之数据驱动icon-default.png?t=N7T8https://tester-joe.blog.csdn.net/article/details/88793238

JMeter(二十九):接口自动化测试设计之参数动态替换icon-default.png?t=N7T8https://tester-joe.blog.csdn.net/article/details/105642631

前言:

对于大多数测试人员来说,JMeter应该是目前使用最频繁的测试工具之一(因人而异,萝卜白菜各有所爱),因为其开源、免费、轻量、功能强大,支持很多种协议,除了测功能,还能做接口和性能自动化测试;深受业内喜爱!

从各大招聘网站或其他线上培训机构部分数据显示,常常使用其来吸引潜在学员(介绍如何使用),而在性能测试工具中,JMeter的市场占有率已经慢慢的超过了带头大哥loadrunner性能测试工具;面对如此优秀的测试工具,作为优秀的你怎能不拥抱它呢?

然而经常看到各种QQ群或其他博客论坛讨论JMeter的各种“晦涩难懂”的功能<需求>,譬如支持一些groovy脚本、还要黏贴python胶水语言、居然还有使用js的及selenium自动化?当然这不排除其场景确实需要这些来辅助,友情提示一下:切莫过往矫正!!!

在实际工作中,JMeter能用到的功能并不多,掌握主要的功能元件,基本上可以搞定80-90%的需求,所以,不要把时间耗费在工具不常用的功能上,如果是使用其做性能测试<只需设计好脚本场景就好>,分析定位性能问题、性能调优才是重中之重。

JMeter常用功能介绍

从JMeter2.x版本用到现在的5.x,常用功能进阶得并不是很多,如下举例(想要详细了解的可以参考其JMeter官网或本人CSDN博客都有部分使用介绍)。

从添加测试计划-线程组开始(基本按执行顺序介绍):

【配置元件】

HTTP信息头管理器:接口中特别需要指定的请求头,如content-type、或token鉴权;

HTTP Cookie管理器:适用于做web功能测试,保持cookie不过期;

CSV 数据文件设置:相当于参数化数据文件,可以是测试用例(接口自动化中);

HTTP请求默认值 :对于接口请求中通用的公共部分进行提取,如url、port或通用参数。

【前置处理器】

BeanShell PreProcessor:用于提前准备测试数据的元件,支持java及jmeter自带的功能脚本;

User Parameters:用于提前准备测试数据的元件,不适合于大量的测试数据驱动;

JDBC PreProcessor:用于提前准备测试数据的元件,比较灵活,可以从数据库中捞取测试数据。

【逻辑控制器】

Transaction Controller:这个来做事务控制的,譬如一个场景中涉及多个接口,单个接口是一个子事务,但是我们需要将其作为一个整体事务看待,就需要这个元件了;

ForEach Controller:一遍用来遍历上一个接口返回的数据中有多个元素的时候,例如提取响应结果中所有满足条件的参数,需要一一遍历,又譬如sql请求的结果集也有需要遍历的场景;

only once Controller:适用于性能测试场景中只需一次操作的请求,例如登录,这里必须要提一点的是它只跟线程组中的线程数有关,至于迭代数无关。

If Controller:条件控制器,支持__jexl3函数表达式及__groovy脚本或其他变量,

【定时器】

固定定时器:相当于thinktime;

高斯随机定时器:这个类似thinktime但是它是有活动范围的,即一个时间区间等待;

Synchronizing Timer:同步定时器,jmeter中的集合点,它的第二个参数是timeout,如果非0,即为等待对应时间不满足集合数也会执行sampler请求。

【Sampler】

HTTP请求:应该了解http协议的各种请求及传参方式,比较难的应该是文件上传/下载的接口,同样支持soap协议的请求;

BeanShell Sampler:一般作用自己写脚本来完成测试,毕竟需要一些java基础;

Debug Sampler:说白了就是调试脚本时使用,需要测试jmeter脚本中使用的变量是否正确;

比如sampler取样器支持的java、jdbc、ftp、webservice等协议,如果不满足其它协议,需要我们自己开发,所以java基础是必备的条件。

【后置处理器】

正则表达式提取器:动态参数关联的方式很多,可以根据实际请求来选择,例如json的少不了json path提取器,又如爬虫工作中喜欢用的正则;

Debug PostProcessor:除了可以看到jmeter变量,还可以看到配置信息,最好放在正则表达式提取器后面,否则看不到提取的结果,说白了还是对后置处理器使用的调试;

BeanShell PostProcessor:处理samlper请求响应结果数据的。

【断言】

响应断言:最简单的,在接口测试设计中,一般没有出现数据变动或者响应结果简单的情况下使用;

BeanShell断言:属于高级断言,因为是编写脚本,所以比较灵活。

【监听器】

查看结果树:调试结果使用,其上有各种tester调试视图;

聚合报告:可以查看性能测试结果的数据,如:响应时间分:90、95、99,这几个值可以通过配置文件修改的,还有错误率、tps等性能指标。

【函数助手】

这个按需使用,例如随机函数、随机字符串函数、线程计数器函数、环境变量参数函数、时间函数等。

先提前说一句:分布式压测:什么样子的情况下需要分布式压测?

第一,大用户量并发的时候

第二,负载机不支持大并发的时候

第三,同第一,大数据的情况下

另外,beanshell相关的元件,基本语法是通用的,上述所介绍元件中就有四类beanshell元件使用:前置处理器、取样器、后置处理器、断言等等,可见java基础非常重要!

【JMeter执行顺序】

配置元件 → 前置处理器 → 定时器 → 取样器 → 后置处理器 → 断言 → 监听器;

tips:同一层级的元件,按顺序执行;

最后,我们来看看官方的性能测试最佳实践,地址是:Apache JMeter - User's Manual: Best Practices

chrome浏览器右键翻译内容如下:

16.7减少资源需求

关于减少资源使用的一些建议。

  • 使用CLI模式:jmeter -n -t test.jmx -l test.jtl
  • 使用尽可能少的侦听器;如果使用上述的-l标志,则可以将其全部删除或禁用。
  • 在负载测试期间不要使用“查看结果树”或“在表中查看结果”侦听器,仅在脚本编写阶段使用它们来调试脚本。
  • 与其使用大量相似的采样器,不如在循环中使用相同的采样器,并使用变量(CSV数据集)来改变采样。[“包含控制器”在这里无济于事,因为它将文件中的所有测试元素添加到测试计划中。
  • 不要使用功能模式
  • 使用CSV输出而不是XML
  • 只保存您需要的数据
  • 使用尽可能少的断言
  • 使用性能最高的脚本语言(请参阅“ JSR223”部分)

如果您的测试需要大量数据(尤其是需要将其随机化),请在可通过CSV数据集读取的文件中创建测试数据。这样可以避免在运行时浪费资源。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

职说测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值