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

霍格沃兹启发

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

一、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,环境问题再也不是测开路上的『坑』

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐