接口自动化测试——Jmeter+ant+jenkins

注意:非原创!!! 东拼西凑的总结的 用到的内容里都有链接

一、工具

  1. 脚本录制:badboy、jmeter、fiddler
  2. 编译:ant
  3. 持续集成平台:jenkins

这三者结合起来可以搭建一套Web HTTP接口测试的持续构建环境,实现接口自动化测试。

二、什么是接口测试

接口测试是测试系统组件间接口的一种测试。主要用于外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的切换、传递和控制管理的过程,以及系统间的相互逻辑依赖关系等。

接口测试适用于为其它系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供提供的接口,验证其正确性和稳定性。
接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。

接口测试实施在多系统多平台的构架下,有着极高效的成本收益比,接口测试天生为高复杂性的平台带来高效的缺陷检测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显。

基于接口测试的重要性,以及他比较容易自动化的特性,通过持续集成的接口监控能够及时的发现项目中存在的问题,这对持续运营的项目来说,十分重要。


20190320113051464.png

20190320113103980.png

三、测试流程

1、测试接口文档(需求文档)
2、根据接口文档编写测试用例(用例编写可以完全按照功能用例来编写,例如等价类划分、边界值等方法)
3、执行测试,查看不同的参数请求,接口返回的数据是否达到预期
4、部署到持续集成的环境中
5、设定脚本运行频率、告警方式等基本参数,进行接口的日常监控
6、每日进行接口脚本的运行更新、接口异常的处理

四、环境部署

https://blog.csdn.net/caoyingqun/article/details/88684714?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.control&dist_request_id=1328690.8104.16165503724593083&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.control
(该链接就看到ant安装就好,下边别看了,不太详细)

1、Jmeter

Jmeter可以做接口测试,也可以做压力测试,是个开源软件。纯Java语言开发。
https://blog.csdn.net/wust_lh/article/details/86095924
注意:配置Jmeter环境变量时,版本为5+的lib包下没有logkit-2.0.jar,也不用配置在环境变量中。

2、Ant

Ant是基于Java的构建工具,可以跨平台。
ant下载安装看最上边的链接就好

3、Jenkins

Jenkins是持续集成工具。
下载安装(到最后一步,打开initialAdminPassword文件时,如果打不开的话,就把该文件拖到电脑桌面,就能打开
https://blog.csdn.net/qq_39720249/article/details/81264026
安装以及离线状态的解决办法
https://blog.csdn.net/qq_38966361/article/details/90734163

五、jmeter编写脚本+ant执行脚本&生成报告(重要!!!)

按照下方链接一步一步来肯定不会出错:
https://blog.csdn.net/weixin_41948075/article/details/97894080?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_baidulandingword-0&spm=1001.2101.3001.4242

  1. 将jmeter 所在 extras目录下 的 ant-jmeter-1.1.1.jar 文件 copy 到 ant 所在lib 目录下。这样Ant运行时才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本。

  2. 修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml,并解开注释,别的啥也别动。
    作用是使Jmeter报告输出文件格式为xml

  3. 在jmeter安装目录下新建文件夹JmeterTest,在JmeterTest下新建文件夹resultLog,resultLog下再新建jtl和html文件夹,html和jtl文件夹的作用:
    html文件夹:用于保存html的结果报告
    jtl文件夹:用于保存jmeter的测试脚本


    image.png

    image.png
  4. build.xml:Ant根据该文件运行jmeter脚本(关键文档,需要配置正确)
    它的作用就是把生成的.jtl数据文件转换为.html格式的报告
    具体属性的含义:
    in:生成的.jtl文件的路径
    out:生成的.html文件的路径
    style:从.jtl转换成.html所使用的样式,这些文件也在extras目录下,这个是最重要的部分,如果我们想定制报告可以自行定义这个文件或者从网上找一些合适的文件。
    build.xml通用模版如下:

<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyyMMddHHmm" />
    </tstamp>
    <!-- 需要改成自己本地的Jmeter目录-->
    <property name="jmeter.home" value="/Applications/apache-jmeter-5.1.1" />
    <!-- jmeter生成jtl格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" value="/Applications/apache-jmeter-5.1.1/demo/report/jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="/Applications/apache-jmeter-5.1.1/demo/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" />
    <!-- 输出生成的报告名称和存放路径-->
    <echo message="${jmeter.result.jtlName}"/>
    <echo message="${jmeter.result.htmlName}"/>
    <echo message="${jmeter.result.html.dir}"/>

    <target name="run">
        <antcall target="test"/>
        <antcall target="report"/>
    </target>
    <!-- 指定ant-jmeter-1.1.1.jar 的位置 -->
    <path id="jmeter.classpath">
        <fileset dir="${jmeter.home}/extras">
            <include name="ant-jmeter-1.1.1.jar"/>
        </fileset>

    </path>
    <!--加载jar包,解决显示时间问题-->  
    <path id="xslt.classpath">  
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>  
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>  
    </path> 
    
    <target name="test">
        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
            <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本,比如test*。jmx表示以test开头的所有.jmx文件-->
            <testplans dir="/Applications/apache-jmeter-5.1.1/demo" includes="*.jmx" />
            <!-- 声明ant执行jmeter时,传入jmeter的属性值,可以自定义必须是xml格式 -->
            <property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>
    
    <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">
              <!--jmeter-results-detail-report_21.xsl这里的文件名可以换成你想要的报告效果-->
              <!--显示dateReport的时间--> 
              <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>

需要改的地方改成自己的路径啥的,详情看上方链接,原作者标注的地方。

  1. 准备要要运行的项目,放在demo目录下(注意:网上好多人没说这一步,所以我一直build失败)
    这一步就是找一个 .jmx格式的文件放在script文件夹中。我是随便找了一个,如下:


    image.png
  2. 运行
    切换到运行的目录,在运行ant或者ant run命令,然后就回运行成功。

这样是你还不运行成功,你就要找找自己的原因了。这是我在网上找了那么就的资料,以上链接都是简单易懂且能安装成功的。该说的都说了,再有问题就是笨蛋!!

六、Jmeter基本使用

https://blog.csdn.net/yutian8233/article/details/102851746

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

推荐阅读更多精彩内容