第三章 自动化-接口框架(jmeter+ant+jenkins)

准备工作:

安装JDK,完成环境变量配置(不会自行百度)

下载ANT:https://ant.apache.org/bindownload.cgi


下载tomcat:https://tomcat.apache.org/download-90.cgi


下载jenkins war 包:https://www.jenkins.io/download/ 


下载jmeter:https://jmeter.apache.org/download_jmeter.cgi


ANT安装:

解压ant到C盘:C:\apache-ant-1.9.15

配置Ant环境变量

1.新建以下环境变量:

ANT_HOME:C:\apache-ant-1.9.15,此为你的ANT安装路径;

2.设置完成后,点击"确认"来保存。

在环境变量PATH的最后面添加一下内容:

;%ANT_HOME%\bin 注意前面的分号,如果PATH中最后没有分号";"的话要加上,有的话就可去除。(如果你是win10请去掉“;”)

3.进入cmd命令窗口,在CMD窗口中输入ant -version,敲击回城键,会显示出你安装的ANT版本,如果成功显示,说明你的配置应该是成功了

JMETER安装:

1.解压你的jmeter至自已想放的盘(环境变量可配可不配)

2.将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中

3.修改Jmeter的bin目录下jmeter.properties文件的配置: 

原为:jmeter.save.saveservice.output_format=csv 

修改后为:jmeter.save.saveservice.output_format=xml  (记得把注释去掉)

来个demo调试下:

1.编写个简单的jmeter脚本:(我是把脚本保存在jmeter 目录下自建的demo\jmeter_script文件下)


2.在demo文件下新建build.xml文件,同时在demo下建一个生成报告的文件jmeter_report(这个随意)


build.xml文件内容如下:修改(需要改)的地方

<?xml version="1.0" encoding="GB2312"?>

<project name="JmeterTest" default="all" basedir=".">

    <tstamp>

        <format property="time" pattern="yyyyMMddhhmm" />

    </tstamp>

    <!-- 需要改成自己本地的 Jmeter 目录-->

    <property name="jmeter.home" value="D:\install_soft\apache-jmeter-5.2.1\apache-jmeter-5.2.1" />

    <!-- 需要改jmeter生成jtl格式的结果报告的路径-->

    <property name="jmeter.result.jtl.dir" value="D:\install_soft\apache-jmeter-5.2.1\apache-jmeter-5.2.1\demo\jmeter_report\report\jtl" />

    <!-- 需要改jmeter生成html格式的结果报告的路径-->

    <property name="jmeter.result.html.dir" value="D:\install_soft\apache-jmeter-5.2.1\apache-jmeter-5.2.1\demo\jmeter_report\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="xxxxxx@xxx.com" />

    <!-- 电脑地址 -->

    <property name="ComputerName" value="zbd" />

    <target name="all">

        <antcall target="test" />

        <antcall target="report" />

<!--<antcall target="sendmail" />-->

    </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="D:\install_soft\apache-jmeter-5.2.1\apache-jmeter-5.2.1\demo\jmeter_script" includes="*.jmx" />

<property name="jmeter.save.saveservice.output_format" value="xml"/>

        </jmeter>

    </target>

<path id="xslt.classpath">

<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> 

<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>

</path>


    <target name="report">

  <tstamp>

<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>

</tstamp> 

  <xslt

  classpathref="xslt.classpath"

  force="true"

  in="${jmeter.result.jtlName}"

  out="${jmeter.result.htmlName}"


  style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">

<param name="dateReport" expression="${report.datestamp}"/>

  </xslt> 

        <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->

        <copy todir="${jmeter.result.html.dir}">

            <fileset dir="${jmeter.home}/extras">

                <include name="collapse.png" />

                <include name="expand.png" />

            </fileset>

        </copy>

    </target>

<path id="lib_classpath">

        <fileset dir="${basedir}/">

            <include name="mail*.jar" />

            <include name="activation*.jar" />

            <include name="commons-email*.jar" />

            <include name="ant-contrib*.jar" />

        </fileset>

</path>

    <!-- 发送邮件

<target name="sendmail" >

<mail mailhost="smtp.263.net"

mailport="465"

ssl="true"

user="service@xxx.com"

password="CE5CA15043"

subject="接口测试报告_JMETER"

from="service@xxx.com">

<to address="zhae@xx.com"/>

<message>详细报告请查看附件</message>

  <attachments>

    <fileset dir="${jmeter.result.html.dir}">

      <include name="${ReportName}${time}.html"/>

    </fileset>

  </attachments>

</mail>

</target>

-->

</project>

配置完成后-执行看看:

cmd进入build.xml文件路径下:输入ant


找开如上图!

build.xml中注释部分为自动发送邮件报告的配置如果需要请去掉注释根据自己的邮箱进行代理配置,其次需要把javax.mail-1.4.4 这个jar包放到ant 中的lib目录里,就可以用ant+jmeter做持续集成发送邮件。

javax.mail-1.4.4 下载地址:https://pan.baidu.com/s/1o8C2DHg

jenkins集成定时构建

jenkins安装是把war包放至tomcat下webapps启动根据提示安装jenkins

安装成功后进入:


以上为ant+jenkins集成配置
身份住处为远程触发构建:http://localhost:8080/jenkins/job/你的项目名/build?token=2020

以下为POLLSCM 定时构建官方配置说明:

MINUTE  HOUR  DOM  MONTH  DOW

这个字段就好比cron定时任务语法(只有较小的差别),具体来说,每行由5个被TAB或空格分割的字段组成。

其中每个字段除了可以使用取值范围内的值外,还能使用一些特殊的字符。

*     匹配范围内所有值

M-N   匹配M~N范围内所有值

M-N/X 或者 */X   在指定M~N范围内或整个有效区间内每隔X构建一次 

A,B,...,Z        匹配多个值

为了在系统中生成定时任务,符号H(代表“Hash”,后面用“散列”代替)应该用在可能用到的地方,例如:为十几个日常任务配置0 0 * * *将会在午夜产生较大峰值。相比之下,配置H H * * * 仍将每天一次执行每个任务,不是都在同一时刻,可以更好的使用有限资源。

符号H可用于范围,例如,H H(0-7) * * * 代表凌晨0:00到 上午7:59一段时间。你还可以用H代表有或无范围的区间。

符号H 在一定范围内可被认为是一个随机值,但实际上它是任务名称的一个散列而不是随机函数。

需要注意的是,月份中的某天-DOM字段,类似于*/3 或者 H/3 的短周期由于月份的天数不固定,在大多数月尾总不会工作。例如,*/3 将会在一个月里面的第一天、第四天。。。第31天执行,下个月的那天继续重复执行。散列一般被选择在1-28天内,所以H/3将会在跑到月底的3-6天内导致空白。(长时间循环将会导致长度不一,但是这种影响也是不明显的。)

空行和以#开头的行将会被认为是注释。

另外,@yearly, @annually, @monthly, @weekly, @daily, @midnight, 和 @hourly也支持别名。这些使用散列系统自动匹配,例如:@hourly 和 H * * * * 一样代表一个小时内的任何时刻。@midnight实际上代表凌晨0:00到凌晨2:59之间的一段时间。

例如:

# 每隔15分钟。(或许:07, :22, :37, :52)

H/15 * * * *

# 每前半小时中每隔10分钟。 (3次, 或许:04, :14, :24)

H(0-29)/10 * * * *

# 每个工作日从早上9点45分开始到下午3点45分结束这段时间内每间隔2小时的45分钟那一刻。

45 9-16/2 * * 1-5

#每个工作日从早上9点到下午5点这段时间内每间隔2小时之间的某刻。(或许在上午10:38, 下午12:38, 下午2:38 , 下午4:38)

H H(9-16)/2 * * 1-5

#每月(除了12月)从1号到15号这段时间内某刻。

H H 1,15 1-11 *

GIT or SVN集成设置

至此就配置完成实现了jenkins 通过定时任务或手工方式触发构建任务生成测试报告

以上只是粗略的完成了整个框架的初步搭建。

给看者的一些建意,如果想让自己的报告更加智能需要引入脚本在此构建基础上再加一层构建。

jenkins还有后台一些配置,甚至插件都需要进行安装这里就不细说了。

jmeter的配置相关在工具篇会进行说明

tomacat的使用在第三章tomcat-自动化测试的用途也有说明

不要急慢慢来,知识点会越来越多的~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335