1、HTTP请求默认值介绍

我们在JMeter中编辑测试计划时,如果有多个​​Sampler​​(取样器)请求中,参数和设置都是相同的,例如请求服务的IP地址、协议、端口号等,这些信息重复的配置在每个​​Sampler​​中,就会增加重复工作量和冗余度,如果以后项目服务器地址发生改变,修改起来也是非常麻烦的。

HTTP请求默认值(​​Http Request Defaults​​)这个配置元件,可以将这些重复的配置都放在一起,其他的​​Sampler​​请求元件就不需要再配置这些重复的内容,那么只要将这些信息留空,这个字段将自动继承HTTP请求默认值组件中的值,达到了一次配置重复调用的效果。

2、HTTP请求默认值界面

配置元件中的HTTP请求默认值(​​HTTP Request Defaults​​)界面,和取样器中HTTP请求(​​HTTP Request​​)基本相同。

添加HTTP请求默认值组件:​​选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP请求默认值​​。

界面如下图所示:

JMeter配置元件【HTTP请求默认值】_性能测试

 

示:因为HTTP请求默认值组件的界面和HTTP请求组件的界面基本相同,所以在这里就不进行说明了。如果想查看HTTP请求默认值组件界面的详细说

3、HTTP请求默认值的使用

(1)用于演示的项目说明

​Httpbin​​是一个使用​​Python + Flask​​编写的​​HTTP Request & Response Service​​项目,该服务主要用于测试 HTTP库,你可以向他发送请求,然后他会按照指定的规则将你的请求返回(查看你所发送请求中的信息)。

​Httpbin​​支持​​HTTP/HTTPS​​请求,支持所有的HTTP动词,能测试HTTP请求和响应的各种信息,比如 ​​cookie​​、​​ip​​、​​headers​​ 和登录验证等。

​Httpbin​​接口地址:​​httpbin.org​

提示:按照规则请求​​http://httpbin.org/​​,会返回发送请求报文的完整内容。有详细说明。

(2)测试计划内包含的元件

添加元件操作步骤

  1. 创建测试计划。
  2. 创建线程组:​​选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组​​。
  3. 在线程组中,添加配置元件"HTTP请求默认值"组件:​​选中“线程组”右键 —> 添加 —> 配置元件 —> HTTP请求默认值​​。
  4. 在线程组里面,添加取样器“HTTP请求”组件:​​选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求​​。
  5. 在线程组里面,添加监听器“察看结果树”组件:查看结果,​​选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树​​。

最终测试计划中的元件如下:

JMeter配置元件【HTTP请求默认值】_默认值_02

 

点击运行按钮,会提示你先保存该脚本,脚本保存完成后会直接自动运行该脚本。

(3)说明HTTP请求默认值用法

我们需要把每个请求的公共参数,提取到HTTP请求默认值组件中。

如下图所示:

JMeter配置元件【HTTP请求默认值】_jmeter_03

然后在每个请求的元件中,编辑自己独有的信息即可。

例如,编写每个请求中独有的访问路径,和所需的传递参数等。

如下图所示:

JMeter配置元件【HTTP请求默认值】_默认值_04

而在HTTP请求默认值组件中配置的参数,在这里都不用重复填写,留空就可以,会自动的继承HTTP请求默认值组件中的配置。

如果此时请求取样器中填写了和HTTP请求默认值组件中配置相同的选项,则以当前取样器的配置为准。

(其他请求同理)

4、总结

配置元件中的HTTP请求默认值(​​HTTP Request Defaults​​)界面,和取样器中HTTP请求(​​HTTP Request​​)基本相同,所以该组件可以为HTTP请求设置默认值。

优先级说明

  1. JMeter支持在一个测试计划中添加多个HTTP请求默认值组件,多个HTTP请求默认值组件中的值会合并叠加。
  2. 在相同作用域内,若有多个HTTP请求默认值组件,如果配置了相同的选项,默认使用第一个HTTP请求默认值组件中定义的信息。

5、拓展知识

这里我们拓展一下配置元件中用户定义的变量(​​User Defined Variables​​)组件的用法。

用户定义的变量组件和HTTP请求默认值组件的用法基本一样。

  • HTTP请求默认值组件:管理测试计划中相同的请求配置,作用域范围内的​​sample​​请求无需重复配置。
  • 用户定义的变量组件:管理测试计划中不相同的请求配置,其他的​​Sample​​请求直接引用变量即可,方便对变量的统一管理。