Jmeter系列(11)- 自动化压力测试逻辑思路及例子
为什么需要进行自动化压力测试
手动逐步加压,需要人工改变并发数,还要等待。所有,我们完全可以制定好策略,让程序自动加压,自动等待,输出报告
实现思路
- Jmeter脚本(.jmx文件)- 压测逻辑
- Shell - 控制逻辑(Windows系统用Bat)
- 并发数更改 - Linux三剑客
- Jmeter静默运行 - 脱离UI限制,使其运行稳定
Jmeter脚本
UI页面调试通
Shell脚本
前期准备:Linux上JDK,Jmeter安装好,环境变量已配置好
脚本:
#!/bin/bash
jmx_template="APIStress"
suffix=".jmx"
jmx_template_filename=$jmx_template$suffix
os_type=$(uname)
c_path=$(dirname $0)
c_path=$(cd $c_path;pwd)
#强制杀死Jmeter进程
killJmeter()
{
pid=$(ps -ef | grep jmeter | grep java | grep $jmx_filename | awk '{print $2}')
echo "jmeter id list:$pid"
if [ -z $pid ]
then
echo "no jmeter pid alive"
else
kill -s 9 $pid
fi
}
thread_number_array=(3 5 10)
for i in ${thread_number_array[@]}
do
jmx_filename=$jmx_template$i$suffix
jtl_filename="test_$i.jtl"
rm -f $c_path/../jmeter_jmx/$jmx_filename $c_path/../jmeter_jtl/$jtl_filename
cp $c_path/../jmeter_jmx/$jmx_template_filename $c_path/../jmeter_jmx/$jmx_filename
echo "生成jmx压测脚本:$jmx_filename"
if [ $os_type == "Linux" ]
then
sed -i "s/thread_number/$i/g" $c_path/../jmeter_jmx/$jmx_filename
else
echo "当前$os_type系统未安装相应关机"
fi
nohup jmeter -n -t $c_path/../jmeter_jmx/$jmx_filename -l $c_path/../jmeter_jtl/$jtl_filename &
sleep 60
killJmeter
rm -f $c_path/../jmeter_jmx/$jmx_filename
done
echo "自动化压测结束"
运行Shell脚本
查看报告
使用UI Jmeter查看报告