前言
当公司测试岗同事编码能力较为一般,公司敏捷开发,项目迭代速度又很快,工期较紧,每次发版前的回归测试很费时费力。
有方法可以减轻测试岗的压力吗?答案是肯定的,这时候我们完全可以考虑“ Jmeter + Git + Maven + Jenkins ”的组合,基于Jmeter可视化界面做接口测试用例,再通过Git拉取代码,Maven构建打包,最后再经过Jenkins糅合成自动化、可持续集成的接口测试,轻松完成起码 90% 的回归测试内容。
提示
Jenkins的部署与使用之前就已经梳理过了,细节就不累述了,不清晰的话可以先看看之前的文章。
步骤
1、编写Jmeter测试用例。
根据接口测试用例完成Jmeter测试用例的编写,并发布到Jenkins工作目录下备用。
2、Jenkins安装插件 HTML Publisher plugin
用于关联Jenkins构建任务和Jmeter的测试报告
3、Jenkins任务配置 HTML Publisher plugin
jenkins任务 -- 构建后操作 -- 增加构建后操作步骤 -- 选择“Publisher HTML reports”。
4、编写Jmeter运行的beanshell脚本
编写jmeter_test.sh文件,并存放在jenkins的工作路径下。
#!/usr/bin/env bash
# 判断是否有report文件夹,有则删除,jmeter存放测试报告的文件夹必须为空
if [ -d "$PROJ_PATH/report" ]; then
rm -rf $PROJ_PATH/report
mkdir $PROJ_PATH/report
echo "删除已存在的report文件夹,并重新生成空文件夹!"
else
mkdir $PROJ_PATH/report
fi
if [ -f "$PROJ_PATH/result.jtl" ]; then
rm -rf $PROJ_PATH/result.jtl
echo "删除已存在的result.jtl文件!"
fi
# 执行jmx文件
jmeter -n -t 1个并发-循环1次-初始化并游客注册.jmx -l result.jtl -e -o ./report
if [ ! -d "$PROJ_PATH/jmeter_history" ]; then
mkdir $PROJ_PATH/jmeter_history/
echo "jmeter_history文件夹不存在,现已创建成功!"
fi
# 备份刚执行完的jmx、jtl和测试报告
time="`date +%y%m%d%H%M%S`"
mkdir $PROJ_PATH/jmeter_history/$time
cp $PROJ_PATH/1个并发-循环1次-初始化并游客注册.jmx $PROJ_PATH/jmeter_history/$time/1个并发-循环1次-初始化并游客注册.jmx
cp $PROJ_PATH/result.jtl $PROJ_PATH/jmeter_history/$time/result.jtl
cp -rf $PROJ_PATH/report $PROJ_PATH/jmeter_history/$time/report
5、为jenkins配置中的beanshell添加内容
jenkins任务 -- 构建 -- 执行shell
echo "开始构建 -- shell脚本启动!"
# jenkins默认在build结束后会kill掉所有的衍生进程,填写该配置可避免
BUILD_ID=DONTKILLME
# 重新加载配置参数
#. /etc/profile
source /etc/profile
# 获取git拉取代码后存放的路径
export PROJ_PATH=`pwd`
echo `pwd`
# 执行自定义的shell脚本 -- 部署最新代码
# sh $PROJ_PATH/rebuild.sh
source $PROJ_PATH/rebuild.sh
# 执行jmx文件的测试用例
source $PROJ_PATH/jmeter_test.sh
echo "结束构建 -- shell脚本执行完毕!"
6、解决Jmeter测试报告丢失css和js问题,以及时区校准
-
安装插件 Groovy
-
任务配置中引用 Execute system Groovy script
-
配置 Groovy Script
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
7、邮件模板补充
构建结果 - ${BUILD_STATUS}
<br/>
触发原因 - ${CAUSE}
<br/>
测试报告 - ${BUILD_URL}JMeter_20HTML_20Report
<br/>
描述 - master分支代码更新,触发一次构建,详情日志请查阅附件。
评论区