zoukankan      html  css  js  c++  java
  • 使用jmeter构造时间戳参数

    很久没用jmeter了,这次趁着项目稳定后,用jmeter写了一些创建测试数据的脚本,因为手动创建数据太麻烦了

    本次编写脚本,一方面是通过查看后台请求,手动录入脚本,另一方面用到了一些自带的函数来生成时间戳、生成随机数

    所以本篇主要说一下这次写脚本的思路以及函数助手中用到的函数

    1.整体思路

    • 要想构造数据,首先必须登录获取token,后续操作都依赖这个生成的token;
    • 本次需要构造3种类型的数据,每种数据填写的字段不同,所以编写脚本时,利用【事务控制器】,把不同作用的脚本进行分类,例如登录操作、构造A类型数据、构造B类型数据,这样脚本运行时,结果看起来一目了然;
    • 不同请求需要的headers可能不同,所以把【HTTP信息头管理器】添加在各个【事务控制器】下,只对其下的请求生效(或者再细分添加某个具体请求下);
    • 根据参数实际情况选用【HTTP请求默认值】以及【JSON提取器】、【正则表达式提取器】以及【函数助手】等,帮助实现参数化

    2.编写过程中的关键点

    (1)响应结果中的中文字符显示成了“???”

    编写好第一个脚本后,执行后查看结果,发现中文字符没有正常显示,如下

     解决方法:在请求中,加上内容编码:utf-8

     

    (2)添加时间戳 timestamp

    有些请求携带的参数中包含时间戳,可以是放在headers中,也可以是放在请求参数中

     在jmeter中,能够通过函数助手来生成时间戳

    • 生成当前时间

    依次点击【选项】-【函数助手对话框】,打开函数助手

    然后选择【__time】函数,它可以生成各种形式的当前时间,展示如下

     点击【帮助】会默认打开浏览器显示该函数的说明文档,谷歌硬核翻译如下

     (1)不填写任何格式,直接点击【生成】,在结果区会展示一个13位的时间戳(毫秒级)

     (2)如果要生成10位数字时间戳(秒级),则需要在格式字符中输入“/1000”

     

      (3)生成特定格式的日期

    帮助文档中提供了如下几种

    • YMD = yyyyMMdd
    • HMS = HHmmss
    • YMDHMS = yyyyMMdd-HHmmss

    依次来试一下

    YMD,等价于yyyyMMdd,填写到格式字符串中,点击【生成】

     HMS ,等价于 HHmmss

     YMDHMS ,等价于 yyyyMMdd-HHmmss

     也可以自己来自定义一下显示格式

     之前说生成时间戳时,变量名是非必填的,下面看下填写变量名后是什么效果

      注意:当点击【生成】后,“拷贝并粘贴函数字符串”后会出现一串变量名,这个可以理解为时间戳变量,把它放到请求参数中,就意味着获取到了当前时间,如下

    •  根据当前时间进行位移(向前or向后移动指定时长)

    有些请求会用到过去或将来的 某一个时间,jmeter有一个函数可以满足这个需求【__timeShift】

     谷歌硬核翻译帮助文档如下

     下面来试验一下

    (1)显示格式为yyyyMMdd,时间基准20200420,向后推移2天

     (2)显示格式为时间戳(毫秒级),时间基准为当前时间,向后推移10分钟

    ${__timeShift(,,PT10M,,)}

     (3)显示格式为 yyyy/MM/dd HH:mm:ss,时间基准为 2020/04/17 17:38:00,向后推迟 10分20秒

    ${__timeShift(yyyy/MM/dd HH:mm:ss,2020/04/17 17:38:00,PT10M20S,,)}

     (4)显示格式为 yyyy/MM/dd HH:mm:ss,时间基准为 2020/04/17 17:38:00,向前推 10分20秒

    有2种写法:PT-10M-20S   或  -PT10M20S

     ps.位移时间时,注意“-”添加的位置即可,“+”可以省略

    添加时间戳一方面可以用到传时间参数这种情况下,直接丢个时间戳过去;另一方面,例如批量造数据时,不想每个数据的名称都一样,那么就可以用时间戳作名称后缀,如下

     这样生成的数据就是:测试数据-20200417-141443 

    (3)生成随机数

    一种是利用【__Random】函数(生成的随机数不唯一,可能会重复)

     一种是利用【__UUID】函数(每次都会生成唯一的随机数)

    OK,本篇重点讲的内容就到这里啦,通篇看下来其实主要是时间戳函数的使用,后续再介绍其他

  • 相关阅读:
    Data Base mysql备份与恢复
    java 乱码问题解决方案
    【知识强化】第二章 物理层 2.1 通信基础
    【知识强化】第二章 进程管理 2.2 处理机调度
    【知识强化】第二章 进程管理 2.1 进程与线程
    【知识强化】第一章 操作系统概述 1.3 操作系统的运行环境
    【知识强化】第一章 网络体系结构 1.1 数据结构的基本概念
    【知识强化】第一章 网络体系结构 1.2 计算机网络体系结构与参考模型
    【知识强化】第一章 网络体系结构 1.1 计算机网络概述
    【知识强化】第一章 操作系统概述 1.1 操作系统的基本概念
  • 原文地址:https://www.cnblogs.com/hanmk/p/12716883.html
Copyright © 2011-2022 走看看