前面介绍了如何使用badboy录制jmeter脚本,以及如何导入脚本并进行测试
这里介绍下手动创建测试用例,主要步骤如下:
1、创建线程组
第一次打开Jmeter只有一个测试计划,右键“测试计划”选择“添加” -> “Threads” -> “线程组”,即可得到如下配置界面:
名称:即这个线程组的名字
注释:对这个线程组的注释
在取样器执行错误后的操作:根据需要勾选后续执行情况,一般都会选择继续
线程数:即总的测试次数(模拟的用户操作)
Ramp-up period:执行完所有线程数所用的时间,比如线程数为100,执行时间设置为20秒,那么每秒应该会增加5个用户操作。
如果没有指定时间,则Jmeter会立即建立所有线程(启动所有线程数的用户操作)
循环次数:表示这个线程组需要执行多少个循环,如果选择“永远”,那就一直执行下去,除非手动停止
Delay Thread Creation until needed:看了官方的解释和自己实际应用,意思应该如下:
当线程需要执行的时候,才会被创建。如果不选择这个选项,那么,在计划开始的时候,所有需要的线程就都被创建好了
调度器:勾选后,下面的“调度器配置”就可以填写相关信息
调度器配置.持续时间:即每个线程执行的时间,即模拟用户的在线时长
调度器配置.启动延时:即这个测试用例在开始后多长时间开始执行
调度器配置.启动时间:测试计划开始后,在什么时间开始执行。开始执行后还是会有上面的启动延时存在(如果启动延时配置了)
调度器配置.结束时间:测试计划结束的时间,到时间后,会停止所有线程
2、创建取样器
在取样器中选择“http请求”,并配置访问baidu网页,如下:
名称:给取样器取个名字
注释:对取样器进行注释
Basic.Web服务器.服务器名称或IP:这里填写百度网址即可
Basic.Web服务器.端口号:http默认端口号80,如果是其他自定义的端口,直接填写即可
Basic.Web服务器.Timeouts.Connect:连接超时时间
Basic.Web服务器.Timeouts.Response:响应超时时间
Advanced.Embedded Resources from HTML Files:如果勾选了,则会下载所有资源
Advanced.Source Address:一般用于IP欺骗(Implementation为HTTPClient有效)
Basic.HTTP请求.Implementation:默认是HttpClient4
Basic.HTTP请求.协议:根据实际情况填写。这里填http
Basic.HTTP请求.方法:get。方法有很多,一般用得比较多的是get和post
Basic.HTTP请求.Content encoding:编码方式
Basic.HTTP请求.路径:域名后面部分。这里我们访问的是百度首页,不用填写
Basic.HTTP请求.自动重定向:只支持GET,HEAD方法。 如果请求有重定向的话,会只显示终的结果,Jmeter 不会显示重定向的过程
Basic.HTTP请求.跟随重定向:与“自动重定向”之前只能选择一个。如果请求有重定向的话, Jmeter 会显示重定向的过程
Basic.HTTP请求.Use Keep Alive:直接勾选即可
Basic.HTTP请求.Use multipart/form-data for HTTP POST:当需要上传文件时需要勾选
Basic.HTTP请求.Browser-compatible headers:当勾选了Use multipart/form-data for HTTP POST后,可以选择这个,
可以保证不受HTTP信息头管理器设置的Content-Type 和Content-Transfer-Encoding 影响
Basic.HTTP请求.Parameters:http消息请求的参数。参数值包含特殊字符比如’&’,jmeter会自动转义为’%26’
Basic.HTTP请求.Body:使用文本形式发送请求参数。一般是json或xml
Basic.HTTP请求.Files Upload:文件名称: 要上传的文件,包括路径 2. 参数名称: 请求参数名称 3. MIME类型:MIME type (for example, text/plain)
Basic.Proxy server:代理服务器设置
这样测试用例就写好了,可以执行了,执行完成后,点击下面红框(或菜单“选项” -> Log Viewer)可以显示执行日志:
这里没看出报错,我们再添加监听器(查看结果树),再执行以下,看到报错了:
看报错信息,Jmeter把我们设置的网址又加了一个http://,也就是Jmeter不需要我们去加这个头,我们直接去掉再测试一遍:
这时候看到正常了~,一个简单的测试用例就完成了,这里我们也可以加个断言,判断响应返回码是否为正确的(200为正常):
重新执行一下,通过。如果这里随便填个,可能就会执行失败