微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jmeter - 自动化压测脚本

【问:为什么要自动化压测】

  1. 目前使用Jmeter压测,都是手动逐步加压
  2. 需要手动修改并发数,烦
  3. 需要等待完成,费时

【实现思路】

  1. 制定策略,让脚本逐步施压 --> 并发数??
  2. 生成对应并发数的jmx文件
  3. Jmeter静压测
  4. 使用shell 控制逻辑
#!/usr/bin/env bash

export jmx_template="testScript20220621"
export suffix=".jmx"
export jmx_template_filename="${jmx_template}${suffix}"
export os_type=`uname`

# 需要在系统变量中定义jmeter根目录的位置,如下
# export JMETER_HOME="/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=(5 10 20)
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_HOME}/bin/jmeter -n -t ${jmx_filename} -l ${jtl_filename}&
sleep 10
killJMeter
rm -f ${jmx_filename}
done
echo "自动化压力测试全部结束"

 

 5. Jmeter 脚本 -线程数 脚本会将thread_num替换成需要执行的值

 

【脚本解释】

(1)uname :获取操作系统的名称

(2)pid=ps -ef|grep jmeter|grep java|grep ${jmx_filename}|awk '{print $2}'

获取进程号,我们可以在脚本运行过程中,在iTerm中查看一下

 

(3)nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下

sh auto_test.sh

【查看运行结果】

运行:sh auto_test.sh

使用jmeter打开聚合报告

原文地址:https://www.cnblogs.com/fenghuaihuai/p/16399803.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐