首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

第十二节 JMeter基础-中级地址信息【IF控制器】

编程知识
2024年07月24日 20:05

声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改。

 

背景:提交订单前,我们需要核对一些信息,比如商品信息,收货地址,支付方式等。现在核对一下收货地址信息。

思路

1、前提条件:A用户登录。

2、先判断地址列表是否有收货地址

3、如果没有收货地址,则新增默认收货地址。

4、如果有收货地址,全部删除后再新增默认收货地址(先这样粗暴的简单处理)。

 

1.认识JMeter

(1)逻辑控制器【IF控制器

可以通过条件来控制是否运行其下面的测试元件(子元素)。只有结果为True时才会执行层级下的测试元件。

(2)选项【日志】

提供了关于测试执行情况的详细信息,‌帮助用户分析和优化测试策略,‌确保测试的有效性和准确性,是测试过程中不可或缺的一部分。

 

2.【HTTP请求默认值】

3.【登录】

4.【查看地址列表】

(1)查看地址列表

(2)获取全部地址

 

5.【IF控制器-删除】

(1)所有地址不为空

(2)删除所有地址

(3)查看地址列表

 

6.【IF控制器-新增】

(1)所有地址为空

(2)新增默认地址

 

(3)查看地址列表

 

7.【调试取样器】

 

8.【查看结果树】

 

9.【日志】

我是被【IF控制器】中的__groovy()方法给弄得快崩溃了,之前花了很多时间百度找原因,一直找不到是什么原因导致判断失败后面的操作都不执行。最后是想通过日志看看能不能找到原因(因为对JMeter工具不太熟悉,日志打印那块有很多模块也是一个一个的试),公司的日志也没有这么多模式。

 

10.【认识IF控制器】

(1)界面

For performance it is advised to check "Interpret Condition as Variable Expression" and use__jexl3 or __groovy evaluating to true or false or a variable that contains true or false为了提高性能,建议勾选“将条件解释为变量表达式”,并使用__jexl3或__groovy求值为真或假,或者使用包含真或假的变量。

Expression (must evaluate to true or false):表达式(必须求值为真或假)。在右边文本框中输入的条件值必须是 true 或 false,例如:${__jexl3("address_id_all_matchNr" != "0" or "1" and "address_id_all_matchNr" != "",)}。

Use status of last sample:上次样品的使用情况。使用执行该IF控制器前的最后一个取样器结果作为判断,如果最后一个取样器通过就返回true,如果失败就返回false。点击一下按钮即可,表达式输入框里自动添加:${JMeterThread.last_sample_ok}

Interpret Condition as Variable Expression:将条件解释为变量表达式,默认勾选,需要使用 ${__jexl3()}${__groovy()}表达式。例如:${__groovy("${address_id_all1}"=="")}。

Evaluate for all children:条件作用域所有子元素。

 

(2)区别

我把遇到的区别给总结一下(目前就2个),没遇到的就只能等以后再补充了,可以去官网看看(太简洁了):https://jmeter.apache.org/usermanual/functions.html#__groovy , https://jmeter.apache.org/usermanual/functions.html#__jexl3 。

字段上区别

${__groovy()}表达式里面的参数一定要有英文的双引号,例如${__groovy(${address_id_all_matchNr} == "0" or ${address_id_all1_matchNr} == "0",)},字段${address_id_all_matchNr}没有加上双引号,JMeter运行日志就报错

例如:${__groovy("${address_id_all_matchNr}" == "0" },字段${address_id_all_matchNr}加上双引号,JMeter运行日志就不会报错

${__jexl3()}表达式里面的参数可以没有英文的双引号,${__jexl3("${address_id_all_matchNr}" == "0" or "${address_id_all1_matchNr}" == "0",)},字段${address_id_all_matchNr}没有双引号,JMeter运行日志也不会报错

OR语法区别

${__groovy()}表达式里面有OR逻辑判断时,运行结果一定是failed,例如${__groovy(${address_id_all_matchNr} == "0" or ${address_id_all1_matchNr} == "0",)},字段${address_id_all_matchNr}没有加上双引号,JMeter运行日志就报错

${__jexl3()}表达式里面有OR逻辑判断时就不会报错。

其它还没遇到

百度的内容

Groovy和Jexl3都是可以在Java平台上运行的表达式语言,‌但它们在设计目标、‌功能和使用场景上存在一些区别。     

设计目标与功能:‌Groovy是一种动态编程语言,‌设计用于增强Java平台的开发体验,‌提供了丰富的特性如动态类型、‌闭包等,‌旨在提供一种更简洁、‌灵活的方式来编写代码。‌它支持与Java的无缝集成,‌允许开发者使用Groovy编写代码,‌同时也能调用Java库和类。‌相比之下,‌Jexl3(‌JEXL是Java Expression Language的扩展)‌更专注于提供一种轻量级的、‌易于嵌入的表达式语言,‌用于在运行时动态地解析和执行表达式。‌

使用场景:‌Groovy适合于需要快速原型设计、‌脚本编写或者需要利用其提供的丰富特性来简化Java开发的场景。‌它特别适合与Spring等框架一起使用,‌提供了一种更加敏捷的开发方式。‌而Jexl3则更适合于需要在Java应用程序中嵌入简单的表达式解析和执行功能的场景,‌比如在规则引擎、‌业务逻辑快速调整等场合。

语法与特性:‌Groovy的语法更加接近自然语言,‌提供了闭包、‌元编程等高级特性,‌使得代码更加简洁易读。‌而Jexl3的语法相对更加精简,‌专注于表达式的快速解析和执行,‌不包含Groovy那样的高级特性。‌

总的来说,‌Groovy和Jexl3都是为了在Java平台上提供表达式语言的解决方案,‌但Groovy作为一个完整的编程语言,‌提供了更多的特性和灵活性,‌适合于需要更复杂逻辑和快速开发的场景;‌而Jexl3则更加轻量级‌专注于表达式的解析和执行,‌适合于简单的逻辑调整和嵌入使用。‌

 

(3)函数助手

一个工具,感觉了解_jexl3()与__groovy()后用处不大。

页面输入表达式的值,然后点击【生成】自动拷贝函数字符串。然后输出当前JMeternal变量,JMeterTread.last_sample_ok就是IF控制器之前的HTTP请求结果。其它的信息就没有了。

但是,这里没有任何语法校验,没有提示报错或者是IF控制器的结果是True还是False,还没有日志好用。对于熟悉${__jexl3()}或${__groovy()}写法的人来说,这个助手好像没什么用。

最上面的【帮助】,能够跳转到JMeter官网关于函数的介绍页面。

 

From:https://www.cnblogs.com/duguxiangyao/p/18321729
本文地址: http://www.shuzixingkong.net/article/389
0评论
提交 加载更多评论
其他文章 记录荒废了三年的四年.net开发的第二次面试(进复试了)
这次面试的是小公司,深圳计通智能,面试分为初试和复试。使用腾讯视频会议完成。相比与上次面试,这次有所进步,进复试了。当然,这可能也与面试风格有关。这次面试着重与项目经历和技术,因此回答比较顺畅。 这一周干了什么 我先是研究了上次面试没回答出来,或者回答得不好的技术问题。然后顺着简历上的技术,又复习了
[WPF] 脱机环境实现支持拼音模糊搜索的AutoCompleteBox
AutoCompleteBox是一个常见的提高输入效率的组件,很多WPF的第三方控件库都提供了这个组件,但基本都是字符串的子串匹配,不支持拼音模糊匹配,例如无法通过输入ldh或liudehua匹配到刘德华。要实现拼音模糊搜索功能,通常会采用分词、数据库等技术对待匹配数据集进行预处理。某些场景受制于条
[WPF] 脱机环境实现支持拼音模糊搜索的AutoCompleteBox
我可以写代码写到退休吗?记录我的10年前端技术之旅
希望通过分享我个人的经历,给技术人一点信心和方向,原来一直做技术也可以做十年,写代码不仅是我赖以谋生的手段,更是一种生活方式,通过写代码我认识很多志同道合的朋友,在写代码的路上,我也在欣赏和探索这世界
我可以写代码写到退休吗?记录我的10年前端技术之旅 我可以写代码写到退休吗?记录我的10年前端技术之旅 我可以写代码写到退休吗?记录我的10年前端技术之旅
Spectre.Console.Cli注入服务的几种姿势
Spectre.Console大家可能都不陌生,写控制台程序美化还是不错的,支持着色,表格,图标等相当nice,如果对这个库不熟悉我强烈推荐你了解一下,对于写一些CLI小工具还是相当方便的, 本文主要讲讲 Spectre.Console.Cli的服务注入, TA是 Spectre.Console 库
Spectre.Console.Cli注入服务的几种姿势
POJ3278 Catch That Cow
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 222142 Accepted: 67092 Description Farmer John has been
POJ3278 Catch That Cow POJ3278 Catch That Cow POJ3278 Catch That Cow
locust多进程实现分布式压测遇到的问题
多进程分布式的实现: locust分布式时,需借助命令locust 一个一个启动worker,在使用中有点繁琐, 下面借助于多进程,按既定worker数量,一键启动; from locust import FastHttpUser, task, User, events, HttpUser #cla
C# 12 新增功能实操!
前言 今天咱们一起来探索并实践 C# 12 引入的全新功能! C#/.NET该如何自学入门? 注意:使用这些功能需要使用最新的 Visual Studio 2022 版本或安装 .NET 8 SDK 。 主构造函数 主构造函数允许你直接在类定义中声明构造函数参数,并自动生成相应的属性。 主构造函数参
C# 12 新增功能实操! C# 12 新增功能实操!
nginx的一些功能
一、四层(tcp/udp)代理 由于nginx默认是不支持四层代理的因此在安装的时候需要加上对应的模块with-stream ./configure --with-stream # 查看当前nginx安装了什么模块 root@proxy[05:52:09]:/usr/local/nginx $ sb
nginx的一些功能