一、jmeter工具介绍
gui界面
一切都在右键掌握之中。
测试计划:工作中测试计划:什么时间什么人做什么事情。
线程组:接口、自动化测试时,基本不会去改动。
配置元件
监听器
取样器:根据不同的协议,使用不同的取样器编写脚本。
逻辑控制器。
前置处理器:
后置处理器:对取样器进行控制。
定时器。
性能测试,这个是用于进行性能场景设计的。
线程组:进行性能场景设计。
setup线程组。
teardown线程组。
优先级是最高的,正式干活时,急先锋。
最先被执行的配置元件是:用户定义变量。
对性能结果进行监控,展示结果数据。
不同的元件,是从不同的角度,展示结果数据。
重点关注:用户参数。
jmeter里面的测试计划是脚本的根文件。
元件
二、jmeter写脚本
特别注意事项:
Accept:在请求头里面可加可不加,因为这个东西是开发所控制的,我们是无法修改的。
请求行
请求头
空一行
请求体
请求方法,请求地址URI。
Content-Type
cookie
User-Agent
参数类型:表单。
消息体数据类型:
json
、xml
。当你的接口请求参数为json格式时,一定要写请求头,请求头中一定要有
Content-Type:application/json
(如果没有这个信息,100%报错,不局限于jmeter)。衍生:http请求包括哪些部分?
json格式:
{"key":"value","key1":1}
开发人员接口中定义的返回码
code
,和http
中的response_code
不一样。3xx:重定向相关。301
4xx:请求URL地址有问题。400、404
5xx:服务器内部异常。500、
502bad gatway
http中的
response_code
:开发人员在接口中定义的code,是响应代码。
每家公司定义的code
的含都不一样的,是为了方便定位某些问题的(一个code
值代表某一种意思而已)。
写脚本
测试计划上右键, 添加线程组。
线程组上右键,添加取样器-->http请求(http协议簇)。
线程组上右键,添加监听器-->查看结果树。
一个最简单的jmeter脚本,包括:线程组、取样器、监听器。
线程组:性能测试中用于场景设计的,写脚本阶段不用改动。
取样器:根据不同的协议,编写不同的脚本。
监听器:调试脚本时使用,性能测试执行时禁用监听器。
不管哪种监听器,都是对结果数据进行不同维度的展示。
这些展示是需要消耗本地资源的,从而导致资源不能足够得分配到性能测试中去。
8080端口,是tomcat的默认端口。
http协议的默认端口:80
https协议默认端口: 443
jmeter的默认保存路径,jmeter的bin文件夹。
在性能测试中,这种非必传的参数,我们也写上:
![70757cb8e03a92801aeed4a11122c056.png](https://i-blog.csdnimg.cn/blog_migrate/5e3dfc406b4e2e54fcefa4b4c3382ab7.png)
把这些非必传的参数都传了,代码对这些参数都进行了计算。
这样做性能测试,测试出的结果基本就是跟实际情况最接近的。
请注意:
1、当请求体为json, 一定要有请求头 Content-Type:application/json
2、json格式有问题。
3、协议:当协议为http时,可以不写。如果是https,那就必须写。
4、服务器名称或IP:不能带有/
。
注意:浏览器的url地址里面只能执行get方法,不能执行post方法。
5、路径:不要带域名、ip和端口。
路径开头:用/
。
不要带有空格,带有空格的请求的URL会出现urlencoded
的编码:%20
。
URI:资源地址。
URL:带domain。带有域名去访问资源的地址。
6、内容编码:utf8。
请求内容出现乱码处理方法:
1)内容编码:utf8。
2)请求头的Content-Type
的值中加上:charset=utf-8
![7d0b9d4860825660937bbe338a66379c.png](https://i-blog.csdnimg.cn/blog_migrate/7c51db66b5b9ef26ed9b36c586b8277c.png)
3)请求体为参数类型:勾选参数“编码”,编码:urlencoded
编码。
在参数值为非字符(汉字、特殊符号) ,都需要勾选编码。
给大家的建议:不管什么类型的参数值,都建议勾选编码。
响应内容出现乱码处理方法:
不是简单的设置为utf8
、 gbk
、gb2312
、big5
,需求修改jmeter.properties
中的sampler.result.encoding
。
同一个接口,用postman请求,响应是正常的。用jmeter请求,响应就有中文乱码?
原因是:jmeter的编码是根据操作系统编码来的。
在国内,中文windows
系统的字符集编码是gbk936
,mac
、linux
系统中文编码utf8
。
在写这个系统的代码的时候,给它设置的字符集为utf-8
,而我的系统是gbk
,出现编码不一致的问题,就出现乱码。
唯独在中文的windows
系统中出现响应乱码的问题。
7、参数、消息体数据类型选择
当我们的请求接口文档中说,请求体为json
格式,那么我们就选择用消息体数据来写json
。
soap=http+xml
,xml
也是写在消息体里面。
参数: 请求体是form-data
、Content-Type: application/x-www-form-urlencoded
、不指明请求体类型、请求的方法是get
,就用参数。
8、自动重定向:不会显示中间重定向过程,无法从过程中,提取信息。
跟随重定向: 会自动显示重定向过程,能从过程中提取想要的信息,用于后面的接口请求,这叫做关联。
使用keepAlive:保持连接, 长连接。
因为现在用http协议版本为1.1,长连接的开关默认是打开的。
所以,默认勾选keepAlive,但是在性能测试中,我们会根据需要,去掉这个勾。
做性能测试时,请求量是非常大的。大量的人一直在请求,一直保持着连接不放。
发过去一个请求,本地要消耗一个端口的,一个端口对应一个连接池。
需要及时的释放,不然这大量的人,不能灵活得用。
文章中除标明 “图片来自网络”的图片,皆为小编本人所画所截图,计算机知识都一样,如有雷同,纯属巧合。
欢迎关注 “清菡软件测试”,进群加v:qhtester,感谢点赞与分享!