FTP请求默认用户名:anonymous
添加线程组:右键测试计划(apitest)-添加-threads-线程组
线程组包含三个参数。线程数。准备时长ramp-up period。循环次数
线程数:虚拟用户数,一个虚拟用户占用一个线程
准备时长:设置的虚拟用户数需要多长时间全部启动,例如线程数为20,准备时长10,就是需要10秒启动20个线程
循环次数:每个线程发送请求的次数,如果线程为20,循环次数为100就是每个线程发送100次请求,总共为20*100=2000
添加http默认请求:右键线程组-添加 -配置元件-http请求默认值(配置公共参数-默认请求名。服务器。默认请求路径。保存测试计划。)
添加http请求信息头:右键测试计划-添加-配置元件-Http信息头管理器
添加http请求:右键appitest-添加-sampler-http请求(具体参数)
添加监听器:右键线程组-添加-监听器-图形结果。察看结果树,聚合报告。
聚合报告:label-每个jmeter的element(例如http request)都有一个name属性,这里显示的就是name属性的值。
#samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次。这里显示就是100
Average:平均响应时间—默认情况下是单个request的平均响应时间,当使用了transaction controller时,也可以以transaction为单位显示平均响应时间
Median:中位数,也就是50%用户的响应时间
90%line:90%用户的响应时间不超过N秒
Min:最小响应时间
Max:最大响应时间
Error%:本次测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量—默认情况下表示每秒完成的请求数(request per second)
Kb/sec:每秒从服务器端接收到的数据量
修改线程数用于压力测试:线程数-该线程组有多少个线程,相当于每个线程可以模拟一个用户客户端
Ramp-up period(in seconds)-设置多少秒内启动全部进程,如果设置为0,就是并发所有线程
循环次数:执行循环的次数
关联是特殊的参数化。脚本里涉及到时间的变化和程序的生成需要参数化
参数化:脚本数据分离。模拟真实场景 ,动态变化的值(如时间)
读取文本,程序生成,数据库读取
- (1)借助函数助手的方式,菜单栏-选项-函数助手对话框-_CSVReaad
Csv file to get values from|*alias :文件的路径
Csv文件序列号|next*alias:索引。从0开始的。第一列0.第二列1.第三列2类推
(2)复制生成的参数化函数,打开请求页面,右侧的参数化中找到要参数化的字段。粘贴函数对相应字段参数化。
2(1)借助jmeter的配置元件-CSV data set config
选中线程组-右键-添加-配置元件-csv data set config(csv据文件设置)。放到测试计划下
Filename:文件的路径 file encoding:文件的编码,一定要是utf-8
Variable names(comma-delimited):变量名,自己可编译。文件中各列所表示的参数项。各参数项之间利用逗号隔开。参数项名称需与http requert中参数项一致
Delimiter(use * * for tab):变量名分隔符,如文件中使用逗号分隔,则填写逗号,使用的是tab.则填写 ;文本文件是csv格式的,默认英文逗号
Recycle on eof?—true:当读取文件到结尾时,再重头读取文件
False—当读取文件到结尾时,停止读取文件
Stop thread on eof—false:当读取文件到结尾时,停止进程。True无意义
Recycle on eof选择true。Stop thread on eof选择true和false无意义
Recycle on eof选择false。Stop thread on eof选择true。线程4个,参数3个
只请求3次。
Recycle on eof选择false。Stop thread on eof选择false。线程4个,参数3个
请求4次。但第4次没有参数可取。无法循环。第4次错误
忽略首行:忽略文件的首行。有标头选true。无标头选false
3(1)jmeter plugins manager 翅膀标志-添加Random CSV Date set
完成后重启jmeter。右键测试计划-配置元件-bzm_Random Csv Data set config。放到测试计划下---随机读取文本内容。勾选random oeder才可随机生成
程序生成
函数助手:—machineIP:读取当前机器IP、machineName:读取当前机器名字
Random:随机生成一个数字。第一个参数一个范围内的最小值,第二个参数一个范围内最大值。例在生成年龄时可用。手机号也可,前几位固定,后面随机。不保证不重复
RandomDate:随机生成日期。默认从当前日期开始到设定的日期之间
第一行格式 yyyy-MM-dd
RandomString:随机生成字符串。比如生成外国名字。也可以生成性别。第一行选择的随机生成个数。第二个可选男女就是选择范围。
Time:当前时间。默认为时间戳 。第一行时间格式。yyyy-MM-dd HH:mm:ss
生成有规律的ID。Http请求-右键-添加-配置元件-计数器 ${引用名称} number format:取几位数 三位数000 引用名称:变量名称
数据库读取:JDBC request: jdbc请求(线程组-sampler采样器)。可连接数据库 右键测试计划配置元件-JDBCconnection(放到测试计划下)detabase url -怎样连接数据库
Vanable names:查询的字段。列表。集合
查询的字段,列表。集合。提取-ForEach控制器-变量—请求路径-${变量名称}-迭代
格式为 jdbc.mysql://ip:port端口号/databasename数据库名字
Jdbc driver class –com.mysql.jdbc.driver
测试计划,下边add directory jar to classpath 浏览添加-mysql-java.bin.jar文件
关联-必须在后置处理器里面
用于检查测试中得到的相应数据等是否符合预期,一般用来设置检查点
用到的检查点(session)的值需要到上一级提取---1.右键-后置处理器—正则表达式提取器
引用名称:下一个请求要引用的参数名称。可用${参数名称}引用它
正则表达式:()-括起来的部分就是要提取的 .-匹配任何字符串
+--一次货多次 ?--不要太贪婪,在找到第一个匹配项后停止。
“(.+?)”
模板:用$$引用起来。如果再正则表达式中有多个正则表达式,则可用是$1$$2$等。。$1$提取第一个值。
匹配数字:0代表随机取值,1代表全部取值,通常情况下填0
- 右键-后置处理器-Boundary Extractor(边界值提取器)
技巧:线程组-右键-添加-sampler-debug sampler。放到察看结果树的上边
- Json Path 断言
右键-添加-后置处理器-Json Extractor---json path表达式
{“key”:”value”,”key1”:”value1”}
添加集合点:右键Http请求-定时器-Synchronizing Timer-
两个参数-Number of simulated users to group :集合够多少个用户开始访问
默认为0.跟线程组用户保持一致
Timeout in milili seconds:设置超时时间 毫秒。默认为0.没有超时时间,一直等到用户足够。
添加到正确页面,可鼠标左键拖动,右键在之前插入。作用域--对哪一块起作用,就放到哪一块的下面
思考时间:右键http请求-定时器-固定定时器:固定等待时间(毫秒) 放在线程组下,对所有请求都生效。先于取样器去执行的。
高斯随机定时器:可带有偏差。例如偏差1000.固定延迟偏移3000.取的是2000-4000之间随机的时间数值。
- 响应断言:设置断言,判断断言结果是否满足期望结果。2. Json Assertion:判断json的节点,结构是否正确。
如果对哪个请求做断言,就在哪个请求之前做断言。
Igonore status :断言结果报404.默认是错误的。勾选上就是成功的
包括=substring 匹配=equals
断言结果:查看断言结果返回值。文件名也可填写路径进行保存。勾选仅日志错误
命令行压测:Cmd——jmeter -v jmeter -n -t 脚本全路径 -l 保存的测试结果文件(text.jtl格式)
查看聚合报告时每次查看要点击清空。否则会累积
生成HTML文件。jmeter -n -t 脚本全路径 -l 保存的测试结果文件(text.jtl格式)-e -o ./文件夹名称
资源不够时,先执行测试。执行完成后再生成报告。
Jmeter -g 测试结果的文件的全路径.jtl -o ./文件夹名称
添加聚合报告后最好再添加一个 保存响应到文件。
勾选sava failed ressponses only dont add number to prefx
文件名称前缀: 可添加路径。
Jmeter资源监控:sever agent jmeter plugins manager安装 permon
线程组-右键-添加-监听器-permon metrlcs collector
会在运行测试中实时监控服务器表现