持续集成Jmeter+Jenkins+Ant

在开始这篇文章之前,我要先为大家解答2个疑惑:

第一点,我们为什么要在项目中进行接口自动化测试?好处是什么?

相对于UI层面,接口的测试的收益是巨大的,能在最短的时间发现重要的问题。接口在迭代研发过程中,和UI相比变化非常少,自动化维护成本低,能在多个版本中复用。

第二点,我们为什么要选择Jmeter+Ant+Jenkins这套框架?好处是什么?这套框架可以实现什么?

选择Jmeter +Ant+Jenkins这套框架的原因是:

①学习成本较低,普通测试上手快,适合小型测试团队

②脚本可维护性强

接下来言归正传,如何用Jmeter + Ant + Jenkins 实现持续集成?

1、Jmeter 安装

这里就不多说了,安装详情请参考我之前的文章。

2、Ant 安装

①下载地址:https://ant.apache.org/bindownload.cgi

②解压到指定目录下即可

③配置环境变量

ANT_HOME

D:\SProgram\Ant

Path

%ANT_HOME%\bin;

④添加jar包

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

⑤修改配置文件

jmeter默认保存的是.csv格式的文件,所以我们先要设置一下bin/jmeter.properties文件内容,保存jmeter.save.saveservice.output_format=xml

⑥设置Jmeter工作空间

目录结构如下

结合下面build.xml文件,其实script 是存放将要执行的jmeter脚本文件的,即.jmx 文件的ResultLog 是存放测试报告的。

⑦修改build.xml 文件

将如下代码复制到新建build.xml文件保存即可

<?xml version="1.0" encoding="utf-8"?><project name="JmeterTest" default="all" basedir=".">

<tstamp>

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

</tstamp>

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

<property name="jmeter.home" value="D:\SProgram\jmeter" />

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

<property name="jmeter.result.jtl.dir" value="D:\JmeterSpace\ResultLog\jtl" />

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

<property name="jmeter.result.html.dir" value="D:\JmeterSpace\ResultLog\html" />

<!-- 生成的报告的前缀 -->

<property name="ReportName" value="TestReport" />

<!-- 设置生成的.jtl文件名称,名称包含时间,防止覆盖 -->

<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />

<!-- 设置生成的.html文件名称,不包含时间,只保留最新报告,方便邮件获取唯一的报告 -->

<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" />

<!-- 接收测试报告的邮箱 -->

<!-- 该功能暂时没有成功应用 -->

<property name="mail_to" value="Your_mail" />

<!-- 电脑地址 -->

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

<target name="all">

<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:\JmeterSpace\Script" includes="*.jmx" />

</jmeter>

</target>

<target name="report">

<xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_90Line.xsl" />

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

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

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

<include name="collapse.png" />

<include name="expand.png" />

</fileset>

</copy>

</target>

<!-- 发送邮件 -->

<!-- 发送邮件功能暂未成功使用 -->

<target name="sendEmail">

<mail from="Your_mail@163.com" tolist="Your_mail@163.com" mailhost="smtp.163.com" mailport="25" user="Your_mail@163.com" password="Your_password" subject="${ReportName}${time}">

<message>接口测试报告</message>

<attachments>

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

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

</attachments>

</mail>

</target> </project>

其实至此,打开命令行,cd 切换到build.xml文件路径下,执行ant命令,即可得到如下图

以及得到如下测试报告

但是此时的测试报告还不完善,需要如下修改

⑧修改Jmeter 测试报告模板

文件位置在 ${jmeter.home}/extras/目录下

查找 expand.png,以及collapse.png 修改路径如下。这里根据自己实际情况修改。问题在于,如果测试报告不是本地打开,会出现图标不显示。

注意:jmeter-results-detail-report_90Line.xsl 文件,代码行比较多,就不放在这里了,自己找资料下载后放到指定目录下,即可直接使用无需修改!

⑨解决报告显示NaN的问题 

解决方案,要下载一个xalan.jar,serializer.jar包,将这两个jar包入ant的lib包中,输入ant查看运行结果,使用浏览器查看,OK,显示了!

3、Jenkins 安装

①下载地址:https://jenkins.io/download/

②安装

点击安装,选择安装路径,一路下一步即可。

安装成功后会自动打开网页,需要输入管理员密码:密码参见如下图文件

③新建任务

④配置参数

高级中设置工作空间,这里是测试报告的地址,设置后,发送测试报告时,不需要再写绝对路径了,直接写报告名称即可。


旧的构建保存了你在一次构建中的所有临时文件,如果构建没有保留的必要,就勾选丢弃旧的构建,同时设置保持构建天使和保持构建的最大个数两个参数。
注意:三个设置必须同时设置,否则无效
设置定时运行间隔

这里,设置间隔时间为15分钟运行一次

日程表介绍

【 * * * * * 】 这五个 “*” 分别的定义为:分 时 天 月 星期

Minutes within the hour (0–59)

HOUR Thehour of the day (0–23)

DOM Theday of the month (1–31)

MONTH Themonth (1–12)

DOW Theday of the week (0–7) where 0 and 7 are Sunday.

*表示全部

即 下图表示 每天23点某时构建一次。

如果天写了值表示某月的某天构建一次,同理年和星期也是一样。

⑥设置构建

添加 invoke ant,完成后点击保存

构建设置build file, build 主要是为了生成测试报告。

⑦设置邮件发送

这里使用一个sendmail.jar文件

使用WinRAR打开该文件,修改如下文件


根据实际需要 修改该配置文件

修改完自己的配置文件后,可以将自己的配置文件放到jar包中,通过RAR打开jar然后复制粘贴自己的配置文件到 jar中,然后将sendmail.jar存放到指定路径。

设置邮件发送命令,如图,sendmail.jar放到了lib下。其实放哪里都行,这里用的时候全路径引用即可!


命令:
java -jar D:\SProgram\tools\sendmail.jar -s "XX测试服接口测试报告,请查收。" -t yangyaojun@tenez.cn -b "test接口测试报告,请查看附件。" -a "TestReport.html"

-a "测试报告路径+测试报告名称"

对于要设置多个收件人时,收件人邮箱之间用英文逗号隔开即可

最后保存配置即可。构建任务,即可自动执行测试任务,并发送邮件到指定邮箱!

总结,这套框架可以实现:

1、断言验证(Jmeter可以链接数据库,API返回值可与数据库中的值进行对比断言操作)

2、Jenkins定时任务调度

3、测试数据维护性强

4、每轮执行的测试报告在Jenkins可视化展示

5、预警机制,当Jenkins构建失败时可时时邮件提醒项目成员

接口自动化测试就分享到这里了,如果文章中有些文件找不到下载地址,可以直接给我留言哦~~

 总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

​​

​​

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/308785.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】文件管理页面制作

<template><div><div style"margin: 10px 0"><el-input style"width: 200px" placeholder"请输入名称" suffix-icon"el-icon-search" v-model"name"></el-input><el-button class"ml…

VBA_NZ系列工具NZ11:VBA光标跟随策略

我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到数据库&#xff0c;到字典&#xff0c;到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑&#xff0c;这么多知识点该如何组织…

python_数据可视化_pandas_导入CSV数据

目录 1.导入库 2.导入CSV文件 3.指定分隔符 4.指定读取行数 4.指定读取列数 5.读取文件或文件的路径中有中文 1.导入库 import pandas as pd 2.导入CSV文件 导入时要指定编码格式 data pd.read_csv(D:/desktop/TestCSV.csv,encodinggbk)print(data) 3.指定分隔符 默认…

Mybatis——多表查询

目录 一、简介 二、业务环境的准备 2.1、准备工作&#xff1a; 2.2、SQL 三、一对一和一对多 Sql语句&#xff1a; POJO OrderMapper OrderMapper.xml Test测试类 运行结果 一、简介 MyBatis 是一个优秀的持久层框架&#xff0c;它提供了强大的支持来执行数据库操作&am…

概述:利用大模型 (LLMs) 解决信息抽取任务

论文标题&#xff1a;Large Language Models for Generative Information Extraction: A Survey 论文链接&#xff1a;https://arxiv.org/pdf/2312.17617.pdf 论文主要探讨了大型语言模型&#xff08;LLMs&#xff09;在生成式信息抽取&#xff08;IE&#xff09;任务中的应用…

Scala入门到放弃—04—集合

文章目录 集合数组ListSetMapTuple其他 集合 数组 可变数组 package org.example object ArrayApp extends App{//继承App后直接直接调用函数&#xff0c;不需要main//println("hello")val a new Array[String](5)a(0)"hello"println(a(0))val b Array…

Linux C/C++ 显示NIC流量统计信息

NIC流量统计信息是由操作系统维护的。当数据包通过NIC传输时&#xff0c;操作系统会更新相关的计数器。这些计数器记录了数据包的发送和接收数量、字节数等。通过读取这些计数器&#xff0c;我们可以获得关于网络流量的信息。 为什么需要这些信息? 可以使用这些信息来监控网络…

怎么投稿各大媒体网站?

怎么投稿各大媒体网站&#xff1f;这是很多写作者及自媒体从业者经常面临的问题。在信息爆炸的时代&#xff0c;如何将自己的文章推送到广大读者面前&#xff0c;成为了一个不可避免的挑战。本文将为大家介绍一种简单有效的投稿方法——媒介库发稿平台发稿&#xff0c;帮助大家…

不知道题目是啥

本题是学校的集训里的题&#xff0c;所有不知道题目名字是啥&#xff0c;直接看题目就好 解题思路&#xff1a;因为字符串只含有小写字母&#xff0c;所以可以创建两个数组分别来存s和t的每个字母出现次数&#xff0c;然后遍历数组&#xff0c;如果s字符串中的某个字母比t的小&…

Python GIL 一文全知道!

GIL 作为 Python 开发者心中永远的痛&#xff0c;在最近即将到来的更新中&#xff0c;终于要彻底解决了&#xff0c;整个 Python 社群都沸腾了 什么是GIL&#xff1f; GIL是英文学名global interpreter lock的缩写&#xff0c;中文翻译成全局解释器锁。GIL需要解决的是线程竞…

云卷云舒:kubernetes简介

Kubernetes是由google公司在2014年发布的一款开源的容器编排引擎&#xff0c;用于容器化应用程序的自动化部署、扩展与管理。它能够编排多种容器任务&#xff0c;涵盖虚拟机集群管理、负载均衡以及网络流量分配等等。2017年&#xff0c;aws、微软云、阿里云等等著名的云计算公司…

文献阅读1

A Hierarchical Representation Network for Accurate and Detailed Face Reconstruction from In-The-Wild Images 会议/期刊&#xff1a;CVPR 2023&#xff1b;阿里达摩院&#xff1b;Biwen Lei 概述&#xff1a;这是一篇单张图片三维人脸重建的论文&#xff0c;这篇论文的…

26、web攻防——通用漏洞SQL注入SqlmapOracleMongodbDB2

文章目录 OracleMongoDBsqlmap SQL注入课程体系&#xff1b; 数据库注入&#xff1a;access、mysql、mssql、oracle、mongodb、postgresql等数据类型注入&#xff1a;数字型、字符型、搜索型、加密型&#xff08;base63 json&#xff09;等提交方式注入&#xff1a;get、post、…

ChatGPT提示词大赏:GPT Prompts Hub 2024年最新ChatGPT提示词项目

&#x1f31f; GPT Prompts Hub &#x1f31f; English | 简体中文 Security Prompts | GPTS Prompts 欢迎来到 “GPT Prompts Hub” 存储库&#xff01;&#x1f31f; 探索并分享高质量的 ChatGPT 提示词。培养创新性内容&#xff0c;提升对话体验&#xff0c;激发创造力。…

创建型模式 | 建造者模式

一、建造者模式 1、原理 建造者模式又叫生成器模式&#xff0c;是一种对象的构建模式。它可以将复杂对象的建造过程抽象出来&#xff0c;使这个抽象过程的不同实现方法可以构造出不同表现&#xff08;属性&#xff09;的对象。创建者模式是一步一步创建一个复杂的对象&#xf…

在App Store Connect上编辑多个用户的访问权限

作为一名编程新手&#xff0c;在App Store Connect中管理用户权限可能初听起来有些复杂&#xff0c;但实际上它是一个相对直接的过程。这里是一个步骤清晰的指南来帮助您在App Store Connect上编辑多个用户的访问权限。 App Store Connect 简介 在开始之前&#xff0c;让我们先…

Linux权限2

相关命令 chown [用户名] [文件]​ 更改文件拥有者&#xff08;加sudo强制更改&#xff09; chown [拥有者]:[所属组] [文件] 更改文件拥有者和所属组&#xff08;root权限下&#xff09; chgrp [用户名] [文件] 更改文件所属组 文件类型 输入ls或ll显示的文件&#xff…

网络协议攻击与模拟_02ARP协议

一、arp协议简介 一个工作在二层的三层协议&#xff0c;事一个2.5层协议 ARP协议地址解析协议&#xff0c;将一个已知的Ip地址解析为MAC地址&#xff0c;从而进行二层数据交互 二、工作流程 1、两个阶段 ARP请求ARP响应 两台主机IP地址主机A和主机B&#xff0c;IP地址和MAC…

Ubuntu 实时查看显存调用命令 free 及命令详解与原理说明(全)

Ubuntu 实时查看显存调用命令 free 及详解 文章目录 Ubuntu 实时查看显存调用命令 free 及详解1 free 作用1.1 语法&#xff1a;1.2 单独显示例子1.3 组合显示例子 2 输出介绍3 原理解释3.1 buff / cache&#xff08;即 buffer / cache&#xff09;3.1.1 buffer 缓冲区3.1.2 ca…

Java生成包含ehcarts报表的PDF文件,亲测有效!!!

1.引入maven依赖 <dependency><groupId>org.jfree</groupId><artifactId>jfreechart</artifactId><version>1.5.3</version></dependency><dependency><groupId>com.itextpdf</groupId><artifactId>i…