30. Jmter脚本自动化压测

作者: 软件测试汪 | 来源:发表于2019-12-23 13:43 被阅读0次

    自动化压力测试

    脚本为了实现不同线程组下压力情况,其实通过Jmeter开源组件Ultimte Thread Group也可以实现。这里只是另外一种实现方式。

    实现思路:

    • JMeter 脚本 (.jmx 文件) - 压测逻辑
    • Shell – 控制逻辑
    • 不能绕开麻烦,并发数的更改 – 想想Linux的三剑客之一哦
    • JMeter 静默运行 – 脱离UI限制,使得自动化运行更稳定
    image.png

    步骤

    以下内容基于centos

    1. 把Jmeter脚本和 shell脚本放到/usr/local 目录下
    2. export jmeter_path="/your jmeter path/"
    3. sh auto_stress_test.sh
    #!/usr/bin/env bash
    export jmx_template="PreClassMenu_auto"
    export suffix=".jmx"
    export jmx_template_filename="${jmx_template}${suffix}"
    export os_type=`uname`
    
    # 需要在系统变量中定义jmeter根目录的位置,如下
    # export jmeter_path="/your jmeter path/"
    
    # 清空nohup.out
    cat /dev/null > nohup.out
    
    # 强制杀掉JMeter进程
    killJMeter()
    {
        pid=`ps -ef|grep jmeter|grep java|grep ${jmx_filename}|awk '{print $2}'`
        echo "jmeter Id list :$pid"
        if [[ "$pid" = "" ]]
        then
          echo "no jmeter pid alive"
        else
          kill -9 $pid
        fi
    }
    
    thread_number_array=(10 20 30 40 50)
    for num in "${thread_number_array[@]}"
    do
        # 生成对应压测线程的jmx文件
        export jmx_filename="${jmx_template}_${num}${suffix}"
        export jtl_filename="test_${num}.jtl"
    
        rm -f ${jmx_filename} ${jtl_filename}
        cp ${jmx_template_filename} ${jmx_filename}
        echo "生成jmx压测脚本 ${jmx_filename}"
    
        if [[ "${os_type}" == "Darwin" ]]; then
            sed -i "" "s/thread_num/${num}/g" ${jmx_filename}
        else
            sed -i "s/thread_num/${num}/g" ${jmx_filename}
        fi
    
        # JMeter 静默压测
        nohup ${jmeter_path}/bin/jmeter -n -t ${jmx_filename} -l ${jtl_filename} &
        sleep 65
        killJMeter
        rm -f ${jmx_filename}
    done
    echo "自动化压测全部结束"
    
    
    

    软件测试汪简书地址
    软件测试汪博客地址

    欢迎关注微信公众号:软件测试汪。软件测试交流群:809111560

    转载请注意出处,谢谢合作

    相关文章

      网友评论

        本文标题:30. Jmter脚本自动化压测

        本文链接:https://www.haomeiwen.com/subject/spuznctx.html