性能自动化压测
性能测试总是在给业务场景不断的施压,找出性能瓶颈
或许每次的压测时间都很长
jmter自动化压测对于我来说很久前很神秘,之后明白原来就是对线程数做参数化,通过性能测试策略来便捷的解决问题
策略这词看起来,有点玄乎,实际的意思就是应该怎么做,实话性能测试的水很深,我也是入门罢了
话不多说,如下:
步骤1:选择性能测试业务,选择高频使用
步骤2:确定性能测试指标
步骤3:搭建性能测试业务用例(哪些接口,调用方式)、准备性能测试环境、数据(模拟客户的环境)
步骤4:感觉前面的步骤都是废话和技术不沾边,其实不是,分析-设计-编码这样的定律不是乱说的,不想清楚怎么做到最后也是一事无成,开发jemter脚本 + 真实业务场景(csv数据驱动、思考时间、斜坡上周期....) 不考虑真实的场景做出来也是不达标
步骤5:搭建性能监控docker+influxDB+grafa
步骤6:观察每组压测后的结果,以及性能的表现趋势(当然制定使用二分法来制定压测用户数)
步骤7:至结果分析
拥有预测之性能指标,达到预期的用户数即停止测试........
没有预期的用户数及指标,压测达到性能瓶颈时,服务端哪个性能指标先不满足即优化哪个
步骤8:性能调优.....(tomcat调优、mysql调优、以至于xxxx入门到精通...........架构十分熟悉,这些你需要玩得很6,当然我也不具备)
步骤9:测试报告、jmx脚本.....
----------------------------------------------------------------------
完成步骤5后,跑通jemter,开始编写bash shell脚本,通过sed命令,参数化替换jemter设定好的形参
自动化压测策略:
①10 20 50 100 200 400
②300 250 220....
③....
再通过jenkins让大家都可以参与进来
嗯,这很友好~
----------------------------------------
总之:
左边一台显示随时观察性能指标的趋势变化,右边显示器写功能测试用例
完成压测后通过每一组压测结果具体指标分析,根据再制订下一组自动化压测线程数
最终,一下午时间过去了,不影响其他工作,这就是自动化的魅力!
附:
变量替换如下图所示


shell脚本如下:
# usr/bin/env bash
#压测脚本模板中设定的压测时间为60s
export jmx_template="emenu"
export suffix=".jmx"
export jmx_template_filename="${jmx_template}${suffix}"
export os_type="uname"
echo"开始"
thread_number_array={10 20 30 40 50 60}
for num in "${thread_number_array[@]}"
do
export jmx_filename = "${jmx_template}_${mun}${suffix}"
export jtl_filename = "test_${num}.jtl"
export web_report_path_name="web_${num}"
rm -f ${jmx_filename} ${jtl_filename}
rm -rf ${web_report_path_name}
cp ${jmx_template_filename} ${jmx_filename}
echo "生成jmx压测脚本 ${jmx_filename}"
if [["${os_type}"== "Darwin"]]; then
sed -i "" "s/thread_num/${num}/g" ${jmx_fillname}
else
sed -i "s/thread_num/${num}/g" ${jmx_fillname}
fi
#jmx 静默压测
${jmter_path}/bin/jmeter -n -t ${jmx_filename} -l ${jtl_filename}
#生产报告
${jmter_path}/bin/jmeter -g ${jtl_filename} -e -o ${web_report_path_name}
done
echo "压测结束"

浙公网安备 33010602011771号