当前位置: 首页 > news >正文

性能测试参数化技术详解—项目实战教学

所谓脚本参数化,就是针对脚本中的某些常量,使用参数来取代。参数中包含很多数据源,数据源可以是一个文本文件也可以是数据库。当不同的Vuser在执行相同的脚本时,分别调用参数文件中的数据代替这些常量,从而达到模拟多用户真实使用的目的。

参数化的过程体现了数据驱动的思想,即将测试脚本与测试数据进行分离的思想。脚本体现测试流程,数据体现测试案例。

01哪些情况参数化

工作中为什么要进行参数化呢?

  • 1)借助参数化可以减小脚本的数量,如果不进行参数化为了达到目标可能需要拷贝并修改很多个脚本。

  • 2)使业务更接近真实的客户业务,每个虚拟用户使用不同参数值来模拟,这样可以更好地接近客户的实际情况。

在实际工作中一般以下情况需要进行参数化:

  • 1) 日期时间

如这类业务,需要订一张机票,那么订票的日期一定是当前日期之后,不可能是当前时间之前的日期,如当前系统时间为2012年8月20日,那么订票时一定需要使用20日后期的日期(如订25日的机票),但是如果到25日之后再来回放该脚本时,还是发现脚本无法正常使用,所以对于这类情况需要参数化。

  • 2) 唯一性约束

唯一性约束是指在数据库中对于主键必须是唯一的,如果一直使用相同数据提交业务,那么业务将无法完成。如注册业务,就不能使用相同的数据就行注册,因为数据库中会把注册用户的ID做为主键,这样在测试过程中就必须进行参数化,否则业务无法成功。

  • 3) 数据约束

数据约束是指在测试过程中要求提交的业务数据必须是每次都不同,如果提交业务中的数据一致,那么业务将失败。例如银行业务,一些银行业务是以报文的方式发送的,在发送报头时,后面一般会接一个6位的动态码,那么这个动态码就必须每次都不一样,如果写成一样,那么银行交易业务将会失败,所以对于这类数据必须进行参数化。

  • 4) 缓存数据约束

在谈缓存数据约束之前,必须先了解数据库查询的过程,数据库在查询时首先使用查询条件在数据库进行查询,查询结束后,系统需要将查询到的结果显示在页面中,那么显示时需要先将查询到的结果从硬盘中读取之出,读取后将数据从硬盘读到内存,再从内存读到缓存,最后将缓存中的数据发送到处理器中进行处理。

但是有一种特殊情况,如果每次使用的查询条件一致时,数据库中查询到的结果就是一致的,那么需要处理的数据直接已经存储在缓存中,这样系统就不需要从硬盘将数据读到缓存,而直接将缓存中的数据传输到处理器中进行处理,这样就节约了从硬盘读到数据到缓存中的时间,而整个查询过程中时间消耗最多的恰好是从硬盘到缓存的时间,所以这样测试出来的时间不是真实的时间,这些就出现缓存数据约束,所以这种情况也需要进行参数化。

02创建参数

将飞机订票系统的注册业务流程录制成脚本,录制好脚本后,选中要参数化的常量,点击鼠标右键→选择Replace with a parameter,如图6-27所示,在该实例中对用户名和密码进行参数化。弹出Select or Create Parameter对话框,在该对话框中输入参数化的名称或者选择一个已经存在的参数名,这里将参数化名称设置为pw,如图6-28所示。

需要注意的一个问题是,当参数化结束后,脚本保存的根目录下会自动生成一个参数化的文件,如图6-29所示。

图6-29 参数化文件

在这个实例中有两个参数化文件,在此可以对这两个参数化文件进行合并,当然并不是非合并不可,但是如果有多个参数化文件并且每个文件都占很大空间时,就需要对参数化文件进行合并了,这样不但可以节省系统资源也方便管理参数化文件,在该实例中将这两个参数文件合并成一个参数文件parameter,在参数文件parameter中不同参数之间使用逗号分开,如图6-30所示。

图6-30 合并参数文件

合并好参数文件之后,可以将user和pw两个参数化文件删除,为了将参数与脚本分离,一般新建一个参数文件夹,将所有的参数文件都放到里面,如图6-31所示。

图6-31 脚本与参数分离

创建参数完成后,需要对参数类型属性进行设置。

03参数类型属性

参数创建好之后,需要对这些参数的类型进行设置,主要有以下几种参数类型:

1、 Date/Time(日期/时间)参数类型

    http://www.jsqmd.com/news/210926/

    相关文章:

  • 基于单片机的无线通信报警系统
  • 基于单片机的轴承售卖系统设计
  • 深度测评专科生必用的9款AI论文软件
  • 基于单片机的室内空气质量监控系统设计
  • 基于PLC的控制分拣机械手设计 ——硬件设计
  • 基于单片机的视觉导航小车设计
  • 吐血推荐MBA必用TOP8 AI论文软件测评
  • 基于单片机的语音存储与回放系统设计
  • 信息安全从入门到精通:技术、管理与法规的全景解读
  • 基于单片机的蓝牙无线密码锁设计
  • 如何规划你的网络安全认证之路?详解通往CISSP的“黄金跳板”证书
  • 智能能耗优化:汽车制造企业如何落地EMS系统
  • 图解TCP核心机制:一张速查表搞定协议要点、面试题与实战调优
  • 基于单片机的智能晾衣架控制系统的设计与实现
  • 助力航空精密制造:Tube Qualify在管路在线检测与弯曲分析中的应用
  • 2026移动端工程师AI大模型3个月速成计划:从App开发到智能体架构师!
  • 网络协议硬核解析:应对HTTP/TCP/UDP及NoSQL的灵魂拷问与设计原理
  • 谷歌重磅测试Nano Banana2Flash AI图像模型,极速+高性价比双突破
  • 解决报错Error in sitecustomize; set PYTHONVERBOSE for traceback:NameError: name ‘reload‘ is not defined
  • 一篇文章讲透网络协议知识体系:从TCP/IP、HTTP到NoSQL的协议栈全景
  • 只会写Prompt怎么行?揭秘生产级Agent炼成之路:这10大工程维度,你一定要懂!
  • 突破传统点式测量:DIC技术在复合材料全场变形与损伤表征中的应用
  • 配管配线工程量计算规范实操
  • 耐达讯自动化CAN转PROFIBUS网关让软启动器如何让包装线告别“信号迷宫”
  • 3C电子制造质检升级:拍照式蓝光3D扫描在精密测量中的应用实践
  • 网络分析工具Wireshark系列专栏:20-Wireshark 快捷键大全,文末附备忘录
  • 如何用 4 种可靠的方法更换 iPhone
  • 从日跑百单到月入1.5W,外卖骑手的网络安全转行路
  • 工业通信中的“工业战狼”!耐达讯自动化CAN转PROFIBUS网关
  • 云负载测试实战:JMeter进阶 - 突破单机瓶颈,驾驭分布式云端压测