6 HTTP代理服务器(HTTP(S) 测试脚本录制)
HTTP代理服务器,用于使用JMeter自身的工具来录制脚本。HTTP代理服务器通过右键点击菜单,选择“添加->非测试元件->HTTP代理服务器”而获得。其界面如图59所示。
图59 HTTP代理服务器测试计划创建标签
HTTP代理服务器为用JMeter录制脚本的元件。
- Global Settings:
Ø 端口:代理服务器监听的端口,一定要与Internet代理服务器中设置的代理端口保持一致。
Ø HTTPS Domains:指定HTTPS域(或主机)名称列表。用于预生成所有要记录的服务器的证书。例如:.example.com,.subdomain.example.com。
注意,通配符域只适用于一个级别,即my.subdomain.example.com与*.subdomain.example.com匹配,但是不和*.example.com匹配。 - 启动按钮:启动代理服务器。一旦代理服务器启动并准备接受请求,JMeter就向控制台写入以下消息:“代理启动并运行!”
- 停止按钮:停止代理服务器;
- 重启按钮:停止并重新启动代理服务器,当你改变/添加/删除 包含/排除过滤器时,这个按钮很有用。
(一)测试计划创建标签
- 测试计划内容
Ø 目标控制器:指定代理录制的脚本保存到哪个控制器。
Ø 分组:是否将录制的单个“点击”(请求接收而无明显时间间隔的请求)的请求分组,以及如何在录制中表示该分组。
√不对样本分组:对所有录制的取样器不分组。
√在组间添加分组:在取样器分组之间添加以名为"------------"的控制器。
√每个组放入一个新的控制器:每个分组放到一个新的简单控制器下。
√只存入每个组的第一个样本:只要每个分组的第一个请求会被录制,而这些取样器的"跟踪重定向"and "检索所有嵌入资源"等将被设置上。
√将每个组放入一个新的事务控制器:为每个分组创建一个事务控制器,那个分组的所有取样器都保存在控制器下。
Ø 记录HTTP信息头:表示是否向测试计划添加信息头。如果选择,那么将向每个HTTP取样器添加HTTP信息头管理器。代理服务器会从生成的头管理器中删除Cookie和授权头。默认情况下,也移除了removes If-Modified-Since和If-None-Match头。这些用于确定浏览器缓存项是否是最新的。在录制一个需要下载所有内容时,通常需要下载所有内容。要修改那些哪些额外的头部要删除,可修改JMeter属性文件%JMETER_HOME%\bin\jmeter.properties中的。
proxy.headers.remove=If-Modified-Since,If-None-Match,Host
Ø 添加断言:为每个空的取样器添加一个断言。
Ø Regex matching:指定在替换变量时是否使用正则表达式匹配。如果选择,则将取样器中的信息使用正则表达式来匹配用户定义变量值,替换为变量名(${变量名})。匹配的时候,只接受真个词匹配,而不接受匹配单词一部分。
- HTTP sampler设置。
Ø Transaction name:在录制时,在取样器名称前添加指定的前缀,或者用户指定的事务名称替换取样器名称。Name scheme有如下四个选项(prefix前缀、Transaction
name替换名称、suffix后缀和using format String使用定义的格式)。如果设置using
format String,默认给出“#{counter,number,000} - #{path} (#{name})”定义格式。
Ø Create new transaction after request (ms):两个请求之间的不活动时间(需要在两个单独的组中考虑它们)。
Ø Recordingrsquo;s default encoding:录制默认的编码格式,比如utf-8。
Ø Type:要生成哪种类型的取样器(HTTPclient4默认或Java)
Ø 自动重定向:录制的取样器是否要设置自动重定向。
Ø 跟随重定向:录制的取样器是否要设置跟随重定向。
Ø 从HTML文件中获取所有内容的资源:录制的取样器是否要设置选择HTML文件中获取所有包含的资源,比如css、js或图片文件。
Ø Use keep Alive :录制的取样器是否要设置keep Alive。在第3.4.1中我们介绍,以前的HTTP是无连接性的,通过头文件增加keep Alive的属性,变为了有连接的。
- JMeter GraphQL HTTP Sample setting。GraphQL 是一种针对 Graph(图状数据)进行查询特别有优势的 Query Language(查询语言),所以叫做 GraphQL。由于GraphQL一直没有被广泛使用,所以在这里不进行介绍。
(二)Content Type filter标签
Content Type filter标签如图60所示。
图60 HTTP代理服务器Content Type filter标签
在这个标签中,可以根据content-type过滤请求,比如“text/html [;charset=utf-8 ]“。这个字段为正则表达式,它会检查content-type是否包含了“指定字符串[不必匹配整个字段]”。先检查content-type的包含过滤器,再检查排除过滤器。过滤掉的取样器将不会被储存。如果你不想录制css、js,png等格式的文件,可以在Exclude设置“(?i)..(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2)(.?)”正则表达式。
- 包含模式:使用它可以过滤URL,只有取样器的完整URL匹配的正则表达式才会被记录。如果Include和Exclude都为空,则记录所有内容。
如果在包含模式中至少有一个条目,则只记录匹配一个或多个包含模式的请求。
如果我们要录制某个网站的请求,可以添加一个URL过滤,防止录制不必要的请求
- 排除模式:使用它可以过滤URL,满足该条件的请求不会被录制。
- 将过滤过的取样器通知子监听器:通知被过滤取样器的子监听器。匹配一个或多个排除模式的任何响应都不会传递给子监听器。