Jenkins+Jmeter持续集成笔记(五:问题优化)
通过前面的一系列文章,我的API自动化测试平台已经搭建成型,但是要投入具体项目使用时,还有以下几个问题需要优化。
还是接着以上一篇笔记中的“test_token”项目为例:
1、邮件通知问题
(1)问题
这里的主要问题是针对邮件中的附件(即测试报告),在前一篇配置邮件通知的文章,我对于附件的配置是这么说的:

如果你能够多触发几次构建就会发现问题,随着构建次数越来越多,产生的测试报告也越来越多,即.html文件会越来越多,而每次构建的邮件通知都会把所有的.html文件添加到附件,这样用户收到的自动化测试邮件里面,不仅能看到本次构建的测试报告,还可以看到之前所有构建的测试报告,体验非常不好。
(2)解决思路
在每次构建前删除掉上次构建产生的测试报告文件,使得添加附件时,只能在html文件夹中搜索到本次构建的测试报告。
(3)解决方案
方案一:
job->配置->构建->增加构建步骤
在Invoke Ant构建前,我们添加一个构建步骤“Execute shell”

增加了一个新的构建步骤,在构建ant任务之前,先在服务器上执行一段shell,功能是删除测试报告文件夹下所有的测试报告文件即可。shell脚本如下:
rm -f /var/lib/jenkins/workspace/test_token/html/*.html
rm -f /var/lib/jenkins/workspace/test_token/jtl/*.jtl
看一下构建日志发现shell脚本被成功执行:

方案二
job->配置->构建环境->Delete workspace before build starts

构建环境我勾选了"Delete workspace before build starts",在具体解释这一步配置之前,我先说一下workspace在目前这个平台中起到什么作用:
首先,我们在jenkins每创建一个新的job,系统就会在jenkins的安装目录下的workspace文件夹下创建一个以job name命名的文件夹;
接着,由于邮件通知添加附件的问题,我们手动把测试报告的输出位置移动到这个job name命名的文件夹下面,也就是经常提到的html文件夹的位置;
希望下面两张图能够加深对他的理解:

图一:workspace的目录树结构

图二:test_token项目下的工作空间目录
我们可以使用ANT语法指定一种模式来筛选出要被删除的文件:
(1)下拉选择框有两种模式Include和Exclude
Include模式:如果文件匹配语法要求删选条件,则文件会被移除
Exclude模式:如果文件匹配语法要求删选条件,则文件不会被移除
(2)规则只适用于文件,如果你想要适用于文件夹,请勾选Apply pattern also on directories参数
我这里填写的规则意思是,在workspace目录下的本项目中,筛选出所有以.html为后缀的文件并移除他们。
关于这个功能的配置大家还可以参考官方文档的原文https://wiki.jenkins.io/display/JENKINS/Workspace+Cleanup+Plugin
接下来看一下构建日志检查构建环境是否执行:

OK,以上两种方法都可以解决邮件通知附件的问题,大家可根据实际需要进行选择。
2、丢弃旧的构建
每次构建都会保存数据,所以需要定期的清除过期文件,这时就用到了“丢弃旧的构建”这个功能。
保持构建的天数:每个构建能保留多少天
保持构建的最大个数:最多保留多少个构建

好了,优化部分就到此为止。
Jenkins+Jmeter持续集成笔记(五:问题优化)的更多相关文章
- Jenkins+Jmeter持续集成笔记(四:定时任务和邮件通知)
通过前几篇文章,jmeter+ant+jenkins自动化持续构建的测试平台基本成型.既然要自动化平台,最基本的肯定要实现不经过人工干预,平台会在特定的条件下自动运行测试脚本,并在脚本运行结束后,发送 ...
- Jenkins+Jmeter持续集成笔记(二:ANT执行Jmeter脚本)
Jmeter接口测试脚本运行后生成的是jtl(xml)格式的文件,这些文件不具备可读性,所以我们要把他转化为可以阅读的html格式报告. Ant是一个功能强大的打包编译工具.我们使用他的目的是将xml ...
- Jenkins+Jmeter持续集成笔记(三:集成到Jenkins)
上一篇笔记中已经实现了通过ant工具执行Jmeter测试脚本,并输出html格式测试报告到指定目录. 在本章中,将尝试把这个过程丢进jenkins去执行. 1.Jenkins全局工具配置 登录jenk ...
- Jenkins+Jmeter持续集成笔记(一:环境准备)
整体思路: 通过Jmeter图形界面编写api测试脚本 ant 批量执行Jmeter脚本文件 将其集成到jenkins,设置执行频率与发送测试报告 运行环境 系统 配置 IP Centos7.1 1核 ...
- jenkins jmeter持续集成批处理jmx脚本
这篇文章介绍jenkis jmeter的持续集成,利用jenkins定时任务去批处理执行jmeter的jmx脚本文件,并且生成测试报告 1:jmeter的安装这里我就不在赘述了,如有问题可参考我的jm ...
- RF+Jenkins构建持续集成
引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...
- 使用jenkins实现持续集成
一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试.结果记录.测试统计等都是自动完成的,无需人工干预: 它需要有专门的集成服务器来执行集成构建: 它需要有代 ...
- [转]使用jenkins实现持续集成
本文转自:https://www.cnblogs.com/zishengY/p/7170656.html 一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试 ...
- Jenkins的持续集成
持续集成:不需要人工干预,持久化.重复的运行一个任务.将代码自动的更新到最新,然后自动运行. 新建项目之前要再Jenkins的全局工具配置里面把git的路径设置好.[全局工具配置]-->[Git ...
随机推荐
- Python学习笔记十
守护进程 p.daemon=True 必须在p.start()之前设置. 守护进程内不能再开子进程. 在主进程中开启守护进程(就是一个子进程) 什么时候应该把子进程设置为守护进程? 开子进程的目的:就 ...
- Python内置函数之-property
property 是一个内置的装饰器函数,只在面向对象中使用 求一个圆的周长和面积 # 周长和面积都是通过类的方法得到from math import pi class Cricle: def __i ...
- Punycode
Punycode是一个根据RFC 3492标准而制定的编码系统,主要用于把域名从地方语言所采用的Unicode编码转换成为可用于DNS系统的编码 “中文域名”不被标准的解析服务器支持,需转化为Puny ...
- HBase总结 LSM理解
转载的文章,觉得写的比较好 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎 是哈希表的持久化实现,支持增.删.改以及随机读取操作,但不支持顺序扫描,对应的存储 ...
- Python入门5(pandas中merge中的参数how)
import pandas as pd df1 = pd.DataFrame([[1,2,3],[1,10,20],[5,6,7],[3,9,0],[8,0,3]],columns=['x1','x2 ...
- vscode断点调试本地客户端文件
一.安装chrome,安装vscode,打开vscode编辑器,安装插件Debugger for Chrome 二.新建文件 1.目录结构 . ├── index.html ├── index.js ...
- python class属性
代码一: class A(object): pass a = A() a.name = "class_A" print(a.name) #class_A 代码二:class A(o ...
- python与RabbitMQ
RabbitMQ 前言 什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用 ...
- 自定义MVC实现登录案例
MVC框架: MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离 ...
- 面试中遇到的原生js题总结
最近面试,遇到很多js相关的面试题,总结一下. 1.js 去重 1) indexOf Array.prototype.unique = function(){ var result = []; var ...