码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • jmeter +jenkins 实现压测自动化


    本文为在霍格沃兹测试开发学社中学习到的一些技术,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~

    霍格沃兹启发

    技术分享 | Jenkins 如何参数化job ?
    性能课程-电商压测实战

    jmeter +jenkins 实现压测自动化

      • 霍格沃兹启发
      • 一、shell脚本实现jmeter压测自动化
        • 1.1 编写jmeter脚本
        • 1.2 编写shell脚本
      • 二、jenkins持续集成
        • 2.1 shell脚本上传码云
        • 2.2 jenkins创建任务
      • 三、Jenkins参数化构建
        • 3.1参数化构建过程->文件参数
        • shell脚本做如下的调整:

    一、shell脚本实现jmeter压测自动化

    1.1 编写jmeter脚本

    在这里插入图片描述

    1.2 编写shell脚本

    #!/usr/bin/env bash
    
    # 压测脚本模板中设定的压测时间为60s
    
    export jmx_template="demo"
    export suffix=".jmx"
    export jmx_template_filename="${jmx_template}${suffix}"
    export os_type=`uname`
    export jmxFile="jmx"
    export jtlFile="jtl"
    
    echo "自动化压测开始"
    
    # 压测并发数列表 ,用来替换jmeter脚本中的设置的thread_num 变量 
    thread_number_array=( 10 11)  
    for num  in "${thread_number_array[@]}"
    do
        # 生成对应压测线程的jmx文件
        export jmx_filename="${jmxFile}/${jmx_template}_${num}${suffix}"
        export jtl_filename="${jtlFile}/test_${num}.jtl"
        export web_report_path_name="web_report_${num}"
    	
    	# 把历史重复的文件删除
        rm -f ${jmx_filename} ${jtl_filename}
        rm -rf ${web_report_path_name}
    
        cp ${jmx_template_filename} ${jmx_filename}
        echo "生成jmx压测脚本 ${jmx_filename}"
    
        if [[ "${os_type}" == "Darwin" ]]; then
            # thread_num 为jmx文件中需要替换的关键字
            sed -i "" "s/thread_num/${num}/g" ${jmx_filename}
        else
            sed -i "s/thread_num/${num}/g" ${jmx_filename}
    
        fi
    
        # jmeter 静默压测
        echo "静默压测_${num}"
        jmeter -n -t ${jmx_filename} -l ${jtl_filename}
    
        # 生成web压测报告
        echo "生成web压测报告_${num}"
        jmeter -g ${jtl_filename} -e -o ${web_report_path_name}
        echo "jmeter -g ${jtl_filename} -e -o ${web_report_path_name}"
    
    done
    
    echo "自动化压测全部结束"
    

    二、jenkins持续集成

    2.1 shell脚本上传码云

    shell脚本上传码云🐜,在此不再讲述

    2.2 jenkins创建任务

    jenkins-持续集成-创建job

    三、Jenkins参数化构建

    在上述的方法中,在脚本中写死指定了执行的线程数量,如图所示是 先执行10个线程,之后再执行11个线程。在实际的工作中,线程数量往往是不断变动的,我们总不能每次都修改脚本,上传git,拉取构建吧?!
    在这里插入图片描述
    Jenkins参数化构建 可以解决这个问题,线程数量通过参数传递进去。

    3.1参数化构建过程->文件参数

    在这里插入图片描述

    • shell脚本中的$params 是上一个步骤中填写的参数名称
      在这里插入图片描述
    • shell脚本做如下的调整:

    原头部:

    在这里插入图片描述
    调整为:

    # s* 是执行shell脚本时传递进来的参数
    for num in $*;
    do
        echo ${num}
    
    • 构建执行
      在这里插入图片描述
    • 构建结果

    在这里插入图片描述
    只需Docker,环境问题再也不是测开路上的『坑』

  • 相关阅读:
    Nacos集群下使用Nginx访问出现404问题
    基于Java的驾校收支管理可视化平台设计与实现(源码+lw+部署文档+讲解等)
    【JavaEE初阶】线程的概念与创建
    springboot面试杀手锏-自动配置原理
    Frp内网穿透win系统实录
    大数据学习之分布式数据采集系统Flume学习
    【计算机网络四】网络层
    【java】poi-tl 1.9.1 word模板插入文本及动态复杂表格
    Unity—UGUI
    ARM64 linux 中断处理--架构
  • 原文地址:https://blog.csdn.net/qq_15283475/article/details/127107922
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号