JMeter基础 — JMeter的HTTP代理服务器详细介绍
Posted 测试baby
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JMeter基础 — JMeter的HTTP代理服务器详细介绍相关的知识,希望对你有一定的参考价值。
HTTP代理服务器允许JMeter在使用常规浏览器,浏览Web应用程序时拦截并记录操作。JMeter将创建测试样本对象,并将其直接存储到的测试计划中。这样你就可以在操作录制的同时,还可以查看录制的测试计划。
要使用HTTP代理服务器,需要设置浏览器对所有HTTP和HTTPS请求使用代理。录制脚本时,最好使用无痕浏览模式,这可以确保浏览器没有存储的Cookie信息,并防止保存某些更改。例如:Firefox不允许永久保存证书替代。
1、HTTP代理服务器的添加
添加HTTP代理服务器组件操作:选中“测试计划”右键 —> 添加 —> 非测试元件 —> HTTP代理服务器。
HTTP代理服务器界面如下:
2、HTTP代理服务器界面详解
HTTP代理服务器组件的详细说明:
- 名称:HTTP代理服务器组件的自定义名称,见名知意最好。
- 注释:即添加一些备注信息,对该HTTP代理服务器组件的简短说明,以便后期回顾时查看。
(1)State:状态
说明:
- 启动按钮:启动代理服务器。一旦代理服务器启动并准备接受请求,JMeter就向控制台写入消息:“代理启动并运行!”
- 停止按钮:停止代理服务器。
- 重启按钮:停止并重新启动代理服务器。当你操作(改变、添加、删除)包含、排除过滤器时,这个按钮很有用。
(2)Global Settings:全局设置
说明:
- 端口:设置JMeter代理服务器所要用的端口,不能被占用,否则JMeter无法使用。
- 默认启用8888端口。
- 可以在CMD中使用netstat -ano|findstr "8888"查看端口是否被占用。
HTTPS Domains:编写代理主机的域名或者主机IP地址,可以对指定地址进行请求录制。
例如:* .example.com,*.subdomain.example.com。
(3)Test Plan Creation:测试计划创建
test plan content:测试计划内容。
说明:
目标控制器:选择录制的脚本所保存的位置。
1)使用录制控制器:需要在线程组中添加录制控制器组件(在逻辑控制器元件中添加)。
否则在开启HTTP代理服务器的时候会提示:
properties
Target Controller is configured to "Use Recording Controller" but no such controller exists, ensure you add a Recording Controller as child of Thread Group node to start recording correctly
意思是:你选择存储脚本的目标控制器为“使用录制控制器”,但不存在这样的控制器,请确保将录制控制器组件添加为线程组节点的子节点,才可以正确开始录制。
2)测试计划>线程组:录制的脚本保存到目标线程组。(只有在测试计划中添加了线程组,才能看到该选项)
3)测试计划>HTTP代理服务器:录制的脚本保存到HTTP代理服务器组件下。
4)Test Plan > 线程组 > 控制器:录制的脚本保存在线程组中的目标控制器下。(只有在测试计划中添加了控制器,才能看到该选项)
分组:是否将录制的单个“点击”请求进行分组,以及如何在录制中表示该分组。
1)不对样本分组:很好理解,就是请求什么就记录什么,对所有录制的取样器不分组。
2)在组间添加分隔:每一个Sampler结束都会有分隔符间隔开。即:在取样器分组之间添加以名为----------的控制器。
3)每个组放入一个新的控制器:每一个Sampler请求开始时,都会有一个简单控制器生成。即:每个分组放到一个新的简单控制器下。
4)只存储每个组的第一个样本:每个Sampler请求时,如果有子请求,那子请求是不会被记录的,只记录第一个URL请求的样本,而这些取样器的Follow Redirects和Retrieve All Embedded Resources…等选项将被设置上。这种情况虽然很多人说比较推荐,但是个人觉得会丢失许多重要的请求,建议大家还是视情况选择。
5)Put each group in a new transaction controller:每个Sampler请求开始时,都会生成一个事务控制器,分组的所有取样器都保存在控制器下。
记录HTTP信息头:要向测试计划添加信息头吗?如果勾选,则将向每个HTTP取样器,添加HTTP信息头管理器。
添加断言:为每个空的取样器添加一个断言。
Regex matching:指定在替换变量时,是否使用正则表达式匹配。
如果勾选,则将取样器中的信息,使用正则表达式来匹配用户定义变量值,替换为变量名${变量名},进行替换。匹配时,它只接受整个词匹配,不接受匹配单词一部分。
(4)Requests Filtering:请求过滤
说明:
Content Type filter:根据请求头中的content-type属性过滤请求,例如"text/html [;charset=utf-8 ]”。
该字段为正则表达式,它会检查content-type属性中,是否包含了指定字符串[不必匹配整个字段]。
顺序是:先检查content-type的包含过滤器,再检查排除过滤器,过滤掉的取样器将不会被储存。
包含模式:使用它可以过滤URL路径,只有取样器的完整URL匹配通过,该正则表达式才会被记录。
如果在包含模式中至少有一个条目,则只记录匹配一个或多个包含模式的请求。
如果我们要录制某个网站的请求,可以添加一个URL过滤,防止录制不必要的请求。
排除模式:使用它可以过滤URL,满足该条件的请求不会被录制。
Notify Child Listeners of filtered samplers:通知子监听器被过滤的采样器。
提示:
- 包含和排除模式使用正则表达式匹配。它们将与每个浏览器请求的主机名,端口,路径和查询(如果有)进行匹配。
- 如果有任何包含模式,则URL 必须至少与这些模式之一匹配,否则将不会被记录。如果存在任何排除模式,则URL
不得与任何模式匹配,否则它将不会被记录。通过使用包含和排除的组合,可以筛选记录实际需要记录的测试样本。
- 注意:由正则表达式匹配的字符串必须与整个 host + path字符串相同。
- 如果要记录录制过程中样本的响应数据,需要将查看结果树,添加为HTTP代理服务器的子代组件。即可通过查看结果树,查看录制的请求响应数据。
(5)HTTP Sampler settings:HTTP取样器设置
说明:
prefix/Transaction name:在录制时,在取样器名称前添加指定的前缀,或者使用用户指定的事务名称,替换取样器名称。
例如:指定prefix为aa,如下图所示:
例如:指定transaction name为bb,如下图所示:
- Create new transaction after request (ms):两个请求之间的不活动时间超过此值,则将它们分为两个单独的组。
- 从HTML文件获取所有资源:在生成的取样器中,设置获取所有嵌入式资源。
- 自动重定向:录制的取样器是否要设置自动重定向。
- 跟随重定向:录制的取样器是否要设置跟随重定向。
- Use keep Alive :录制的取样器是否要设置为keep Alive状态。
- Type:要生成哪种类型的取样器,HTTPclient4或Java,默认HTTPclient4。
四、总结
如果你对此文有任何疑问,如果你觉得此文对你有帮助,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入软件测试技术群:902061117, 群里发放的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。
最后:【可能给予你涨薪的路线以及教程】
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
关注我的微信公众号【伤心的辣条】免费获取~
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
好文推荐:
以上是关于JMeter基础 — JMeter的HTTP代理服务器详细介绍的主要内容,如果未能解决你的问题,请参考以下文章