• jmeter基本使用及基于jmeter的数据验证


    一、工具介绍

    Jmeter是一款使用Java开发的,开源免费的,测试工具,主要用来做功能测试和性能测试。JMeter 用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的性能情况。

    二、常用组件介绍

    2.1 测试计划(Test Plan)

    是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。

    默认打开时候就存在了,可以自定义容器的名称。

    2.2 线程组(Thread Group)

    代表一定数量的并发用户,它可以用来模拟并发用户发送请求。

    相关参数说明:

    名称:为线程组起名字。

    线程属性-线程数:设置发送请求的用户数目 ,即并发数,上图为100个。

    线程属性-Ramp-Up Period(in second):线程间的时间间隔,单位是秒。即所有线程在多少时间内启动。

    线程属性-循环次数:请求的重复次数,如果选择后面的forever(默认),那么 请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复指定的次数。

     

    2.3 取样器(sampler)

    定义实际的请求内容,被线程组包含,主要用HTTP请求。

    相关参数说明:

    名称:HTTP请求的名字。

    Web服务器-服务器名称或IP、端口号、HTTP请求,脚本录制时自动添加。

    也可以手动输入。

    2.4 监听器(Listener)

    常用的包括:聚合报告、查看结果树、用表格查看结果,都支持将结果数据写入文件。

    结果树可以用于查看请求的状态,返回值等内容

    聚合报告可以用于查看请求相应时间,发送、接受字节大小等数据

    2.5 逻辑控制器(Logic Controller)

    逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。常用的场景就是一个用户登陆之后,保持登陆状态,循环的做同样的报错(保存数据,查看数据,指定条件查询等)

    上图的例子就是表示用10个并发用户,登录后通过循环控制器,分别执行100次保存交易及提交审批的操作。

    2.6 断言(Assertions)

    可以用来判断请求响应的结果是否如用户预期。这个可以判断请求是否成功,隔离失败请求。

    目前用过的有响应断言。

    2.7 前置处理器(Pre Processors)和后置处理器(Post Processors)

    前置处理器(Pre Processors)和后置处理器(Post Processors)负责在生成请求之前和之后完成工作。

    前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。

    我们主要在动态关联中用到后置处理器的正则表达式提取器,后面的例子会列举。

    2.8 定时器(Timer)

    定时器(Timer)负责定义请求之间的延迟间隔(相当于loadrunner的思考时间)。

    三、脚本录制

    3.1 添加代理

    添加组件>>代理服务器

     

    3.2 本地设置代理

    以Google Chrome为例

    设置完成后,使用Google Chrome 访问指定地址,相关请求就会全部录制下来

    注意,这里录制的脚本是每一次请求的,包括获取所有的图片,js,html网页资源,都会包括在里面,可以在代理界面对录制的请求做一次过滤

    排除模式里面添加 .*.(js|css|PNG|jpg|ico|png|gif).*

    四、脚本优化

    以登录保存一笔交易为例,现在来调整脚本。

    4.1 删除多余脚本脚本

    以下为删除后的脚本记录

    4.2 调整名字

    4.3 获取Session ID并使用

    获取登录的Session ID,并添加cookies管理器,统一使用

    查看结果树,需要提取对应的session

    登录的请求下添加正则表达式提取

    添加 cookie 管理器,并获取session变量

     

     

    如果成功了,可以用结果树查看

    4.4 获取业务ID并使用

    以这次的用户为例,保存生成的交易ID需要在提交审批时候使用,这里还需要将保存请求里面的返回ID,作为提交审批里面的参数使用

    首先,查看结果树里面的保存响应数据,以及提交审批的请求数据。

    所以需要提取保存请求响应数据的approve id,作为提交审批中的serial_no

    综上所述,了解这些内容之后,就可以做一些接口级的并发测试了。

    五、基于jmeter数据验证

    这是基于外汇交易系统经常需要测试相同数据出的会计分录,头寸,台账内容是否符合预期的场景,想到一个测试思路。每一次更新代码,都需要检查,审核产生的数据,需求灭有变化的情况下,这个回归的流程都是一致的。

    首先得指定一个测试库,不断的清库,修改系统日期(后者更为方便),以即期为例,维护一遍即期交易,保存提交审批并审批完成后,继续清算初审、复审,流程完成之后,会生成对应的台账、头寸、分录数据,将这个主要流程录制为jmeter脚本。

    后续分别去访问这些节点(分别对应不同的请求),根据返回值的断言,来判断结果是否符合我们的预期,来判断新一轮的程序调整是否有问题。

  • 相关阅读:
    快速启动jar包脚本【Linux】
    解决Linux报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录
    学习——nginx(2021/09/23)
    react hook中的状态管理方式
    findDOMNode is deprecated in StrictMode. findDOMNode was passed an instance of DomWrapper which is inside StrictMode.
    祝胡老师节日快乐
    vue3+ts+AntV/L7加载钻取地图
    实用的 Bash 快捷键
    react antd form 自定义表单验证validator 需要注意的细节,否则会无法触发表单提交。
    execjs
  • 原文地址:https://www.cnblogs.com/leixs/p/13627822.html
Copyright © 2020-2023  润新知