1、线程组:代表一定数量的并发用户,可以用来模拟并发用户发送请求。
添加路径:Test Plan(鼠标右击) -> 添加 ->Threads(Users) -> 线程组
包含配置信息:线程数、Ramp-Up Period(in seconds)、循环次数
配置信息功能介绍:
A:线程数:表示操作系统能够进行运算调度顺序的控制流的个数
B:Ramp-Up Period(in seconds):表示在指定时间内创建完所有的线程;例如有8个线程,Ramp-Up time=200秒,10个 线程在20s内完成启动,那么线程的启动时间间隔为20/10=2秒。这样的好处是在一开始的时候不会对服务器有太大的 负载。
C:循环次数:控制执行每个线程循环的次数,如果有200个线程,循环次数为100次,则总请求数为2万个。如果不填默认 为永远循环,如果选“永远”,那么会一直发送请求,直到选择停止运行脚本。
2、取样器:模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。如:HTTP 、Java、ftp请求等等
添加路径:一般都是在线程组==》添加==>Sampler(取样器)==》添加对应的请求
3、jmeter参数化:用户定义的变量、函数生成器、读取文件
A:用户定义的变量:添加配置元件-用户定义的变量
使用方法:${参数名称},使用在请求中
B:函数生成器
需要用到函数助手功能,可以调用函数生成一些有规则的数据。常用的几个函数有_uuid、_random、_time。_uuid会生成一个随机唯一 的id,比如在避免java请求重发造成未处理数据太多的情况,接口请求可加一个唯一的请求id唯一的响应id进行一一对应;随机数_random,可以 在你指定的一个范围里取随机值;取当前时间_time,一些时间类的入参可以使用,如{__time(,)} 是生成精确到毫秒的时间戳、{__time(/1000,)}是生成精确到秒的时间戳、${__time(yyyy-MM-dd HH:mm:ss,)} 是生成精确到秒的当前时间。
C:引入csv文件参数化
不做介绍
D:jmeter关联:前后2个接口之间的关联,后一个接口需要使用前一个接口的返回值中的指定值,比如登录接口、购买商品 接口;
jmeter关联可以通过正则表达式提取器和json path extractor(不做介绍,因为还没有用到)来完成。
(1)正则表达式提取器:
备注:关于正则表达式
():括起来的部分就是要提取的。
.:匹配除换行外的任何字符串。
+:代表+号前面的字符必须至少出现一次(一次或多次)。
?:代表?前面的字符最多可以出现一次,在找到第一个匹配项后停止(0次或1次)。
:代表号前面的字符可以不出现,也可以出现一次或者多次(0次、1次或者多次)
(.*):贪婪模式,匹配尽可能多的字符
(.*?)或(.+?):匹配尽可能少的字符,一旦匹配到第一个就不往下走了。
注意:如果有响应数据只有数字,譬如返回的是个100, 就不能用.*?,因为?会取最小值,所以去掉就好,改为 (.*)