自动化压力测试
脚本为了实现不同线程组下压力情况,其实通过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 "自动化压测全部结束"
看完这篇内容后,相信以下两件事,也会对你的个人提升有所帮助:
1、 点赞,让更多人能看到这篇文章,同时你的认可也会鼓励我创作更多优质内容。
2、 让自己变得更强:想一想,如果你想在测试这个行业一直做下去,你的经验和测试技术是远远不够的,你需要进阶,你需要丰富你的技术栈!还等什么!
最后:【可能给予你助力的教程】
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
关注我的微信公众号:【程序媛木子】免费获取~
我的学习交流群:1125939340 群里有技术大牛一起交流分享~
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!