、JMETER与它的组件们

os进程取样器

这个取样器可以让jmeter直接调用python写的测试数据

 这样就可以调用python写的测试数据给到jmeter进行调用

注意:1建议python返回转json格式dumps一下;2py文件中需要把结果打印出来,可以不用函数直接编写

 传到jmeter之后可以用json提取出来给后面的接口使用

JSON提取器与Debug Sampler

我们平时会遇到很多JSON格式的接口返回,我们需要提取参数可以用JSON提取器,同时配合自带的调试器来进行调试。

 JSON提取器

Name of created variables:提取的值存放的变量名称
JSON Path expression:表达式,就是刚在在结果树中验证的表达式,可以同时使用多个表达式,用分号隔开
Match No:0 随机 1第一个 -1所有
Compute concatenation var:如果匹配所有时,就将所有值存入变量名_ALL 中
Default Value:提取不到值时默认值
我们使用Dummy sampler来mock一个返回(这里不会可以上一篇)

​
{"topic":"mock_api","data":{"errormes":"","response":[{"name":"A","age":18},{"name":"B","age":30}]}}​

现在我们来提取age这个字段,这里会分享不同的方法来取值

第一种:一层一层从上至下取age=18这个值

1

2

//每一层就是一个".",因为response是个列表,我们去索引为0

$.data.response[0].age

 第二种:有条件的筛选name=A的age,使用表达式:[?(@.key == value)]

//$..直接去找response字段,根据表达式去找name是A的age
$..response[?(@.name=="A")].age

第三种:直接根据表达式找,并且可以一次性提取多层多变量

// Result[0]={"name":"A","age":18}
$..[?(@.name=="A")].["age","name"]
// Result[0]=18
$..[?(@.name=="A")].age

效果展示

 计数器

 然后我们设置不同的线程和循环次数来看看效果

设置线程1,循环3

 设置线程2,循环3

 设置线程2,循环3,勾选上方计数器中的与每用户独立的跟踪计数器

  设置线程2,循环3,勾选上方计数器中的与每用户独立的跟踪计数器 和 在每个线程组迭代上重置计数器

 while逻辑控制器、循环控制器、if逻辑控制器和测试活动

这两个我们放在一起,假设我们需要去判断循环的次数大于5就自动跳出循环

while控制器

 填入 ${__jexl3("${num}" != "5",)}

 循环五次后退出,这里需要注意的是while条件中一般只会使用javaScript或者jexl3(这两个都是在函数助手中查看,辅助编写)

循环控制器+if控制器

 勾选上永远,这样就会一直循环(这里勾选上只要是为了和上面while控制器模拟同一个场景,一般不会勾选永远,下面在做if判断,这样太麻烦了)

我们在for循环下面增加if控制器去判断是否满足我们需要的条件,if下面增加一个动作控制器,如果满足if条件就Break,跳出循环

if条件填入 ${__jexl3("${num}" == "5",)}

这样就达到和while相同的效果了

 断言

 汉化过后断言就很好理解,这里讲一下模式匹配规则:

包括(contains):包含指定的某个或多个字符串,支持正则表达式

匹配(match):完全匹配指定的字符串,判断为成功,支持正则表达式

相等(equals):响应需要完全匹配指定的字符串,不支持正则

字符串(Substring):响应中需要包含指定字符串,不支持正则

否(Not) 和 或者(or):就是对上述判断做的逻辑运算

 随机变量

在配置元件中有个随机变量简单好用

HTTP镜像服务器

可以理解做了一个挡板,把我们自己当做服务器,把我们自己收到的请求原封不动的显示出来,方便调试请求

 设置好服务器记得点击启动

 这时候请求的数据就会全部显示在你面前了

JDBC

JDBC链接数据库

链接数据库我们需要一个链接数据的jar包:MySQL :: Download MySQL Connector/J (Archived Versions)

 步骤

1 测试计划中添加上方下载的jar包

2 添加一个线程组 添加一个jdbc链接配置器

DataBase URL:库名+?+ useUnicode=true&characterEncoding=utf8,加入后缀防止乱码

3 取样器中添加一个jdbc request

 4把需要取得值放入变量

1

2

value=vars.getobject("resultserial_nos").get(8).get("serial_number");

vars.put(serial_number,value);

 同步定时器

 同步定时器设置了集合点,达到并发的作用

说到并发绕不开的就是并行:并发其实就是任务切换,而并行就是多个进程同时进行,Jmeter也提供了并发插件这里不做赘述,有兴趣的可以去插件管理内自己下载:Parallel Controller

事务控制器

我们需要去测试几个接口的混合场景下的性能,就需要把几个接口放到一个事务中

stepping Thread Group + jp@gc - Transactions per Second + jp@gc - Response Times Over Time

线程组中有个stepping thread group可以帮助我们不断加压增加线程组数量来查看不同压力下的tps

 安装插件: jpgc - Standard Set这里有jp@gc - Transactions per Second可以用这个查看每秒事务处理

纵坐标为TPS横坐标为时间

纵坐标为请求响应时间

 

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

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

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

相关文章

探索色彩搭配的奥秘:如何选择适合产品的理想配色方案

title: 探索色彩搭配的奥秘:如何选择适合产品的理想配色方案 date: 2024/3/1 20:47:45 updated: 2024/3/1 20:47:45 tags: 色彩搭配品牌形象用户体验情感连接信息传达视觉层次色调选择 引言 友善的色彩搭配和色调选择是现代产品设计中不可忽视的关键因素。通过正确…

初阶数据结构:栈与队列的扩展补充

目录 1. 栈与队列练习题1.1 栈的括号匹配问题1.2 用队列来实现栈1.3 用栈来实现队列1.4 扩展:循环队列 1. 栈与队列练习题 1.1 栈的括号匹配问题 题目信息: 题目链接: 括号匹配问题 思路: 利用栈的后进先出特性来实现括号的匹配 …

JAVASE初认识

1.初认识其结构 1.源文件(扩展名为*.java):源文件带有类的定义。类用来表示程序的一个组件,小程序或许只会有一个类。类的内容必须包含在花括号里面。 2.类:类中带有一个或多个方法。方法必须在类的内部声明。 3.方法&#xff1…

解决微软活动目录管理工作中常见问题

微软活动目录(AD域)是一种由微软的用于管理网络中用户、计算机、资源等的目录服务。活动目录被广泛应用于企业内部的网络管理中,尤其是对于使用微软产品的企业来说,活动目录是至关重要的基础设施之一。 因此,以微软为…

ChatGpt 使用fetch-event-source实现sse流式处理

microsoft/fetch-event-source 是一个由微软提供的库,用于在客户端和服务器之间建立基于 EventSource 的连接。EventSource 是一种 HTTP 协议,允许服务器向客户端推送实时事件流。该库提供了对 EventSource 协议的封装,使得在前端 JavaScript…

旧衣回收小程序开发,提高回收效率增加创收

在我国经济大力发展下,国人的生活水平不断提高。生活质量得到提升,衣食住行也从而得到了提升。因此,家家户户中产生的闲置衣物开始增加,我国旧衣回收市场规模非常庞大。 当下,时代发展主流是以互联网为主,…

项目-SERVER模块-Socket模块

Socket模块 一、Socket模块是什么?二、代码实现1.成员变量2.构造、析构函数3.获取套接字文件描述符4.创建套接字5.绑定地址信息6.开始监听连接请求7.向服务器发起连接8.获取新连接9.接收数据10.非阻塞接收数据11.发送数据12.非阻塞发送数据13.关闭套接字14.创建一个…

神经网络系列---卷积

文章目录 卷积神经网络卷积转置卷积 卷积核和反卷积的三种实现方式卷积的次数计算 卷积神经网络 在神经网络的卷积层中,向下取整(Floor)是一种常用的策略,特别是在处理输出尺寸不是整数的情况时。当你计算出卷积层输出的尺寸&…

深入了解接口测试:方法、工具和关键考虑因素

接口测试是软件测试中的一项重要工作,它涉及到系统与系统之间的交互点。接口可以是外部接口,也可以是内部接口,包括上层服务与下层服务接口以及同级接口。在接口测试中,我们需要确保接口能够按照预期的方式进行通信和交互&#xf…

二叉树(Java)

目录 一、概念二、 两种特殊的二叉树三、 二叉树的性质四、二叉树的存储五、二叉树的基本操作1、二叉树的遍历(1)前中后序遍历(2)层序遍历 2、基本操作 六、总结 一、概念 一棵二叉树是结点的一个有限集合,该集合&…

xsslabs第六关

看一下源码 <!DOCTYPE html><!--STATUS OK--><html> <head> <meta http-equiv"content-type" content"text/html;charsetutf-8"> <script> window.alert function() { confirm("完成的不错&#xff01;…

驱动高级--mknod

一、起源 仅devfs&#xff0c;导致开发不方便以及一些功能难以支持&#xff1a; 热插拔 不支持一些针对所有设备的统一操作&#xff08;如电源管理&#xff09; 不能自动mknod 用户查看不了设备信息 设备信息硬编码&#xff0c;导致驱动代码通用性差&#xff0c;即没有分离…