文章目录
- 功能组件详细介绍
- 当前脚本涉及使用的组件介绍
- 软件版本介绍:
- TestPlan:
- Thread Group:
- Test Fragment:
- Module Controller:
- Transaction Controller:
- If Controller:
- User Defined Variables:
- CSV Data Set Config:
- JDBC Connection Configuration:
- JDBC Request:
- Http Request Default:
- Http Header Manager:
- Http Request:
- Constant Timer:
- Debug PostProcessor:
- BeanShell Sampler:
- BeanShell Assertion:
- JSON Extractor:
- View Result Tree:
- View Result in Table:
- Summary Report:
- jp@gc - Transactions per Second:
- jp@gc - Hits per Second:
- jp@gc - Transaction Throughput vs Threads:
- jp@gc - Stepping Thread Group:
- Jmeter其他使用介绍
功能组件详细介绍
当前脚本涉及使用的组件介绍
软件版本介绍:
备注:软件支持切换中文版本,如果对于英文版觉得可读性较差的话可以考虑切换,本次介绍的相关界面均是在英文版的状态下截取。
本次java使用1.8版本Jmeter使用的版本是5.1.1. r1855137,不同的版本支持的组件上会略有差异。根据使用需要来安装所需的模块。
Jmeter官网下载链接地址:https://jmeter.apache.org/download_jmeter.cgi
TestPlan:
测试计划,类似开发工具中的Workspace; 支持添加一些自定义的User Defined Variables配置属性和添加一下jar到运行的ClassPath
Thread Group:
线程组,类似开发工具中的Project; 很多其他的元素必须在这个组件下才可以使用。它作为控制测试计划线程信息、执行时间等信息的结构。
当前Thread Group 可以支持设置运行线程数、循环次数、并且可以设置运行时间等等。
Test Fragment:
公共组件模块,该模块本身比较简单不支持独立运行,需要配合Module Controller来实现复用某些基础模块(比如登陆鉴权)。该模块的存在位置只能是Test Plan 的次一级,无法在其他的Controller结构中存在。
Module Controller:
Controller在Jmeter中是用于控制测试计划层级的模块,类似于java代码中的project、module、package等等概念。当前Controller可以自动识别Test Plan 中所有的Controller结构,并展示精简视图,可以挑选其中一个进行执行。这个东西比较秀,类似于Java中的调用方法,可以实现脚本的复用。选中哪一块,当前脚本就执行的哪一块。选中的部分颜色显示不一样。
Transaction Controller:
Controller在Jmeter中是用于控制测试计划层级的模块,类似于java代码中的project、module、package等等概念。当前Controller可以实现针对结果树展示的测试结果详情的树型结构控制,以模块的形式展示测试结果。
在勾选Generate parent sample 的情况下可以让结果树展示如下的层级效果
勾选Include duration of timer and pre-post processors in generated sample的情况下会讲整体用例的耗时中增加定时器、前置处理器(Pre Processors)和后置处理器(Post Processors)处理所需的部分。会比程序实际消耗的时间长。
If Controller:
Controller在Jmeter中是用于控制测试计划层级的模块,类似于java代码中的project、module、package等等概念。当前Controller用于控制在满足特定条件的时候才执行该Controller下的相关脚本内容。
关于函数使用部分,工具本身提供了快捷生成的工具。根据需要选择相应的函数来通过generate功能自动生成。
User Defined Variables:
用户自定义配置属性设置的模块,方便做一些配置信息的设置
CSV Data Set Config:
从Excel中读取信息的相关组件,多线程模式下,支持每个线程读取不同的行,循环进行信息读取。这个特性在压测场景下可以有比较好的运用。
重要属性详细介绍:
- Variable Names 配置读取属性的名称,支持配置对个,按照顺序以此填写属性名称,中间用逗号分隔
- Ignore fisrt line 是否跳过第一行,默认False(当excel表格存在标题时可以设置成True)
JDBC Connection Configuration:
数据库连接池配置,和Java代码中的连接池效果类似,有一点比较好的也可以说事不太好的,就是密码部分信息是加密显示的。如果直接配置具体信息不使用引用,相对安全性较高,但是配置的繁碎程序增加,每增加一个环境需要增加一个配置。
JDBC Request:
数据库操作的请求,增删改查类型的请求均可以使用该组件。结构上非常像Java的xxxMapper.xml。这个结构分为大类用法:
不带Prepared类型
如下图所示,直接拼装完整的sql到填写sql的区域,这种方式在安全性上存在一定的隐患,因为不校验语句中的引用部分${}的实际内容,可能会存在sql注入的风险。但是自己测试用的时候可以控制好。
带Prepared类型
如下图所示,直接拼装完整的sql到填写sql的区域,这种方式在安全性上存在一定的隐患,因为不校验语句中的引用部分${}的实际内容,可能会存在sql注入的风险。但是自己测试用的时候可以控制好。
关于Variable names和Result variable names,直接通过Debug PostProcesor效果查看结果效果就知道改如何使用。
- 获取某个列表查询的list长度,选择某一个必定返回的结果的属性,以patId为例,${patId_#}可以表示本次sql查询的列表长度
- 获取返回结果中一条制定的
- 下标固定的情况${patId_0}
- 下标为引用值KaTeX parse error: Expected group after '_' at position 2: {_̲_V(patId_{numSrcType3SchIndex},1)} **${numSrcType3SchIndex}**这个本身就是一个取值函数,预期取到一个Integer类型的值
Http Request Default:
用于配置http请求的默认信息,比如ip、端口、Protocol等,这样就不需要在没一个Http Request中都重复配置,减少配置工作量。类似于Java父子类的使用效果,父(Http Request Default)子(Http Request),子类可以从父类中继承一些配置信息,也可以覆盖父类中的一些配置信息。
Http Header Manager:
Http请求Header信息管理器,用于设置Http Request 所需的Header信息
Http Request:
具体Http请求的配置类,按照需要使用相关的工功能。本次介绍脚本中仅针对基础的POST请求方式做使用。
Constant Timer:
定时休眠组建,效果上等价于Java的Thread.sleep()
Debug PostProcessor:
开启全局的调试,只要在某个位置放置了该元素,在这之后所有执行的步骤在结果树中都可以查看执行当时的完整的配置属性信息,信息分为如下几种:
- Jmeter propertiers Jmeter本身的配置参数(线程数、Jmeter版本信息、配置文件路径等)
- Jmeter variables Jmeter中各类User Defined Variables中配置的属性
- Sample Properties 某个脚本执行时的一些临时参数,类似于java Method中的一些临时变量
- System properties 设置系统参数(编码信息、Classpath、Java Home等)
BeanShell Sampler:
编写Java混合代码的组件,是一个轻量级Java脚本语言(Lightweight Scripting for Java),当前官方建议使用groovy。可以根据需要来挑选使用。官网详细介绍:https://beanshell.github.io/
BeanShell Assertion:
编写Java混合代码的组件,语法上和BeanShell Sampler一样,区别点就是这边可以设置Failure和FailureMessage来控制某个接口执行后断言判断结果。
JSON Extractor:
从接口返回结果中(Json格式)提取某些特定属性值的组件,具体JSON Path expressions可以在结果树中挑选Json形式试图时测试。支持一个组件获取多个属性,中间用逗号分隔,属性名称和提取的表达式要一一对应。
View Result Tree:
树型结构的结果试图,用于查看接口测试的详细的返回结果信息,配合Transation Controller 使用可以让结果试图程结构化的树型结构,可以比较清楚的了解目前执行的接口模块哪些块存在问题。
View Result in Table:
以Table形式展示结果树,这个可以比较直观的看到每一个接口开始运行的时间。一般用于看一些宏观层面的信息,不便于看详细的信息。详细信息还是建议查看结果树。另外,Child samples这个可以控制运行结果查看的目录层级,默认不勾选,只会看到最上一层的返回结果树,勾选了就可以看到子级用例的情况。
Summary Report:
聚合报告组件,用于展示目前接口的相关统计信息包含:取样数量,请求耗时、耗时中位数、耗时最大/小时间、成功请求的通过率、吞吐量、接口返回的数据量等等
jp@gc - Transactions per Second:
jp@gc系列监控组件, 监听动态TPS,用来分析吞吐量。
jp@gc - Hits per Second:
jp@gc系列监控组件, 此图将显示测试计划每秒向服务器生成的点击数。Hits从事务和嵌入资源Hits中取消获取子样本。
jp@gc - Transaction Throughput vs Threads:
jp@gc系列监控组件, 监听随着线程数增长系统吞吐量变化的状况。
jp@gc - Stepping Thread Group:
同样作为一款线程控制组件,对比默认的Thread Group,它的功能更强大一点,可以实现比较灵活的线程数,运行时间等等的控制,同时还能配合其他的jp@gc监控组件使用。
目前配套的jp@gc系列监控组件有很多,有需要的可以自行研究下
Jmeter其他使用介绍
备注:目前选择加载哪个环境的参数通过Module Controller 来实现控制,需要切换环境情自行切换选择,其余信息可以不做改动直接执行。
开启/禁用 某一个模块
选中脚本的某一部分,点击这个按钮或者使用快捷键Ctrl+T触发,可以修改某个部分脚本的启用状态,灰色效果的就是当前警用的部分。
运行/终止脚本运行
在空TestPlan的情况下可以快捷的按照预设模板生成一些测试脚本,可以用于了解一些其他的附属功能。
查看运行日志
点击右上角的图标来切换打开/关闭日志信息查看窗口,调试日志配合开启Debug功能可以很好的支撑调试所需。
使用预设模板
在空TestPlan的情况下可以快捷的按照预设模板生成一些测试脚本,可以用于了解一些其他的附属功能。