Jenkins+jmeter+ant自动化设置jira面板统计图每日更新
1. 需求描述
领导提出了一个需求:每天可以看到仪表盘中,关于项目A的每日bug统计情况
2. 思路设计
2.1 初步思路
1)根据创建时间,设置当日进行查询,然后保存为筛选器名称:当日数据统计
2)仪表盘中,添加一个二维数据统计的小程序,然后选择该是筛选器,即可在界面中展示当日数据统计情况
3.遇到问题
1)jira创建时间中,无法自动根据每日数据进行统计,根据实践,只有选择在2020-04-19和2020-04-20之间,才会显示当日数据(4月19日)的数据统计
2)如果每日设置创建时间,然后保存筛选器遇到另两个问题:
a.每日设置十分复杂
b.筛选器名称不能重复
2.2自动化思路
因为我们公司这个项目是产品,项目周期时间长,且是敏捷式开发与测试。根据我的初步思路,如果每天设置,将十分辛苦,我就想,能否实现自动化,这样我就不需要每天设置。
2.2.1自动化初步思路
我思考的两种自动化思路(自己已掌握的自动化):
1、python+selenium自动化测试;
2、jmeter接口测试;
自动化初步思路遇到的问题:
1、对比两种方式,选择一个适合本次需求的
2、每日执行一次jmeter或者pycharm,虽然不用设置,也很麻烦,如果每天自动跑该多好
2.2.2自动化进阶思路(一)
一、对比【python+selenium自动化测试】、【jmeter接口测试】
前置条件:只需要考虑一个用户账号设置,只需要保证每日创建时间不同,筛选器名称不同
(1)思路对比+实现程度对比
1、python+selenium需要获取定位元素,且需要写代码,且由于我换了新电脑,需要重新下载软件(复杂)
2、jmeter接口测试,只需要通过fiddler获得接口,参数,请求方式,直接使用jmeter就可实现(简单)
结论:我选择了一种最易实现的方法(jmeter接口测试)
二、避免每日运行工具思路
Jenkins作为一个持续构建的好工具,用于自动化各种任务,包括构建、测试和部署软件。当然是一个优秀的选择。
于是我百度Jenkins+jemeter集成,得到了一个Jenkins+ant+jemter的好方法
所以思路就是:Jenkins+ant+jemter放在服务器里面,设置每天定时运行,即可实现(linux)
花絮:这样后期就直接干吗?后期没有遇到思路变化么,额,不,我有遇到了个问题,那就直接在4.3中先说明,然后再说我的实现方法吧
2.2.3自动化进阶思路(三)
使用jemeter在进行接口测试的时候,我思路的变化
1、在txt中写了几百条起始时间和结束时间,然后根据jmeter的csvXXX参数化方法进行获取,然后,jmeter设置定时器,每天运行一次(筛选器名称我一样在txt中写4.19当日数据统计、4.20当日数据统计)
缺点:如果直接这样 使用定时器,那就不需要Jenkins,而且意义不大,而且jmeter工具要一直开着,感觉很尴尬
最后,我老哥一下子点醒了我:直接获取当日时间呀,对呀,我傻啦,筛选器名称也可以直接${当日时间}数据统计,那不就也是自动获取呀。啊呀呀
哈哈,然后,我网上百度,jmeter获取当日时间函数和明日时间函数
3. 实战实练
3. 1接口测试
3. 1.1接口测试思路
1、前置条件:已经安装jdk、jmeter、fiddler(抓包)等工具,且会使用基本的jmeter
2、将每个http请求的共同参数放在http信息头管理器中
3、需要获取token值,供后期使用(系统中其他操作)
4、需要cookie管理器,自动获取cookie值
5、需要调用后置处理器程序,目的:自动显示参数值,可以快速知道自己的参数是否正确
3. 1.2 接口测试实战
3. 1.2.1 登录
接口测试实战fiddler获取登录接口,且需要获取该响应结果的token值,供后期使用(系统中其他操作)
步骤一:获取登录接口
步骤二:获取token
步骤三:添加调试器
3. 1.2.2 查询数据+保存数据
步骤一:根据创建时间等查询系统数据
(备注,后期发现,此请求不需要,因为:我在保存筛选器结果的请求中,其实已经默认查询了系统数据的)所以此处可以不讲
步骤二:保存筛选器
抓包显示是post请求,有两个关键参数值:1、筛选器名称2、创建时间设置(起始时间,结束时间)
将起始时间和结束时间,根据函数获得,筛选器名称,【固定字符串+每日时间(起始时间)】
其中:起始时间和结束时间,(用户定义的变量中设置)
当日时间函数:${__time(yyyy-MM-dd,)}
当日时间的后一天函数:${__timeShift(yyyy-MM-dd,,P1D,,)
具体如下
保存筛选器请求实现如下:
备注:
1、内容编码utf-8不能少,否则会报错,
2、需要加一个htpp信息头管理器,放content-type(原因:请求是json),内容可以直接复制fiddler中获的(实战即可知)具体可百度
3. 1.2.3仪表盘中放数据+展示数据
每个筛选器都有个id,所以需要动态获取id。此处的id是根据筛选器获取的,因此在请求:保存筛选器中通过关联(正则表达式提取器)获得id值。
步骤一:获取id值
步骤二:仪表盘中放数据
(我设置了两个展示,一个是二维统计表,一个是明细(见文章最后展示部分,有两个展示数据)
步骤四:展示数据
只需要获取显示数据的请求即可
3. 1Jenkins+ant+jmeter集成
前置条件:防火墙需要关闭:systemctl stop firewalld
说明:我是参照如下链接实战的(感谢):
凌陽:https://www.jianshu.com/p/58f4116078e6(该文章还提供软件包,大家可以查看-比我的更详细)
linux环境中具体实现
3. 1.1软件安装
3. 1.1.1安装jdk
a.通过xftp上传jdk压缩包
(自选安装文件夹/usr/local/software)
b.解压jdk安装包
tar -zxvf jdk-8u162-linux-x64.tar.gz
c.配置jdk环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/software/jdk1.8.0_222-ea-b03
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
d.刷新配置文件source /etc/profile
e.验证jdk
java -version
3. 1.1.2安装jmeter;
a.配置环境变量
tar -zxvf apache-jmeter-5.0.tgz
b.配置环境变量
vim /etc/profile
在末尾添加如下内容
export JMETER_HOME=/usr/src/apache-jmeter-5.0
export CLASSPATH=$JMETER_HOME\lib:$CLASSPATH
export PATH=$PATH:$JMETER_HOME/bin
c.刷新配置文件
source /etc/profile
e.检查是否安装成功
jmeter -v
3. 1.1.3安装ant(步骤与jmeter一模一样)
3. 1.2 Ant配置jmeter
用ant构建命令来调动执行jmeter接口测试,并生成测试报告
3. 1.2 .1 配置库文件
将jmeter目录下的extras目录下的ant-jmeter-1.1.1.jar文件复制到ant目录下的lib文件夹中
3. 1.2.2 下载测试报告模板
将jmeter-results-shanhe-me.xsl上传至jmeter安装目录的extras文件夹下
3. 1.2.3 配置ant编译文件build.xml
将build.xml放至/root/jmeter中
需要修改的地方如下:
3. 1.2.4 配置jmeter. properties
jmeter.properties文件位于jmeter安装的bin目录下
1、jmeter默认保存的是csv格式的文件,需要修改成xml格式
2、针对Response的编码处理,需要修改统一为UTF-8,避免部分Reponse乱码问题
3、修改jtl报告文件需要存储的数据种类
3. 1.2.5 配置邮件
ant发送邮件功能,需要在ant的安装目录/lib目录下,添加jar包 mail.jar、activation.jar和commons-email-1.5.jar
password处填写的是授权码,不是邮箱密码,需要自行开启邮箱的SMTP功能
mail_to这里写要发送方的邮箱地址
授权码具体设置:
进入【QQ邮箱】,点击上面【设置】在【邮件设置】页面,点击【账户】,找到【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】,点击【开启】,然后根据提示,发短信,即可获得授权码
备注:具体可以百度搜索【qq邮箱授权码】
3. 1.3 Jenkins配置
3. 1.3.1 Jenkins全局配置
进入系统设置-- Global Tool Configuration,配置ant主目录
3. 1.3.2 Jenkins项目配置
a.新建一个自由风格的项目:jira-project
b.配置定时构建
参考此处:https://blog.****.net/u013250071/article/details/81000777
* * * * *五个位置,分别代表:分钟,小时,日期,月份,星期
*代表任意
例如:30 1 * * 代表:每天1点30分准时构建
c.配置ant的build文件
4 成果展示
4.1 仪表盘展示
4.2 邮件展示
感谢:
https://www.jianshu.com/p/58f4116078e6(该文中还提供软件包安装下载)
https://blog.****.net/u013250071/article/details/81000777