ant jmeter jenkins 实现自动化测试
编者按:
- 本文核心的关键是ant去调用build.xml 执行自动化测试任务。
- bulid.xml 文件的内容按照注释修改为你自己服务器相关信息。
- 配置完成后一定要手动在服务器上执行一次,确保你配置的没有问题,在去配置jenkins服务。
- 我曾经就因为没有手动执行一下,导致卡了很长时间。
ant 安装及配置
ant有两个分支版本:1.9x支持的是java5,1.10.x支持的是java8的版本。
这里我们选择apache-ant-1.10.1-bin.tar.gz的版本。
cd /usr/local/src
wget http://mirrors.tuna.tsinghua.edu.cn/apache//ant/binaries/apache-ant-1.10.1-bin.tar.gz
tar -zxf apache-ant-1.10.1-bin.tar.gz
mv apache-ant-1.10.1 /data/app/
ln -s /data/app/apache-ant-1.10.1 /data/app/ant
### 增加环境变量
cat >>/etc/bashrc<<EOF
export ANT_HOME=/data/app/ant
export PATH=$ANT_HOME/bin/:$PATH
EOF
source /etc/bashrc
检查
ant -v
Apache Ant(TM) version 1.10.1 compiled on February 2 2017
Trying the default build file: build.xml
Buildfile: build.xml does not exist!
Build failed
安装jmeter
cd /usr/local/src
wget http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-3.3.tgz
tar -zxf apache-jmeter-3.3.tgz
mv apache-jmeter-3.3 /data/app/
ln -s /data/app/apache-jmeter-3.3 /data/app/jmeter
### 配置环境变量
cat >> /etc/bashrc<<EOF
export JMETER_HOME=/data/app/jmeter
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin/:$PATH
EOF
开始使用前的优化(必须配置)
- Ant+Jmeter生成的html报告,Min Time 和 Max Time 出现 NaN。
cp /data/app/jmeter/lib/serializer-2.7.2.jar /data/app/ant/lib/
cp /data/app/jmeter/lib/xalan-2.7.2.jar /data/app/ant/lib/
- 运行过程中会报缺少ant-jmater的错,需要提前拷贝包过去。报错如下:
taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found
using the classloader AntClassLoader[]
解决办法:
cp /data/app/jmeter/extras/ant-jmeter-1.1.1.jar /data/app/ant/lib/
- jmeter 使用jenkins运行时缺少一个
jmeter-log.log的日志文件,日志文件配置在/data/app/jmeter/bin/log4j2.xml。
解决办法:
touch /data/app/jmeter/bin/jmeter.log
- 因为要实现jenkins调用ant来自动化生成测试报告,所以ant目录及jmeter目录需要赋值为jenkins属组。
chown -R jenkins.jenkins /data/app/ant/*
chown -R jenkins.jenkins /data/app/jmeter/*
编写build.xml文件
cd /data/app/jmeter/build/
vim build.xml
<?xml version="1.0" encoding="utf-8"?>
<project name="Ant-Jmeter-Test" default="all" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="/data/app/jmeter" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="/data/app/jmeter/report/jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="/data/app/jmeter/report/html" />
<!-- 生成的报告的前缀 -->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
<!-- 接收测试报告的邮箱 -->
<property name="mail_to" value="niuhengbo@sina.cn" />
<!-- 电脑地址 -->
<property name="ComputerName" value="test.niu" />
<target name="all">
<antcall target="test" />
<antcall target="report" />
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 -->
<testplans dir="/data/db/jenkins/workspace/jm" includes="*.jmx" />
</jmeter>
</target>
<target name="report">
<!-- <xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" /> -->
<xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl" />
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" />
</fileset>
</copy>
</target>
<!-- 发送邮件 -->
</project>
- 上面的build文件,根据自己服务的安装目录修改相应的配置即可(需要修改的地方)。
jmeter-results-detail-report_21.xsl是默认的报告模板由于信息不全,推荐更换成jmeter.results.shanhe.me.xsl下载地址在文章最后。
jmeter 配置优化
- jmeter配置文件位置:
/data/app/jmeter/bin/jmeter.properties。 jmeter.save.saveservice.output_format=csv: 将csv更改为xml。
在文件的末尾增加如何优化配置
jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
# Report more error info message
jmeter.save.saveservice.assertion_results_failure_message=true
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true
检查配置是否成功
cd /data/app/jmeter/build/
ant
Buildfile: /data/app/apache-jmeter-3.3/build/build.xml
all:
test:
[jmeter] Executing test plan: /data/db/jenkins/workspace/jm/test.jmx ==> /data/app/jmeter/report/jtl/TestReport201801250234.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using /data/db/jenkins/workspace/jm/test.jmx
[jmeter] Starting the test @ Thu Jan 25 14:34:18 CST 2018 (1516862058701)
[jmeter] Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
[jmeter] summary = 4 in 00:00:01 = 6.9/s Avg: 96 Min: 28 Max: 239 Err: 0 (0.00%)
[jmeter] Tidying up ... @ Thu Jan 25 14:34:20 CST 2018 (1516862060127)
[jmeter] ... end of run
report:
[xslt] Processing /data/app/jmeter/report/jtl/TestReport201801250234.jtl to /data/app/jmeter/report/html/TestReport201801250234.html
[xslt] Loading stylesheet /data/app/jmeter/extras/jmeter.results.shanhe.me.xsl
BUILD SUCCESSFUL
Total time: 4 seconds
配置jenkins
jenkins的安装我就不说了,可以参考以前我写的文章。
第一步:配置ant路径位置
位置:全局配置 --> Global Tool Configuration


创建一个自由风格的软件项目

将jmeter的测试文件放置在git仓库中。

增加一个ant构建项目:


执行构建查看输出结果

参考文档
jmeter.results.shanhe.me.xsl-下载地址
接口自动化-步骤、遇到的问题及解决方法
jmeter学习笔记(一)-jmeter html测试报告
报错汇总
taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found
using the classloader AntClassLoader[]
解决办法
cp /data/app/jmeter/extras/ant-jmeter-1.1.1.jar /data/app/ant/lib/
ant jmeter jenkins 实现自动化测试的更多相关文章
- ant +jmeter+jenkins接口自动化测试二
[Jmeter篇]Jmeter+Ant+Jenkins接口自动化测试集成之半路逆转(二) 橙子探索测试发表于橙子探索测试订阅 72 [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试 ...
- ant+jmeter+jenkins接口自动化测试一
[Jmeter篇]jmeter+Ant+Jenkins接口自动化测试集成(一) 橙子探索测试发表于橙子探索测试订阅 90 一.简介 1.什么是ant? ant是构建工具,把代码从某个地方拿来,编译,再 ...
- Ant+jmeter+jenkins搭建测试的持续集成
前提: Ant+jmeter 已经搭建完成并成功运行(参看ant+jmeter自动化性能测试) Jenkins在本地已经安装可运行(参看上一篇) 1.下载Jenkins安装 2.浏览器输入地址http ...
- ant+jmeter+jenkins自动环境搭建
一.安装前准备 1.JDK:jdk-8u131-windows-x64 2.jmeter工具:apache-jmeter-5.1.1 3.ANT工具:apache-ant-1.10.3 4.jenki ...
- Jenkins+ant+jmeter搭建接口自动化测试环境
一.jmeter 1.下载jdk并安装配置 2.下载jmeter,并解包 下载地址:http://jmeter.apache.org/download_jmeter.cgi 二.ant 1.下载解包并 ...
- centos7搭建ANT+jmeter+jenkins接口测试自动化环境
一.环境准备 因为用到了jmeter和apache-tomcat,centos7必须要有java环境,所以配置jdk和apache-tomcat什么的,就不多说了,自行操作 帮你们偷懒: ant下载地 ...
- Mac上部署JDK/Ant/Jmeter/Jenkins
一.安装JDK 1. 下载JDK 2. 下完后直接双击安装,默认安装到/Library/Java/JavaVirtualMachine下 3. 验证是否安装成功 java -version 二.安装J ...
- ant+jmeter+jenkins+git持续集成以及邮件报告展示
前序准备工作: ant--下载地址:http://ant.apache.org/bindownload.cgi jmeter--下载地址:http://jmeter.apache.org/downlo ...
- 持续集成实践---基于ant+jmeter+jenkins接口CI
背景: 大纲: jmeter入门教程 jenkins入门教程 ant介绍 jmeter+ant脚本自动执行实践 接口测试CI实践
随机推荐
- Java的简单书写格式
在一个java源代码中只能出现一个public类,而且必须跟文件名相同 在源代码的全局域类中只有 public 和 default 两种可见度 全局域不能写代码,只能定义类 成员类的构造方法和类的可见 ...
- 用面向对象的编程方式实现飞机大战小游戏,java版
概述 本文将使用java语言以面向对象的编程方式一步一步实现飞机大战这个小游戏 本篇文章仅供参考,如有写的不好的地方或者各位读者哪里没看懂可以在评论区给我留言 或者邮件8274551712@qq.co ...
- JS获取地址栏参数&jquery
第一种:字符串拆分法 window.location.href 或者 location.href 或者 window.location 获得地址栏中的所有内容 decodeURI()可以解码地址栏中的 ...
- jackson @ResponseBody 处理日期类型的字段
前言:以前只知道一种方式(@JsonFormat)来处理日期格式问题,今天才发现还有两种方式,并且可以全局设置格式,这里记录一下. 首先,pom.xml 中需要先引入如下 jackson 的依赖: & ...
- EF 多种查询方式
比较常用的查询方式linq to entity,这里先看一种写法: var query = (from d in testContext.Set<DepartPerson>() //查询和 ...
- Tips——Flatlist的onEndReached多次触发问题解决
一.问题 RN项目里使用Flatlist组件,上拉刷新item过多时,出现跳屏.闪屏.空白屏等问题. 二.原因 先在render函数里log了一下,发现没有re-render,判断不是网络请求或页面内 ...
- 移动端点击输入框,弹出键盘,底部被顶起问题(vue)
这个问题相信做移动端开发的童鞋会有深刻体会,以前用jq开发时就很头疼这个问题,每次底部footer部分需要用position:fixed,如果页面内容不是很长,没有超出屏幕范围,那就还好,没有问题:一 ...
- replace的运用
replace() 方法用于在字符串中用一些字符替换另一些字符, 或替换一个与正则表达式匹配的子串. 语法: stringObject.replace(regexp / substr, replace ...
- Android属性动画:插值器与估值器
声明:本篇文章部分内容来自<Android开发艺术探索>. 我们都知道对于属性动画可以对某个属性做动画,而 插值器(TimeInterpolator)和 估值器(TypeEvaluator ...
- App 图标设计 - 圆角透明效果(0 基础使用 PS)
App 图标设计 - 圆角透明效果(0 基础使用 PS) 方法: 如果你有些基础,就不必看图文教程了: 1.使用圆角矩形工具选中,设置圆角尺寸[例如:1024*1024 px(圆角:160 px)] ...