性能测试的JMeter引擎和开源JMeter有什么异同?
性能测试的JMeter引擎,基于开源Apache JMeter实现,默认版本为5.4,可以兼容5.2、5.3版本(需用户自行上传)。
性能测试的JMeter引擎,相对于本地开源JMeter,主要有以下优势:
- 自动化的分布式调度。
- 测试结果的汇聚能力和可视化。
- 分布式的多阶段能力。
性能测试的JMeter引擎支持哪些脚本?
- 未使用任何第三方插件的5.2版本-5.4版本的JMeter创建的jmx脚本。
- 使用了第三方插件,但是插件可以以jar包形式上传,且未修改ThreadGroup实现的大部分脚本(性能测试不确保此类脚本可以正常使用,需要在性能测试平台进行调试)。
性能测试的JMeter引擎不支持脚本中哪些操作?
- 性能测试不支持日志输出,仅支持请求日志。
- 性能测试不支持线程组配置页面使用变量。
上传JMeter脚本/CSV/第三方jar包/安装包等出错怎么办?
如果上传时出错,请确保是在公网中使用性能测试工具,不是在内网中使用性能测试工具。
应用于性能测试的脚本,有哪些使用建议?
- 性能测试不建议脚本中有各种结果查看器。
因为性能测试不使用结果查看器,且结果查看器会对压测性能造成影响,不同结果查看器对性能的影响也不一致,若使用,请自行评估。
- 使用性能测试压测,当脚本的并发总和大于1000,或在“任务 > 高级配置 > 执行器数”配置中配置了执行器数,需要考虑脚本中的各类属性能否应用于分布式场景(即多台机器同时运行脚本)。
- 不建议使用常数吞吐量定时器。
JMeter的常数吞吐量定时器性能较差,会影响压测执行机的性能,造成压测结果不准确。建议使用JMeter的准确的吞吐量定时器来进行替代。若一定使用常数吞吐量定时器,其对执行机性能的影响需用户自行考虑,评估。
- 使用各类吞吐量控制器时,性能测试的JMeter工程的调试功能,结果可能不符合预期。
其原因是性能测试的调试只执行脚本一次,此场景建议使用一定数量的并发,小规模短时间的执行替代调试。
性能测试的错误日志是怎么显示的?
- 默认按每种不同返回状态码进行抽样,按10‰的抽样比例采集成功/失败的请求日志。
- 失败日志的采集比例可以在“高级配置 > 失败日志采集”比例中调整,最大1000‰。
全局变量功能是如何使用的?
1、打开JMeter脚本-Test Plan,在页面右侧User Defined Variables定义变量。
2、在脚本中引用变量
3、登录性能测试控制台,在左侧导航栏选择“JMeter测试工程”。
4、单击待导入全局变量的工程名称,进入“测试计划列表”页签。
5、单击待添加全局变量的测试任务名称,进入线程组页面。
6、 单击页面右上方的“全局变量”,在弹出的对话框中单击“添加变量”。
变量有两种类型,分别是静态变量和均分变量:
- 静态变量:以字符串形式下发内容,当脚本分布式执行时,每个节点获取到的变量值一样,如,下发静态变量successRate=0.8,2000并发,分两个执行器执行,每个执行器中的脚本中变量successRate的值都是0.8。
- 均分变量:以整数的形式下发内容,当脚本分布式执行时,每个节点获取到的变量值平均分配,平均分配时采用整数除法,余数会被分配到其中一个节点,例如:
- 下发均分变量tps=100,分四个执行器,每个执行器中的脚本中的变量tps的值是25。
- 下发均分变量tps=20,分3个执行器,每个执行器中的脚本中的变量tps的值是8,6,6。
- 下发均分变量tps=1,分四个执行器,每个执行器中的脚本中的变量tps的值是1,0,0,0。
综上,使用均分变量时需注意:
- 若被分配的值对是否均分非常敏感,请手动设置执行器数,确保变量的值是执行器数的整数倍。
- 若被分配的值对是否均分不严格敏感,建议将被分配的值尽量调大,减少整数除法余数的影响,使其基本平均分配。
- 若被分配的值不能为0,请手动设置执行器数,并确保变量的值大于执行器数。
说明在全局变量中配置的变量,若脚本的Test Plan - User Defined Variables中存在,则会覆盖脚本中定义的值。
若不存在,会在脚本的Test Plan – User Defined Variables出新建对应变量。
上传第三方jar包时需要注意什么?
- 请确保第三方jar包在本地JMeter工作时,位于JMeter根目录/lib/ext下。
- 请确保使用第三方jar包的脚本在本地可以正常运行。
- 导入文件的名称长度上限为64字节(含后缀),大小上限为10M。
上传CSV文件时需要注意什么?
- 请确保CSV在本地JMeter可以正常取值,使用。
- 请上传CSV(UTF-8无BOM)格式的文件,不要上传其他格式,可能存在编码读取问题。
上传自定义安装包时需注意什么?
- 必须是从apache官网直接下载得到的ZIP压缩包,或目录结构与从apache直接下载得到的ZIP压缩包完全一致的压缩包。
- JMeter版本必须是5.2-5.4。
- 如果ZIP包中包含第三方插件,上传后第三方插件也会对性能测试的JMeter引擎产生影响。
为什么用JMeter软件设置请求头content-type为utf-8,请求返回正常,使用性能测试请求返回乱码?
性能测试需要在请求头content-type中指定utf-8编码,且删除跟业务无关的请求头字段(如“Accept-Encoding: gzip”等)。
JMeter报告,为什么日志的事件日志中出现JMeter超时?
JMeter测试任务在长时间(10分钟)没有产生任何采样数据,工具会强制终止。
JMeter用例调试时,为什么在很短的时间(小于5秒)内失败,页面无数据?
请检查JMeter测试计划所需的变量文件以及第三方jar包是否全部上传。