侧边栏壁纸
博主头像
一朵云的博客博主等级

拥抱生活,向阳而生。

  • 累计撰写 67 篇文章
  • 累计创建 25 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

Jenkins -- 结合JMeter做接口持续集成

一朵云
2021-01-20 / 0 评论 / 4 点赞 / 7704 阅读 / 5182 字

前言

  当公司测试岗同事编码能力较为一般,公司敏捷开发,项目迭代速度又很快,工期较紧,每次发版前的回归测试很费时费力。

  有方法可以减轻测试岗的压力吗?答案是肯定的,这时候我们完全可以考虑“ Jmeter + Git + Maven + Jenkins ”的组合,基于Jmeter可视化界面做接口测试用例,再通过Git拉取代码,Maven构建打包,最后再经过Jenkins糅合成自动化、可持续集成的接口测试,轻松完成起码 90% 的回归测试内容。

提示

  Jenkins的部署与使用之前就已经梳理过了,细节就不累述了,不清晰的话可以先看看之前的文章。

步骤

1、编写Jmeter测试用例。

  根据接口测试用例完成Jmeter测试用例的编写,并发布到Jenkins工作目录下备用。

2、Jenkins安装插件 HTML Publisher plugin

用于关联Jenkins构建任务和Jmeter的测试报告

image.png

3、Jenkins任务配置 HTML Publisher plugin

jenkins任务 -- 构建后操作 -- 增加构建后操作步骤 -- 选择“Publisher HTML reports”。

image.png

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
    image.png

  • 任务配置中引用 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分支代码更新,触发一次构建,详情日志请查阅附件。

结果展示

image.png

image.png

image.png

4

评论区