Jmeter(三)脚本制作与调优

重点:参数化、csv读取数据、函数
难点:正则表达式

JMeter脚本制作

手工编写脚本
    接口参数
        接口的传递参数可由:
            1、接口文档、api文档、swagger工具整合
            2、抓包工具

录制脚本
    badboy工具录制
        1、接口文档、api文档、swagger
        2、抓包工具
    http代理服务器
        1、代理配置

使用JMeter做接口测试的时候建议加上断言。做性能测试的时候断言课加可不加


HTTP信息头管理器:HTTP请求头的必带参数
后置处理器:获取到请求的值传给变量
监听器:输出各种报告结果


参数化
    参数值以 ${变量名称} 取值
    用户定义的变量:
        同一个线程组,用户定义变量值是不会变的(解决方法,可以把随机函数放到参数值里面)

断言

json提取器
    $.字段名
    层级取值:$.字段名[索引值].二级字段名

 

正则表达式:通常都是由Perl语言改进来的
    说明:
    (1)引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它。
    (2)正则表达式:
        ():括起来的部分就是要提取的。
        .:匹配任何字符串。
        +:一次或多次。
        ?:不要太贪婪,在找到第一个匹配项后停止。
    (3)模板:用$$引用起来,$1$表示解析到的第1个值
    (4)匹配数字:0代表随机取值,1代表全部取值,通常情况下填0
    (5)缺省值:如果参数没有取得到值,那默认给一个值让它取。

    补充:
        (.)换行符以外的所有字符
        * 多次
        ? 一次
        .* 0次或多次
        .+ 1次或多次
        [0-9] 1数字
        [0-9]+ 至少匹配一次
        \d+ 匹配0到多个数字
        \w+ 多个字母或数字都可以匹配
        [a-z]+ 配置所有字母

    正则表达式:主要就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容,(.*?) 是替换了想要提取的内容
    里面的'?'为非贪婪匹配,(非贪婪模式就是说在遇到第一个右边界后就停止匹配,这样就可以精确拿到想要的内容)
    模板:对应正则表达式提取器类型,样式为:$n$,
    若模板为:$0$,则为整个表达式匹配到的内容,就是包括小括号内跟小括号外的内容
    若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容,
    若模板为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容,
    若模板为$1$$2$,则把2个(.*?)所匹配的内容拼接起来,
    匹配数字:正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。
    当为 0 时,随机返回匹配的数据
    当为 1 时,表示返回匹配结果数组的第一个元素。当为负数(-1,-2,-99都可以)时,表示返回全部元素,并且同时会返回一个元素总数的变量如sessid,在引用时:通过${sessid_1}的方式来取第1个匹配的内容,${sessid_2}来取第2个匹配的内容。
    缺省值:匹配失败时的默认值。通常用于后续的逻辑判断

 

文件读取
    在国内建议使用.txt的文本格式文件,如果使用.csv格式文件很有可能出现乱码
    在.txt文本中,以换行为区分遍历数据,在CSV数据文件设置中变量要以英文,分割
    

常用函数 random、time、v函数
    random 随机数
    time 时间函数
    如果参数需要为当前日期,那公式为:${__time(yyyy-MM-dd,)} 或者 ${__time(YMDHMS,)}
    ${__time(yyyy-MM-dd HH:mm:ss:SSS,time)} :格式化生成时间格式 2018-06-01 11:08:23:635
    ${__time(,)} :默认该公式精确到毫秒级别,13位数 1527822855323
    ${__time(/1000,)} :该公式精确到秒级别,10位数 1527822871
    v 嵌套函数
    已经定义了一个变量A 要再在这个变量名后面加一个变量(如递增数字)N 不能直接用${A${N}},必须用嵌套函数__V :${__V(A,${N})}脚本调优


写入文件
    如果要把一个接口请求到的数据写到一个文件中去,则在察看结果数中的所有数据写入一个文件,浏览到路径即可


Jmeter插件安装与使用

插件安装
    下载
        https://jmeter-plugins.org/install/Install/
        存放到 /lib/ext目录下
    安装插件
        进入选项-plugins manager
        弹窗中选择available plugins页签,选择jpgc-**插件
        点击右下角的 apply changers and restart Jmeter

场景设计
    阶梯场景(stepping thread group)
        next add XXX threads xxx seconds XXX using ramp-up XXX 
        next add XXX threads xxx seconds XXX using ramp-up XXX 
    波浪式场景(UItimate thread group)

ServerAgent 服务监控软件(安装在服务器中启动)
    启动服务监控,用tcpd
        默认启动
            startAgent.sh  默认端口4444
        自定义端口启动
            startAgent.sh --udp-port 0 --tcp-port 自定义端口号
            --udp-port 0 关闭udp服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值