自动化测试

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

2020-05-12  本文已影响0人  傻瓜式分享

准备工作:

安装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-自动化测试的用途也有说明

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

上一篇下一篇

猜你喜欢

热点阅读