zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

2023-09-14 09:10:59 时间


这次讲到的自动化测试框架,主要会用到以下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,按照下图中操作即可

在这里插入图片描述
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,说明我们的构建是成功的
在这里插入图片描述

4、再回到我们Jenkins日志存放的路径看下是否成功的生成了测试报告
在这里插入图片描述
如果你也执行到了这一步,恭喜你,整个接口自动化框架搭建完成,你可以开展你的自动化测试工作了,后面的内容,我们将继续对这款框架进行优化,优化的东西包含以下内容:

1、如何执行多个目录下的测试脚本

2、如何生成多种类型(概要和详细)的测试报告

3、测试报告如何与Jenkins进行集成

4、测试报告如何进行邮件发送

欢迎大家持续关注!!!

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你

关注我的微信公众号【伤心的辣条】免费获取~

送上一句话:

世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。

推荐好文:

包装成1年工作经验的测试工程师,我给他的面试前的建议如下

自动化测试到底要学什么?

为何跳槽不考虑腾讯?聊聊我和鹅厂的一点往事

自动化测试和手动测试哪个更高级?

新手必看:怎么写一个合格的测试用例?

python登录接口测试问题记录与解决 ( 干 货 )