无gui运行
无gui运行(虚机上需要先装jmeter)
- jmeter -n -t D:\software\jmeter_test\seg.jmx -l D:\software\jmeter_test\Segjtl -e -o D:\software\jmeter_test\SegReport
- jmeter -n -t E:\testplan.jmx -l E:\read.jtl -e -o E:\ResultReport
此次测试相当于:1个线程,循环1次,共计1个请求。 -J 设置变量值
- jmeter -n -t 知识管理台1.5稳定性测试脚本.jmx -J threadNum=1 -J rampupTime=1 -J sustainableTime=10 -l result.jtl
-n 无gui运行
-t 运行脚本
-J 设置变量
-l 样本记录到文件
-e -o 讲记录转成报告查看报告,打开jmeter,添加测试计划-聚合报告,添加报告
概述
- 添加线程组,模拟用户并发
- 添加用户定义变量,更真实的求情
- 添加http请求,参数可以使用定义的变量
- 添加断言,及断言结果,简单判断请求响应是否正确
- 添加查看结果树,查看每个请求的结果
- 添加聚合报告,观察整体性能
一.线程组介绍
原出处:点击打开链接
如上图:
名称:可以随意取,我们保持创建是自动分配的名称
注释:随意
在取样器错误后要执行的动作:我们选择继续,错误之后依然继续执行
线程数:一般我们用来表示多少个用户,即我们测试时的用户数量
Ramp-up Period(in Seconds):表示每个用户启动的延迟时间,上述我设为1秒,表示系统将在1秒结束前启动我设置的1000个用户,如果设置为1000秒,那么系统将会在1000秒结束前启动这1000个用户,开始用户的延迟为1秒, 如果我设置为0秒,则表示立即启动所有用户。
循环次数:如果你要限定循环次数为10次的话,可以取消永远的那个勾,然后在后面的文本框里面填写10;在这里我们勾上永远,表示如果不停止或者限定时间将会一直执行下去, 是为了方便调度器的调用。
调度器的配置:我们勾选调度器时,将会出现这个面板
启动时间:表示我们脚本开始启动的时间,当你不想立即启动脚本测试,但是启动脚本的时间不会再电脑旁的时候,你可以设定一个启动的时间,然后再运行那里点击启动,系统将不会立即运行,而是会等到你填写的时间才开始运行。
结束时间:与启动时间对应,表示脚本结束运行的时间。
持续时间:表示脚本持续运行的时间,以秒为单位,比如如果你要让用户持续不断登录1个小时,你可以在文本框中填写3600。如果在1小时以内,结束时间已经到达,它将会覆盖结束时间,继续执行。 (即可以表示成优先级比结束时间高,如果持续时间比结束时间先到了,那么就将停止线程)
启动延迟:表示脚本延迟启动的时间,在点击启动后,如果启动时间已经到达,但是还没有到启动延迟的时间,那么,启动延迟将会覆盖启动时间,等到启动延迟的时间到达后,再运行系统。
PS:如果要设置线程组定时跑5分钟,那么直接在线程组中设置持续时间为300s即可,不用管启动时间或结束时间
注意:如果我们需要用到调度器来设定持续时间,如果线程数不够多到持续时间结束,我们就必须将循环次数勾选为永远,特别地,如果线程组里面有其他的循环,我们也需将该循环次数勾选为永远(如我上面录制的脚本中的Step1也是一个循环,需要将永远勾选),否则,按我如上配置,将永远去掉勾选,文本里填1,那么无论你将持续时间启动时间结束时间等设置多少,系统运行1000次后,将会停止不再运行。
二.CSV Data Set Config设置
(ps:CSV是一种通用的、相对简单的文件格式)
填写项说明:
1、名称、注释:元件的名称及注释
2、Config the CSV Data Source:
1)Filename:csv文件的名称(包括路径,当csv文件在bin目录下时,只需给出文件名即可)
2)File encoding:csv文件编码,可以不填
3)Variable Names(comma-delimited):csv文件中各列的名字(有多列时,用英文逗号隔开列名),这个变量名称是在其他处被引用的,所以为必填项。
4)Delimiter(use “\t” for tab):csv文件中的分隔符(用”\t”代替tab键)(一般情况下,分隔符为英文逗号)
5)Allow quoted data?:是否允许引用数据,---这个目前还未弄明白,设置成True或者False都能正常引用数据。
(
Allow quoted data?: 双引号相关. 设置为True,则会将CVS文件中的双重双引号只读取一个;设置为False,则会将CVS文件间中的所有双引号当为有效字符传入
可以做一个例子,设置一个data.csv,内容如下
5
6
“1,2”
“3,4”
然后运行一下就懂了
)
6)Recycle on EOF?:到了文件尾是否循环,True—继续从文件第一行开始读取,False—不再循环
7)Stop thread on EOF?:到了文件尾是否停止线程,True—停止,False—不停止,注:当Recycle on EOF设置为True时,此项设置无效。
8)Sharing mode:共享模式,All threads –所有线程,Current thread group—当前线程组,Current thread—当前线程。这个地方和[url=]LoadRunner[/url]中的迭代取之相反,经试验得出来的结果是:
Ø All threads:[url=]测试[/url]计划中所有线程,假如说有线程1到线程n (n>1),线程1取了一次值后,线程2取值时,取到的是csv文件中的下一行,即与线程1取的不是同一行。
Ø Current thread group:当前线程组,假设有线程组A、线程组B,A组内有线程A1到线程An,线程组B内有线程B1到线程Bn。取之情况是:线程A1取到了第1行,线程A2取第2行,现在B1取第1行,线程B2取第2行。
Ø Current thread:当前线程。假设测试计划内有线程1到线程n (n>1),则线程1取了第1行,线程2也取第1行。
示例:
二.启动jmeter.bat进入jmeter界面
1.添加线程组
右击“测试计划”-添加-Threads-线程组;
注:如果是英文jmeter可通过“选项”-选择语言-Chinese更改;
2.添加并配置CSV Data Set Config
(1)添加:
右击“线程组”-添加-配置元件-CSV Data Set Config;
(2)配置CSV Data SetConfig参数信息
Filename:制定的文档路径和名字;可以右击文档-属性,找到文档的路径,注意要写上文档名字和后缀;
File enconding:编码格式,如果txt文档中有中文,该行就要写入utf-8;
Variable Names:定义参数;txt文档中有几列就定义几个参数;参数见用英文逗号隔开;直接写wxid,在其他模块用的时候直接${wxid}调用即可;
Recycle on EOF:到了文件尾处,是否循环读取参数;
Stop thread on EOF:到了文件尾,是否停止线程;
(3)若:想把文档中所有数据读取一遍,且不重复,那么就要设置为:
Recycle on EOF:False;
Stop thread on EOF:True;
3.添加http请求并配置
(1)添加:右击“线程组”-添加-Sample-HTTP请求;
(2)配置http请求
4.修改线程组配置
因为我们只写了一个http请求,所以点击运行只会运行一次,我们想把txt文档中所有行都执行一遍,所以我们要将线程数修改;目前txt中共175行,所以线程组中线程数我们设置为175;
5.监听结果:添加“查看结果树”和“聚合报告”
查看结果树:可以看到每个请求的执行成功失败;
聚合报告:可以看出总共执行数和失败情况等;
6.点击运行,查看结果
点击绿色箭头运行,查看结果
(1)在“查看结果树”中,可以看到参数请求的是那个值:
(2)在“聚合报告”可以看所有线程有没有执行完成
以上结果,只是让txt文档中数据全部执行了1遍,如果想执行多次,那么我们就要让http请求重复执行了;
7.重复执行http请求
(1)添加循环控制器:
右击http请求-插入上级-逻辑控制器-循环控制器;
(2)配置循环次数
8.再次查看运行结果:
一共175条数据*3=525条记录;
(一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。)
Label:每个 JMeter 的 element (例如 HTTP Request )都有一个 Name 属性,这里显示 的就是 Name 属性的值 v
#Samples:表示你这次测试中一共发出了多少个请求,如果测试计划模拟10个用户, 每个用户迭代10次,总体就会显示100
Average:平均响应时间 — 默认情况下是单个 Request 的平均响应时间,当使用了事务 控制器时,也可以以事务为单位显示平均响应时间 v
Median:中位数,也就是 50 %用户的响应时间 v
90% Line: 90 %用户的响应时间 v
Min:最小响应时间
Max:最大响应时间
Std.Dev:Standard Deviation 标准差
Error%:错误率,本次测试中出现错误的请求的数量 / 请求的总数 v
Throughput:吞吐量,默认情况下表示每秒完成的请求数( Request per Second ) v
Received KB/Sec:每秒从服务器端接收到的数据量
Sent KB/Sec:每秒发送的数据量
Avg.Bytes:服务端返回Request数据的平均值,理解为:服务端返回所有数据/请求数
到此我们就完成了,多用户多次抽奖的功能;
多用户就是txt文档中多行数据,多次抽奖就是单个请求循环3次,如果抽多次就修改次数即可,谢谢观看~