Jenkins + Jmeter 搭建简易CI (自动执行接口测试+发布web报告+发送邮件)

Jenkins + Jmeter 搭建简易CI (自动执行接口测试+发布web报告+发送邮件)

  Jenkins可以很方便的实现构建项目之后自动执行其他任务。可以把Jmeter脚本作为任务放在项目之后自动启动,然后通过IIS发布html报告,并且发出邮件至相关人员。
  


目录


一、 Jenkins新建任务

  • 在Jenkins上新建一个接口测试的任务

1. 打开Jenkins,点击新建。(此处1.0_Demo就是我的测试对象项目)
这里写图片描述

2. 输入接口测试的任务名,选择自由风格,点击OK
这里写图片描述

3. 在构建触发器,勾选”Build after other projects are built”,输入你的前置任务
这里写图片描述

4. 在构建区,添加”Execute Windows batch command”
填入启动jmeter的批处理语句,注意将配置信息修改为你的内容。
这里写图片描述

:: 配置信息
set FILE_PATH=C:\APITest\Demo
set JMX_NAME=Demo

:: 等待时间
ping 127.0.0.1 -n 60 >nul

:: 清除上次测试报告
IF EXIST "%FILE_PATH%\report" rd /s /q %FILE_PATH%\report

:: 生成当前日期
set dateTmp=%date:~0,4%%date:~5,2%%date:~8,2%
if "%time:~0,2%" lss "10" (set hour=0%time:~1,1%) else (set hour=%time:~0,2%)
set timeTmp=%hour%%time:~3,2%%time:~6,2%
set d=%dateTmp%%timeTmp%
echo current date: %d%

:: 执行测试
call jmeter.bat -n -t %FILE_PATH%\api\%JMX_NAME%.jmx -l %FILE_PATH%\%JMX_NAME%.jtl -e -o %FILE_PATH%\report

:: 归档
mkdir "%FILE_PATH%\history\%d%"
move %FILE_PATH%\%JMX_NAME%.jtl %FILE_PATH%\report >nul
xcopy /s /i /y %FILE_PATH%\report %FILE_PATH%\history\%d% >nul

5. 将你编写的jmeter脚本,即jmx文件和数据文件,放到上一步配置信息中的路径的\api路径下。(\api文件夹是需要你自己手动创建的)
* 这里演示的不够细致,其实应该是有txt或csv文件的,用于驱动测试
这里写图片描述

6. 这个时候在Jenkins上构建应该就通了,如果在%FILE_PATH%\report下有报告就说明成功了。
这里写图片描述

二、 IIS部署网站

  • 在Jenkins所在的电脑上部署一个IIS网站

1. 打开IIS管理器(如果没有请百度一下,系统默认未开启)
这里写图片描述

2. 展开根节点,对”网站”右键,选择”添加网站”
网站名为之前cmd中的%JMX_NAME%,物理路径为之前cmd中的%FILE_PATH%\report。端口号随意,不重复即可。
这里写图片描述

3. 点击浏览,如果能看到之前构建出来的jmeter测试报告,就说明配置成功了。
这里写图片描述

4. 你应该能看到这个网页
这里写图片描述

5. cmd上ipconfig查看一下你的内网ip地址
这里写图片描述

6. 回到Jenkins,在构建区再添加一个cmd模块。
输入以下代码,实现每次测试报告更新后,自动重启IIS应用池。
这里写图片描述

:: 重启Web应用池
c:\windows\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:Demo
c:\windows\system32\inetsrv\AppCmd.exe start apppool /apppool.name:Demo

三、 Jenkins设置邮件通知

  • 在Jenkins上创建的接口测试任务中,配置邮件通知插件

1. 在构建后操作区,添加”Editable Email Notification”
“Project Recipient List”文本框默认是”$DEFAULT_RECIPIENTS”
意思是发送给在Jenkins上进行本次构建的用户,这里换行添加自己的邮箱来区分一下
这里写图片描述

2. 添加邮件主题和邮件内容,这个模块网上很多,可以自己找一下。
注意把报告地址改为你的内网ip+端口号
这里写图片描述

【接口测试报告】$PROJECT_NAME - $BUILD_STATUS - Build # $BUILD_NUMBER!
<!DOCTYPE html>  
<html>  
<head>  
<meta charset="UTF-8">  
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>  
</head>  

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"  
    offset="0">  
    <table width="95%" cellpadding="0" cellspacing="0"  
        style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">  
        <tr>  
            <td><br />  
            <b><font color="#0B610B">报告信息</font></b>  
            <hr size="2" width="100%" align="center" /></td>  
        </tr>  
        <tr>  
            <td>  
                <ul>  
                    <li>项目名称 : ${PROJECT_NAME}</li>  
                    <li>构建编号 : 第${BUILD_NUMBER}次构建</li>
                    <li>触发原因 : ${CAUSE}</li>  
                    <li>报告 Url : <a href="http://192.168.1.82:8001/">http://192.168.1.82:8001/</a></li>  
                </ul>  
            </td>  
        </tr>  
    </table>  
</body>  
</html>  

3. 接着需要设置触发条件,点击”Advanced Settings…”按钮
这里写图片描述

4. 在Triggers文本区域,添加为你预期的触发条件。例:失败才发送
本人这里设定的是Always,任何情况下都发送。
这里写图片描述

四、 Jenkins设置发件人邮箱

  • 如果Jenkins上已经有人设定过管理员邮箱和发件人邮箱,可以跳过此步骤

1. 在Jenkins进入系统管理
这里写图片描述

2. 点击系统设置
这里写图片描述

3. 在Jenkins Location区域,设定”系统管理员邮件地址”
这里写图片描述

4. 在Extended E-mail Notification区域,设定发件人邮箱帐号
· SMTP server: 本人公司邮箱是qq企业邮箱,SMTP服务是”smtp.exmail.qq.com”
· Default user E-mail suffix: 邮箱后缀”@xxxx.com”
· Default Recipients: 默认收件人(这个只需要填名字,会自动拼接邮箱后缀)之后任务构建后的通知邮件会默认发送给此人。
这里写图片描述

5. 在高级选项中,勾选”Use SMTP Authentication”,填入发件人邮箱的帐号密码。之后任务构建后的通知邮件就是通过此帐号发出的。
这里写图片描述

五、 调试

  • 到了此步应该已经算搭建完成了。调试一下,如果有问题再看一下之前的步骤。

1. 开发提测后,执行项目构建。
此任务应该会自动从GIT(或SVN)拉取代码、自动打包、自动发布等等。
构建完成后,我们创建的接口测试任务会被自动加入执行队列。
这里写图片描述

2. 查看终端打印日志”Console Output”
可以看到jmeter脚本成功执行,然后重启web网站,最终发送了邮件
这里写图片描述

3. 我设定的管理员邮箱收到了邮件。
你可以将管理员设定为自己,同时在任务配置list当中,设定你的同事。
就是我设定[email protected]邮箱地址的地方。
这里写图片描述

4. 收到邮件的人,点击链接即可看到本次测试报告了
这里写图片描述

jmeter脚本设计思路

  • Jmeter脚本设计思路,在持续集成环境不需要进行完整的接口测试。

1. 可以直接拿完整的接口测试脚本来使用,在设计Jmeter脚本时使用CSV数据驱动,直接沿用此版本,同时将循环数设定为1,即只跑CSV文件中第一行。
这里写图片描述

2. 查询接口和对系统造成影响的接口应分开,用if来控制是否执行这些接口
这里写图片描述

尾声

  • 学习、记录、总结。

  在开发提测后,每次在测试环境构建,都能快速执行一次接口的主流程测试。如果没有问题,测试人员再进行测试。这在回归测试阶段,可以避免开发在修复bug过程中,影响了其他已测的模块。毕竟每次开发提测,不可能都进行一次完整的系统测试,这样费时费力的事情,还是交给机器吧。

  感谢阅读。

猜你喜欢

转载自blog.csdn.net/tomoya_chen/article/details/78686021