不需要写代码的自动化测试框架(一)

之前写过一篇关于接口自动化框架设计原理和设计流程的文章,该文章中自动化的实现主要是基于代码的方式来实现的,对于编程能力稍微弱一点的童靴来说,可能上手稍微有一点难度,那么,今天这篇关于自动化框架的文章,不需要任何的代码编写能力也可以帮你完成项目的接口自动化测试工作(当然,这样说,不是很准确,用到代码的地方很少,用到的时候,我们再来说吧)。

这次讲到的自动化测试框架,主要会用到以下3款工具:Jenkins、Jmeter、Ant,首先说下这几款工具各自起什么作用
Jenkins:可对项目设置构建策略,如触发构建、定时构建等,项目构建完成后,可进行构建报告的查看、邮件发送等一系列操作,就是我们常说的持续集成,也叫CI
Jmeter:主要用来编写接口自动化用例
Ant:批量跑指定目录下的Jmeter脚本

了解了这几款工具的作用后,我们开始从头来搭建这套自动化框架,在搭建之前,我们的电脑必须先安装java,因为Jmeter这款工具,是有在java环境下才能运行,Java的安装,我这里就不再赘述了,网上资料也非常的多,笔者安装的是java version "1.8.0_151"版本的

一、Jmeter安装以及环境变量配置
1、下载地址https://jmeter.apache.org/download_jmeter.cgi,按照下图中操作即可

image.png

2、Jmeter安装:安装过程非常简单,将步骤1中下载的压缩包直接解压到指定的目录即可
3、环境变量配置:安装完后,我们需要把Jmeter配置到环变量中,我的jmeter是安装在"D"盘的,那么需要将jmeter的bin目录追加到path中,这样在DOS命令中输入jmeter,就可以直接打开Jmeter,如下所示
image.png

这样,Jmeter就安装好了,接下来我们继续讲解Ant的安装
二、Ant安装以及环境变量配置
Ant的安装和Jmeter安装基本类似
1、下载地址http://ant.apache.org/,按照下图中操作即可
image.png

2、Ant安装:将步骤1中下载的压缩包直接解压到指定的目录即可
3、环境变量配置:这里和Jmeter稍许不同,首先我们要新建一个ANT_HOME,然后再将bin目录追加到path中,以我的安装地址为例,我本机ant是安装在"D"盘的,那么在环境变量中先配置ANT-HOME,如下所示
image.png

完成后,同样将ant追加到 path变量中
image.png

4、检查Ant是否安装成功:进入DOS命令,在命令行中输入ant,如果提示:Buildfile: build.xml does not exist!,则说明安装成功
image.png

-------以下是重点操作步骤,敲重点、敲重点、敲重点--------

1、复制Jmeter安装路径中extras目录下的"ant-jmeter-1.1.1.jar"包到ant安装路径下的lib目录下,如图所示

image.png

如果不复制这个包到ant下,那么就无法成功触发Jmeter脚本,会报下面的错
image.png

2、修改Jmeter默认的文件保存格式:进入Jmeter的安装路径,找到bin目录下的"jmeter.properties"文件,打开该文件,搜索这行代码(jmeter.save.saveservice.output_format=csv)并修改为(jmeter.save.saveservice.output_format=XML),并去掉前面的"#"符号,如下图所示
image.png

3、在Jmeter的安装路径下创建以下3个目录build、report_project以及script_project,分别用来存放构建文件、测试报告和自动化测试脚本,目录的层级与bin保持一致,如下所示
image.png

在build目录下继续创建一个build.xml文件,该文件的内容可以复制以下代码并修改代码中对应本机的相对路径

<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
      <tstamp>
           <format property="time" pattern="_yyyy_MMdd_HHmmss" />
    </tstamp>
    <!-- 需要改成自己本地的 Jmeter 目录-->  
    <property name="jmeter.home" value="D:\apache-jmeter-5.1.1" />
    <property name="report.title" value="接口测试"/>
    <!-- jmeter生成jtl格式的结果报告的路径--> 
    <property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-5.1.1\report_project" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="D:\apache-jmeter-5.1.1\report_project" />
    <property name="detail" value="_detail" />
    <!-- 生成的报告的前缀-->  
    <property name="ReportName" value="SmokeReport" />
    <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="detail" value="_detail" />
    <property name="jmeter.result.jtlNamedetail" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
    <property name="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}${time}${detail}.html" />

    <target name="run">
        <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="D:\apache-jmeter-5.1.1\script_project" 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>
       <xslt 
              classpathref="xslt.classpath"
              force="true"
              in="${jmeter.result.jtlNamedetail}"
              out="${jmeter.result.htmlNamedetail}"
              style="${jmeter.home}/extras/jmeter-results-shanhe-me.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>

    </project>

build.xml文件创建好了,主要注意修改xml文件中的以下参数值
(1)、本地Jmeter的目录,绝对路径
(2)、jtl格式的结果报告路径
(3)、html格式的结果报告路径
(4)、要运行的jmx文件路径
(5)、使用的报告样式文件,这个我们后面会详解,这里先设置好
如下图所示

image.png

OK,文章写到这里,我们这款接口自动化测试框架就已经完成80%了,已经可以实现ant批量执行Jmeter脚本以及测试报告的生成,现在我们可以运行ant命令来看下执行的效果
1、首先打开jmeter,随意编写几个脚本,脚本名称可以命名为test,将脚本存放在之前新建的script_project目录下


image.png

2、进入DOS,切换到Jmeter下的build目录,运行Ant命令:ant -f build_smoke_report.xml,最后显示BUILD SUCCESSFUL则表明脚本执行成功,如下所示


image.png

3、进入Jmeter下的report_project目录,此时就可以看见执行的报告结果,包含jtl和html两种格式
image.png

这时候,我们已经可以成功执行Jmeter脚本并能生成两种类型的测试报告,现在还差最后一步,就是怎么和Jenkins进行结合来执行我们的策略构建了
三、Jenkins的安装以及项目构建配置
1、Jenkins下载:https://www.jenkins.io/(这个地方要注意一下:最好下载最新版的Jenkins,因为笔者在这个地方踩了一个坑,之前太老的版本,插件更新都有问题,ant都没法配置,很浪费了一点时间)
2、Jenkins安装:将下载好的Jenkins包放在本地的任何一个目录(我是在本地D盘建了一个Jenkins目录),然后进入DOS,切换到Jenkins存包的目录,执行以下命令启动Jenkins:java -jar jenkins.war,当出现Jenkins is fully up and running提示时,说明Jenkins启动成功
3、登录Jenkins:登录http://localhost:8080/,就可以进入到Jenins主界面(第一次安装完Jenkins,会让您设置登录账号和密码,这些操作笔者就不详细赘述了)
4、Jenkins配置
(1)、插件配置:进入Jenkins首页面板,依次点击Manage Jenkins------->Manage Plugins--------->Avaiable,在搜索框中输入Ant Plugins、HTML Publisher plugin,查找出来后分别安装这两个插件,如下图步骤所示

image.png

image.png

image.png

image.png

插件安装完成后,建议重启Jenkins,让安装的插件生效

(2)、全局工具的配置:进入Jenkins首页面板,依次点击Manage Jenkins------->Global Tool Configuration,找到Ant配置的那一行,如下图所示进行配置

image.png

(3)、创建自动化项目:重新回到Jenkins首页面板,点击New Item,项目风格选择"自由风格(freestyle project)" ,如下所示

image.png

下面继续依次设置构建策略和构建步骤的操作
构建策略的配置如下所示,首先选择"Build periodically",我这边设置的值表示的意思是"周一至周五,每天的10:30进行定时构建",具体怎么设置,大家去看下Jenkins的相关教程,在此就不做讲解了
image.png

构建步骤的配置
A、在“build”中,点击"add build step",选择"Invoke Ant"

image.png

B、Ant Version选择"Default",然后点击"Advance"进行高级设置
image.png

C、高级设置中填写构建文件地址
image.png

好了,到此,我们整个接口自动化框架就全部搭建完成了,我们来试一下,看是否可以构建成功并生成对应的测试报告
1、回到Jenkins首页面板,选择刚才创建的自由风格项目,点击构建


image.png

2、查看对应项目的构建日志


image.png

3、构建日志中出现build success,说明我们的构建是成功的
image.png

4、再回到我们Jenkins日志存放的路径看下是否成功的生成了测试报告
image.png

如果你也执行到了这一步,恭喜你,整个接口自动化框架搭建完成,你可以开展你的自动化测试工作了,后面的内容,我们将继续对这款框架进行优化,优化的东西包含以下内容:
1、如何执行多个目录下的测试脚本
2、如何生成多种类型(概要和详细)的测试报告
3、测试报告如何与Jenkins进行集成
4、测试报告如何进行邮件发送
欢迎大家持续关注!!!

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

推荐阅读更多精彩内容