• 【Jmeter】性能测试脚本开发——性能测试环境准备、Jmeter脚本编写和执行


    一、常用的Jmeter元件

    1. 取样器-HTTP请求
      作用:发送HTTP请求
    2. 配置原件-HTTP请求默认值
      作用:设置HTTP请求的默认参数
    3. 配置原件-用户定义的变量
      作用:定义变量,可以供后面引用
    4. 后置处理器-JSON提取器
      作用:提取JSON相应结果中的内容
    5. 断言-响应断言
      作用:对响应结果进行断言
    6. 断言-JSON断言
      作用:对响应结果进行断言
    7. 监听器-查看结果树
      作用:用于Jmeter脚本调试时查看运行日志
    8. 监听器-聚合报告
      作用:用于Jmeter性能测试时查看运行结果

    二、性能测试环境准备

    1. 特点
      (1)性能测试环境独立使用,其他测试人员不可使用该环境。
      (2)性能测试的环境要求与用户真实使用的环境完全一致。
      (3)硬件环境:硬件服务器的台数、硬件服务器的配置、网络环境。
      (4)软件环境:所有的操作系统、数据库、被测程序、第三方软件等软件。
      (5)使用场景的一致性:数据量和发送请求的负载量与用户环境一致。

    2. 如何达成环境一致
      (1)硬件环境:找运维人员申请。
      (2)软件环境:所有软件版本和配置找开发人员要,然后安装。
      (3)测试数据:通过python脚本构造相同数量级的数据
      (4)业务场景:通过需求分析和运营数据获取主要的业务操作和对应的并发指标。

    3. 测试数据的准备
      如下构造用户数据。在性能测试时需要模拟不同的用户进行登录操作,因此需要提前构造用户数据。

    #导包
    import pymysql
    #创建连接
    conn = pymysql.connect(host="192.168.65.129",user="litemall",password="litemall123456",database="litemall",port=3306,charset='utf8')
    #创建游标
    cursor = conn.cursor()
    #添加用户的SQL语句
    user_sql = "INSERT INTO `litemall`.`litemall_user` (`id`, `username`, `password`, `gender`, `birthday`, `last_login_time`, `last_login_ip`, `user_level`, `nickname`, `mobile`, `avatar`, `weixin_openid`, `session_key`, `status`, `add_time`, `update_time`, `deleted`) VALUES ('{}', '{}', '$2a$10$SrnVvS/D6N0XNd4MHNjQR.W3VUfJhOdBylPC3Ika0zTvmxyiJ52AS', '0', NULL, '2020-08-14 12:00:58', '192.168.91.1', '0', 'xiaoh', '{}', 'https://yanxuan.nosdn.127.net/80841d741d7fa3073e0ae27bf487339f.jpg?imageView&quality=90&thumbnail=64x64', '', '', '0', '2020-08-12 14:14:37', '2020-08-14 12:00:58', '0');"
    #循环插入数据
    user_start = 100000
    for i in range(100000):
        user_id = user_start + i
        username = "test" + str(user_id)
        mobile = "13012" + str(user_id)
    
        print("插入第{}条数据ID为{}".format(i+1,user_id))
        sql = user_sql.format(user_id,username,mobile)
        cursor.execute(sql)
    
        conn.commit()
    #关闭游标
    cursor.close()
    #关闭连接
    conn.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    三、编写Jmeter脚本

    1. HTTP信息头管理器
      在这里插入图片描述

    2. HTTP请求默认值
      写法:写入协议、域名、端口、编码格式,在HTTP请求取样器中只需要写入路径、请求方法、参数即可。
      优点:在测试时,如果换了测试环境,直接修改HTTP请求默认值即可,不需要修改所有脚本。
      在这里插入图片描述

    3. 独立线程组
      (1)线程组名称建议修改为用例名称。
      (2)HTTP请求取样器的名称修改为用户名称。
      (3)每个HTTP请求需要添加断言。
      (4)如果请求URL中的参数可能为中文,建议将参数放入到下面参数列表中,并将中文参数勾选“编码”。
      例一: 简单测试用例——登录
      在这里插入图片描述
      HTTP请求——登录:
      在这里插入图片描述
      JSON断言:
      在这里插入图片描述
      响应断言:
      在这里插入图片描述
      例二:复杂测试用例——业务流程1
      在这里插入图片描述
      JSON提取器:
      在这里插入图片描述
      HTTP信息头管理器:
      在这里插入图片描述

    4. 聚合报告:
      在这里插入图片描述

    5. jp@gc - PerfMon Metrics Collector
      在这里插入图片描述

    四、执行测试脚本

    1. 执行测试脚本的测试机
      执行性能测试前,需要根据要模拟的业务负载量来选择适当的测试机。
      (1)单机执行
      windows:图形化界面、操作简单;资源使用低,能模拟的并发数低。
      linux:命令行操作,操作难度高;资源使用率高,能模拟的并发数高。
      (2)分布式执行
      如果单台测试机(无论windows或linux)都无法满足负载量要求时,需要使用分布式的方法,使用多台测试机一起来模拟特定负载量的业务。

    2. 根据性能测试用例,模拟用户并发执行,记录对应的性能指标
      在这里插入图片描述

  • 相关阅读:
    【java毕业设计】基于java+Eclipse的飞机大战游戏设计与实现(毕业论文+程序源码)——飞机大战游戏
    线程池之ThreadPoolExecutor
    Langchain-Chatchat项目:4.1-P-Tuning v2实现过程
    深度学习_1_基本语法
    数据挖掘实战应用案例精讲-【概念篇】数据湖(Data Lake )
    安杰思医学冲刺科创板:​年营收3亿 拟募资7.7亿
    Redis
    ffmpeg 特效 转场 放大缩小
    tp6.1多应用控制器不存在:app\应用名\controller\应用名
    2022 极术通讯-《服务器应用场景性能测试方法 虚拟化》解读
  • 原文地址:https://blog.csdn.net/jylsrnzb/article/details/133581360