JSON 提取器使用方法
JSON Path 语法在线网站地址:链接 摘自 https://blog.csdn.net/qq_45664055/article/details/121523930 1、提取 lastName 的值可以写 $.lastName $:代表整个 JSON,根节点 .:点代表下个节点 $.lastName 意思就是,找到根节点下的 lastName 的值 2、提取根节点下的 address,下的 streetAddress根节点下的 address 是一个对象,在 JSON 中以 {} 括起来的叫对象,city 是 address 对象的子节点,所以表达式写为:$.address.streetAddress 3、提取列表中的值 phoneNumbers 的值是一个列表,列表使用 [] 括起来,列表中可以存放多个对象。 提取 phoneNumbers 列表中的第一个对象的 type 的值,语法:$.phoneNumbers[0].type 取列表里面的值,要在后面加上 [],里面填写索引值,第一个对象对应索引 0,第二个对应索引 1,以此类推。 J...
前置处理器
前置处理器(预处理器)是 JMeter 的元素,在测试场景中用于执行采样器请求之前执行的操作。预处理器可用于不同的性能测试需求,例如从数据库中获取数据、在采样器执行之间或在测试数据生成之前设置超时。 BeanShell PreProcessor假设我们要测试一个需要 "token" 参数的请求,这个参数可以是任何随机字符串,我们可以轻松使用预处理器生成随机字符串并在采样器中使用它的一个很好的例子,BeanShell 预处理器适用于此,因为它可以管理性能脚本中的任何程序员任务。 Right Click on the Sampler -> Add -> Pre Processors -> BeanShell PreProcessor 参数说明 Reset bsh.Interpreter before each call:在每次调用之前重置解释器并清除占用的内存。将此选项设置为 "True" 对于长时间运行的脚本可能很有用,因为重复调用可能会消耗大量内存 Parameters:将传递给 BeanShell 脚本的 JMete...
把 JMeter 结果数据写入到指定文件
背景在日常的功能测试或者性能测试的时候,需要把结果中指定的数据保存到指定的文件,进行使用。 示例围绕 Beanshell 来实现这个功能。 下面从两个方面来实现保存接口返回指定的数据从数据库用 SQL 语句取数据,保存结果到指定文件中保存接口返回指定的数据接口:登录 需求:提取 token 值 新建 HTTP 请求 请求返回的结果,这里直接用 JSON 显示: 新建 JSON 提取器 调试,看有没有获取到值添加 debug sampler 运行,查看 debug sampler 响应数据里面 token 有没有取到值 添加 Beanshell 取样器 代码1234567891011121314151617181920212223242526272829303132333435363738// 指定需要写入到 xxx 文件,若没有该文件会新建;若存在该文件,多次执行将以追加模式展示File file = new File("D:/xxx.txt");if (!file.exists()) { // 创建失败会抛出异常 throw new...
结合 CMD 方式使用 JMeter
使用命令行方式运行Jmeter前言命令行方式支持在多个环境下使用,windosw的dos环境下,也可以在linux环境上执行。 怎么用**执行路径:**执行命令前要检查当前目录是否是%JMeter_Home%\bin目录;如果 JMeter 脚本不在当前目录,需要指定完整的路径;如果要把执行的结果保存在其他地方也要指定完整的路径。命令中不指定测试计划与测试结果的路径时,默认都是在该目录下。 命令:jmeter -n -t <testplan filename> -l <listener filename> 示例测试计划与结果,都在%JMeter_Home%\bin目录1jmeter -n -t test1.jmx -l result.jtl 指定日志路径的1jmeter -n -t test1.jmx -l report\01-result.csv -j report\01-log.log 默认分布式执行1jmeter -n -t test1.jmx -r -l report\01-result.csv -j report\01-log.log ...
记一次项目压测
结合项目说下压测/调优项目压测,CPU 占用比较大,除了测试服务器本身的性能影响外,还存在项目本身的问题。这是服务器的配置: 4 core, 8G, 磁盘 50g,作为一个高峰期并发不到 1000 的项目,总的来说这个配置还能用。然后并发刚到 30,就这样了: 最下面两条的是两台服务器内存。粉色的是项目所在服务器的 CPU,蓝色是 DB CPU,项目占用 CPU 飙的太狠,所以展开调查。 压测调优步骤压测,将 ramp up 时间弄得稍微长一点。项目是 Docker 服务,JDK 版本 1.8。 docker exec -it id bash:进入容器。需要进入容器操作 jstack 命令 jps -l:查看 Java 服务 PID,当然容器内部就一个服务包和 OpenJDK jstack -l pid >> /opt/xxx.txt:将堆栈信息打出来 通过 jstat -gcutil pid 查看 M 的值,即 MetaSpace 区使用率 通过 jstat -gc pid 2s(间隔时间) 3(持续次数) 命令查看 MU/MC 即 ...
Kettle 是什么
Kettle 中文网 免费开源的基于 Java 的企业级 ETL 工具ETL(Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理、转换、迁移,所以了解并掌握一种 ETL 工具的使用必不可少。 这里我介绍一个在工作中使用了 3 年左右的 ETL 工具 Kettle,本着好东西不独享的想法,跟大家分享碰撞交流一下!在使用中我感觉这个工具真的很强大,支持图形化的 GUI 设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现。其中最主要的是,我们通过熟练地应用它,减少了非常多的研发工作量,提高了工作效率。
Job 和 Trans 的参数详解
pan 调用示例1sh pan.sh -rep=initech_pdi_repo -user=pgibbons -pass=lumburghsux -trans=TPS_reports_2011 -param:db_ip=$db_ip -param:db_name=$db_name 参数 参数说明 rep 企业或数据库存储库名称 user 仓库用户名 pass 仓库密码 trans 要启动的转换的名称(在存储库中显示) dir 包含转换的存储库目录,包括前导斜杠 file 如果调用的是本地 KTR 文件,则为文件名,如果不在本地目录中,则包括路径 level 日志级别(Basic, Detailed, Debug, Rowlevel, Error, Nothing) logfile 将日志输出写入的本地文件名 listdir 列出指定存储库中的目录 listtrans 列出指定存储库目录中的转换 listrep 列出可用的存储库 exprep 将所有存储库对象导出到一个 XML 文件 norep 防止 Pan 登录到存...
Kettle 开发中需要注意的问题点
注意点 过滤记录或者字段选择等组件,无法出现上面步骤中的字段的时候,尝试在上面步骤中再次点击确定。 两个数据流 join 前必须先进行排序操作。 数据流从计算器或 join 操作流出,并将流入另一 join 操作之前,需要插入一个字段选择插件。 表输入插件中,填写查询语句时,语句末尾不能加分号。Kettle 8.2 以上无此问题 SQL 脚本插件中,填写 SQL 语句时,语句末尾必须加分号,否则不会执行。Kettle 8.2 以上无此问题 引用变量时,采用 ${变量名} 的方式引用,以免出现问题。此种引用方式还可以在变量内容后接其他字符串,例如:${key}_20151217 会被解析为:value_20151217。 Job 中执行多个 trans 时,如何确定 trans 执行的先后顺序?根据连接线的先后顺序执行,如果需要优先执行则先连接从开始到该 trans 的连线即可。 如果源数据中有空值,但是目标数据中不希望出现空值: 直接设置目标数据库各列的默认值为空字符串是不行的,因为只有不对某列赋值才会填入默认值,而 NUL...
Kettle 安装及支持 ClickHouse 开发配置
Kettle 下载地址 选择需要的版本,进入这个路径,下载这个 CE 解压 Kettle 安装包下载 ClickHouse 所需驱动包 将 clickhouse-plugins 文件夹复制到 Kettle 的 data-integration\plugins 文件夹里 复制驱动包里的其余 jar 包,粘贴到 Kettle 的 data-integration\libswt\xxx 目录下根据自己的系统而定,Linux 环境使用 uname -r 先看下系统。 启动 Kettle 编辑工具双击 data-integration 目录下 Spoon.bat 启动。
Kettle 记录集合里面的记录数说明
记录集合里面的记录数 该数量是指组件与组件之间通信的缓存队列的 size 大小,Kettle 内部用 List 实现该缓存队列,每一条语句都会被封装成一个 RowSet 对象,每个组件之间都会有个 List<RowSet> 队列,源 step 每次会往该队列写一条数据,目标 step 每次会从队列读取一条数据。 Kettle 里面转换是并行的,数据是一条一条流经每个组件,队列大小采用默认的 10000 条即可。 但是当使用到「阻塞数据直至步骤完成」、「阻塞数据」相关组件时,则需要根据业务数据量扩大该 size 的大小。 否则,数据会一直在某两个组件之间的缓存队列中存放,当数量达到一定大小时,就会卡住不动。 缓存队列的大小对作业没有影响,查看源码发现,缓存队列由 inputRowSet 和 outputRowset 组成,底层实现是 ArrayList,初始化创建的时候,默认容量为 10,并不会直接创建设定长度的数组。并且使用 ArrayList 的特性:当要添加的数据量超过数组的容量时候,ArrayList 会动态扩容,size 扩大 1.5 倍。
