[TOC]
一、什么是接口测试?
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性。接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大。
接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比,接口测试天生为高复杂性的平台带来高效的缺陷监测和质量监督能力。平台越复杂,系统越庞大,接口测试的效果越明显。
基于接口测试的重要性,以及它比较容易自动化的特性,通过持续集成的接口监控能够及时的发现项目中存在的问题,这对持续运营的项目来说,非常重要。
二、接口测试的流程
1、 项目启动后,测试人员要尽早找到开发人员拿到接口测试文档
2、 获取接口测试文档后,就可以进行接口用例的编写和调试
3、 接口用例编写调试完成后,部署到持续集成的测试环境中,
4、 设定脚本运行频率,告警方式等基本参数,进行接口的日常监控
5、 每日进行接口脚本的维护更新,接口异常的处理
三、jenkins + ant + jmeter 集成测试报告发送邮件
环境准备
- 安装Jdk
JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
- 鼠标右击
计算机(此电脑)
->属性
->高级系统设置
->高级
->环境变量
- 在系统变量中,点击
新建
,新建JAVA_HOME
变量,变量的值:JDK的安装目录 - 在系统变量中找到
Path
变量,双击打开,新增两个变量%JAVA_HOME%\bin
和%JAVA_HOME%\jre\bin
,点击确定
- 在系统变量中新建
CLASSPATH
变量,变量值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
(注意前面的.
),点击确定
,保存退出。
- 检查是否配置成功,
win+R
输入cmd
,然后回车,在黑乎乎的窗口输入java -version
,能够看到你安装的jdk版本信息,即环境配置成功。
- 安装Ant
ant 是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点:
1、跨平台性:Ant是纯Java语言编写的,所以具有很好的跨平台性。
2、操作简单:Ant是由一个内置任务和可选任务组成的,用ant任务就像是在dos中写命令行一样。Ant运行时需要一个XML文件(构建文件)。 Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。
3、维护简单、可读性好、集成简单:由于Ant构建文件 时XML格式的文件,所以很容易维护和书写,而且结构很清晰。Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开 发环境中去。
以下是解压后的目录布局。
apache-ant-1.10.8
+--- README, LICENSE, fetch.xml, 其他文本文件. //基本信息
+--- bin // 包含安装程序脚本
|
+--- lib // 包含Ant JARs plus必要的依赖项
|
+--- manual // Ant文档 (必读 ;-)
|
+--- etc // 包含xsl工具:
// - 可以从xml输出的各种任务中创建一个增强型的报告。
// - 迁移你的构建文件,并摆脱 "已废弃 "的警告
// - ... 更多 ;-)
- 点击http://ant.apache.org/bindownload.cgi进入ant官网,下载对应的安装包。
- 将下载的.zip压缩包解压到对应文件夹
- 配置环境变量
ANT_HOME H:\Ant\apache-ant-1.10.2
path H:\Ant\apache-ant-1.10.2\bin
classpath H:\Ant\apache-ant-1.10.2\lib
- 验证是否安装成功
依次选择:win + R –>cmd,输入如下命令:ant ,出现如下图,则表示安装成功
- 安装jenkins
jenkins有三种安装方式
第一种:快速安装
选择windows系统的版本
解压成功后双击jenkins.msi程序
安装成功后会显示如下要你填写密码的验证页面,按照它的提示信息到对应的目录底下找文件initialAdminPassword,然后将密码拷贝出来 localhost:8080
第二种:快速安装
使用命令 java -jar jenkins.war
这是依赖于 java环境和 jenkins.war进行搭建
这里不多说,因为后面的安装顺序都是和上述一致
第三种方法:
是直接将jenkins.war包安装在tomcat的webapps目录下,然后启动tomcatcat就可以了,当然Tomcat也有两种启动方式。但原理都是一样的。只是看谁比较方便,兼容性比较强而已。关键还是看系统 st
startup.sh
总结:三种安装方式都使用与Windows系统,第二种和第三种可以使用在linux系统,但是为求不出错,第二种才是最方便的。如果直接将jenkins.war包放到Tomcat的webapps下,那你公司的项目也放到这里,那就好玩了。
此处, 我们选择第一种方式进行安装 - 配置jmeter变量
- 官网下载
- 解压任意目录即可
- 配置环境变量
点击“新建”,建立一个变量:JMETER_HOME,值为你解压的jmeter安装路径。我的安装路径是在C盘,这个路径根据自己实际安装路径进行填写。然后点击确定保存即可
配置classpath变量 ;
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar
在用系统变量path后面加上%JMETER_HOME%\bin
最后在cmd输入jmeter 直接打开 如图
配置jenkins
环境变量配置
- 全局系统环境变量配置JDK
- 全局系统环境变量配置Ant
- 全局系统环境变量配置Git
- 配置jenkins报告支持显示HTML样式
首先在jenkins-系统管理,脚本命令行输入
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","sandbox; default-src 'self';")
保存后,不是立即生效,需要重新构建下项目,html报告就有显示了
常用插件安装
由于我们需要显示报告、因此需要安装邮件和第三方报告插件 ,jenkins管理 ->Manager Plugins
Manage Jenkins ->Manage plugins
集成jmeter用例集
- 新建一个自由风格的项目
- 配置构建触发器
- 构建执行命令: Execute Windows batch command
3.1 此处通过命令行简单执行 jmeter生成报告
rd /s/q D:\auto\jtl
rd /s/q D:\auto\report
mkdir jtl
mkdir report
jmeter -n -t D:\auto\testcase.jmx -l D:\auto\jtl\result_.jtl -e -o D:\auto\report
exit 0
- 3.2 再次新建Invoke Ant ,通过ant build文件构建生成日志
- 构建后操作:
完整显示结构如下:
Publish HTML reports : 此处展示 简单报告
结果如下显示:
Publish performance test result report 此处展示性能报告
结果如下: - 集成邮件配置
- 全局系统配置邮件config system
(1)全局系统管理配置
(2)全局邮件服务器设置
- 扩展邮件配置邮件Extended E-mail Notification
- 回到项目配置: 添加 构建后操作 -> Editable Email Notification
完整 邮件报告模板
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>53在线接口自动化-第${BUILD_NUMBER}次构建日志</title>
</head>
<body size="4" leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 30pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td>(本邮件是程序每天定时下发,有问题请联系测试雍伟业!(公司之后的外网无法打开邮件里的 URL))</td>
</tr>
<tr>
<td><h2>
<font color="#0000FF">构建状态 - ${BUILD_STATUS}</font>
</h2></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<hr size="3" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>触发原因: ${CAUSE}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li >变更集:${JELLY_SCRIPT,template="html"}</a></li>
<!-- 下面是报告的位置,根据自己项目要求填写 -->
<li>SummaryReport:${FILE, path="D:/demo/log/html/SummaryReport.html"}
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></a></li>
</ul>
<hr size="3" width="100%" align="center" />
</td>
</tr>
</table>
</body>
</html>
jmeter相关配置
一: 通过简单的命令:构建 目录结构如下
csv & xml
二:通过build文件构建目录如下
注意!注意!注意!
使用到的jmeter-results-detail-report_21.xsl 文件
将build.xml中的第42行
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
拷贝以下内容将这个路径下的jmeter-results-detail-report_21.xsl文件覆盖,这个文件说明了xsl文件装换为html文件的一些规则
使用到的:jmeter.results.shanhe.me.xsl 文件
jmeter.results.shanhe.me.xsl
链接:https://pan.baidu.com/s/1TQ7VIEXR9SubNEUZZ3a2xQ
提取码:ne14
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<tstamp>
<!--format property="time" pattern="yyyyMMddkkmm" /-->
<format property="date" pattern="yyyy/MM/dd kk:mm:ss"/>
<!--kk是24小时制,KK是12小时制-->
</tstamp>
<!-- (1)需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:/testinstail/xml-jmeter-5.2.1"/>
<property name="report.title" value="report"/>
<!-- (2)jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:/demo/log/jtl"/>
<!-- (3)jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:/demo/log/html"/>
<!-- 生成的报告的前缀 -->
<property name="ReportName" value="DetailsReport"/>
<property name="ReportName2" value="SummaryReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl"/>
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html"/>
<property name="jmeter.result.htmlName2" value="${jmeter.result.html.dir}/${ReportName2}.html" />
<!--项目初始化设置-->
<target name="init" description="init" >
<!--删除jtl文件夹下生成的所有文件及文件夹包括空目录,但不删除根目录-->
<delete verbose="true" includeemptydirs="true" >
<fileset dir="${jmeter.result.jtl.dir}" >
<include name="**/*" />
</fileset>
</delete>
<!--删除html文件夹下生成的所有文件及文件夹包括空目录,但不删除根目录-->
<delete>
<fileset dir="${jmeter.result.html.dir}">
<include name="**/*"/>
</fileset>
</delete>
<!--<delete dir="${classes.home}"/><mkdir dir="${classes.home}"/>-->
</target>
<target name="run">
<antcall target="test"/>
<antcall target="report"/>
<!--antcall target="mail"/-->
</target>
<target name="test" depends="init">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- (4)build.xml的存放的路径-->
<testplans dir="D:\demo" 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" depends="test">
<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="titleReport" expression="${report.title}"/>
<param name="dateReport" expression="${date}"/>
</xslt>
<xslt
classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName2}"
style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">
<param name="titleReport" expression="${report.title}"/>
<param name="dateReport" expression="${date}"/>
</xslt>
<copy todir="${jmeter.result.html.dir}">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png"/>
<include name="expand.png"/>
</fileset>