一、上传shell脚本
sh文件用来批量运行Jmx文件及自动压缩结果,具体功能参考sh文件注释
|
脚本如下
test_jmx.sh
#变量
jmxpath=$1 #jmx文件路径
minUser=$2 #最小并发用户数
maxUser=$3 #最大并发用户数
duration=$4 #并发时长
interval=$5 #递增用户数
function readfile ()
{
maxUser_func=$2
duration_func=$3
interval_func=$4
for file in `ls $jmxpath` #循环取jmxpath路径下的文件
do
if [ "${file##*.}" == "jmx" ]; #如果文件名后缀是jmx
then
echo $jmxpath"/"$file #输出文件绝对路径
#脚本名称
filename="${file%.*}" #取文件名前缀
minUser_func=$1
while (( minUser_func<=maxUser_func ))
do
echo "并发数="$minUser_func #输出并发数
#运行函数run_jmeter:
#参数1=jmx文件绝对路径=$jmxpath"/"$file
#参数2=jtl文件名称=jmx文件名前缀_并发用户数=$filename"_"$minUser_func
#参数3=并发用户数
#运行完成run_jmeter后,并发用户数按interval递增,继续循环,直到并发用户数>最大并发数,循环终止。
run_jmeter $jmxpath"/"$file $filename"_"$minUser_func"vu" $minUser_func
(( minUser_func=minUser_func+interval_func))
#睡眠1分钟
sleep 20s
done
fi
done
echo -e "**********************************\n测试结束\n**********************************"
# time2=$(date "+%Y%m%d%H%M%S")
# result_path="$jmxpath/result_$time2.zip"
# zip -qr $result_path $jmxpath
# echo -e "**********************************\n请下载zip文件查看结果:\n《$result_path》\n**********************************"
}
function run_jmeter () {
#echo "参数***********"$1 $2 $3 #输出jmx文件绝对路径、jtl文件名称、当前并发用户数
mkdir -p $jmxpath"/jtl/" #创建jtl文件夹
mkdir -p $jmxpath"/html/" #创建html文件夹
time2=$(date "+%Y%m%d%H%M%S")
jtl_path="$jmxpath/jtl/$2_$time2.jtl"
html_path="$jmxpath/html/$2_$time2"
# jtl_path="$jmxpath/jtl/$2.jtl"
# html_path="$jmxpath/html/$2"
# time2=$(date "+%Y%m%d%H%M%S")
# if [ -f $jtl_path ] ;then #如果jtl文件已存在,则重命名新文件
# jtl_path="$jmxpath/jtl/$2_$time2.jtl"
# fi
# if [ -d $html_path ] ;then #如果html文件已存在,则重命名新文件
# html_path="$jmxpath/html/$2_$time2"
# fi
#拼接jmeter命令行:
#$1=jmx文件绝对路径
#$2=jtl文件名称
#$3=当前并发用户数
#$duration=并发时长
#jmeter -n -t $1 -l $jmxpath"/jtl/"$2".jtl" -e -o $jmxpath"/html/"$2 -J users=$3 -J time=$duration
echo -e "***********jmeter命令行***********\njmeter -n -t $1 -l $jtl_path -e -o $html_path -J users=$3 -J time=$duration\n**********************************"
jmeter -n -t $1 -l $jtl_path -e -o $html_path -J users=$3 -J time=$duration
return $?
}
if [ ! -n "$1" ] ;then
echo "Please input the target test case jmx path"
read jmxpath
else
jmxpath=$1
fi
readfile $minUser $maxUser $duration $interval
注:上传后记得授权才能使用(进入你上传sh文件的目录,再授权)
[root@jmeter-158 zyjmx]# chmod a+x test_jmx.sh
变绿即授权成功
二、创建专用文件夹
文件夹用来放本次测试的jmx文件、html及jtl等信息
|
三、上传jmx脚本
选择jmx脚本上传
**********划重点**********
线程数=${__P(users,1)}
持续时间(秒)=${__P(time,100)}
http sample名称 = 自定义名称前缀_${__P(users,1)}
请求名称加后缀用户数是为了后期生成图表的时候,不同并发数可以放在一张图里展示,免得测试结果叠加在一起不方便处理图表。
*****************************
|
四、运行命令
运行命令
举个例子,现在有个脚本,想从20并发压到100并发,每次递增10个用户,每个场景运行10分钟。可以设置为:
./test_jmx.sh /opt/apache-jmeter-5.1.1/hwmjmx/test 20 100 600 10 >>/opt/apache-jmeter-5.1.1/hwmjmx/test/jmeter.log