目录

一、什么是接口以及为什么要做接口测试

二、目前市场上的接口架构设计风格以及他们所基于的协议

三、目前市面上接口返回的数据类型

四、目前市面上的接口测试工具的应用场景

五、熟练Jmeter每个文件夹的作用

六、Jmeter常用的组件

七、接口测试流程和方案

八、使用jmeter执行接口测试

九、接口关联

十、断言

十一、Jmeter接口测试的调试方案

十二、没有接口文档如何开展接口测试


Jmeter是Apache公司开发的基于Java语言的压力测试工具,可以做接口测试,也可以做性能测试。

jdk:建议1.8以上

jmeter:不要用最新版。用最新版的下1-2个版本

一、什么是接口以及为什么要做接口测试

如果要进行接口必需了解什么是接口?
接口的定义:接口:接入的口。
它本身是由一套陈述、功能、选项、其它表达程序结构的形式、以及程序师使用的程序或者程序语言提供的数据组成。它是协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员(以上内容百度的)
反正就是这么一个东西,可以用来提供给类去是实现某些功能的接口。是一个入口。

为什么要做接口测试
接口测试的目的是用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
接口测试不要前端完成再接入测试,只要后台完成逻辑代码编写,就可以介入测试。

怎么进行接口测试
1、接口文档
2、编写测试用例(根据测试用例理论,比如等价类,边界值等方法)
3、执行测试,查看不同的参数请求,接口的返回的数据是否达到预期

二、目前市场上的接口架构设计风格以及他们所基于的协议

(1) 基于SOAP的接口架构:08的时候很流行,它是一种轻量级的,简单的,基于XML协议
的规范。
webservice协议:地址的最后面以?wsdl(web service discription language)结尾的

(2)基于RPC的接口架构:远程调用,它像调用本地服务一样去调用远程服务器的接口服
务。
        1.dubbo协议,阿里RPC架构,特点:dubbo:// 适用于高并发,数量少的情况下。
        2.基于SpringCloud的微服务
        3.thrift,RMI,Hessiasn
        
(3)基于RestFul的接口架构:它将网络上的事物看成是资源,xml,json,jpg,所有的操作
无状态

特点:同样的接口地址: http://127.0.0.1:8080/user ,不同的请求方式结果不一样,get查

询用例,psot新增用户,put修改用户,delete删除用户

 http协议: 超文本传输协议,主要分为请求和响应两部分,

请求:

请求行(GET /phpwind/ HTTP/1.1),

请求头(很重要,因为很多的接口必须带特定的请求头。常用请求头)

Accept :客户端接收的数据格式。

X-Requested-With :登录接口,异步请求(ajax的技术)

User-Agent: 发送请求的客户端的类型(百度的查询接口必须带这个请求头)

Content-Type: 请求的内容格式,发送post请求默认加application/json

Cookie ;发送Cookie信息, Http Cookie管理器。(作用,工作原理)

Cookie的工作原理:Http Cookie管理器的工作原理

第一步:在客户端第一次访问服务器的时候,那么服务器会生成Cookie信
息,并且在响应头的Set-Cookie里面把Cookie的信息传输到客户端。

第二步:从第2-N的请求都会在请求头的Cookie里面自动的带上上面的Cookie信息。作用就是:Cookie鉴权。证明后面的请求都是同一个客户端。
                
session和token可以通过cookie传输,也可以不通过它传输。其他请求头:Host,Connnection,Content-length,Accpt-Language 请求正文数据。

请求的数据。

响应
        响应行
        响应头
        响应正文数据。

三、目前市面上接口返回的数据类型

1.xml webservice
2.html http
3.json http,dubbo

开发接口潜规则:{error_code:错误码,message:错误码的中文说明,data:[]}
                JSON数据详解:是一种数据格式,1,2,3,abcd,只有两种数据:
                键值对:{key:value,key:value}
                列表:[value1,value2,value3]

四、目前市面上的接口测试工具的应用场景

jmeter+ant+jenkins+git/svn接口自动化
postman+newman+jenkins+git/svn接口自动化。

jmeter好还是Postman好,看公司,全要会。
没有git是因为你的项目比较小,不需要团队协作。
其他:soupui,apipost,postwoman,fiddler,charles
git,github,gitlib,gitee
git:分布式的版本控制工具
github:网站,国外,所有的文件都是公开的。私有的版本控制需要收费。
gitlab:网站,是本地公司搭建的网站,私有的。
gitee:网站,码云,既有公开的也有私有的
git,gitlab
git,码云gitee

五、熟练Jmeter每个文件夹的作用

(1)bin 目录:可执行文件目录

主要理解其下面的以下文件以及命令。
jmeter.bat:Windows 的启动命令。
jmeter.log:日志文件。
jmeter.sh:Linux 系统下的启动文件。
jmeter.properties:系统配置文件,如配置编码格式。
jmeter-server.bat:Windows 分布测试要用到的服务器配置。
jmeter-server:Linux 分布式测试要用到的服务器配置。

(2)docs:接口文档目录

对 JMeter 集成的接口进行说明。

(3)extras:扩展插件目录

例如:进行持续集成时,会将用到的 Ant、Maven 的插件放在这个目录下面。

(4)lib:JMeter 运行所依赖的插件目录

该目录下面全部都是 jar 包,JMeter 会自动在 JMETER_HOME/lib 和 ext 目录下寻找需要的类。

这里补充一下,如果在 Jmeter 中运行脚本时报java.lang.NOClassDefFoundError 的错误,都是因为缺少依赖的 jar 造成的。

(5)licenses:Jmeter 证书目录

证书目录

(6)printable_docs:用户操作手册目录

用户使用手册

(7)backups:脚本备份目录

六、Jmeter常用的组件

JMeter最基本的三个组成部分

线程组:场景设置

取样器:逻辑控制

监听器:数据报告

JMeter常用组件

测试计划:整个测试计划;

线程组:所有的任务都是基于线程组,开通多少个线程就代表有多少个并发用户;JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtual users),这些虚拟用户用来模拟访问被测系统。

Ramp-Up Period:在这么多时间内完成全部测试,比如开了2个线程,而Ramp-Up Period为3,则代表要在3秒内完成2个用户的登录;每个线程的间隔为1.5秒;

Sampler:所有的测试任务都是Sampler,即任何测试任务的类别都是Sampler,比如HTTP请求、JDBC请求、FTP请求;

断言:对Sampler的测试进行判断是否正确,准确来说属于后置处理器中的一种;

监听器:对Sampler的请求结果进行统计、显示;

常用的层次结构为:

常用的组件有:

HTTP请求:模拟HTTP请求;

查看结果树:对于每个请求,可以查看HTTP请求和HTTP响应;成功的为绿色,失败则显示为红色。如果测试的结果太多,你只需要看到错误的页面,则勾选【仅日志错误】。(可以用来辅助调试)

图形结果:可以图形显示吞吐量、响应时间等;

聚合报告:统计结果,总体的吞吐量、响应时间;

  • Label:标签,即我们上面的请求名称
  •   #Samples:本次场景中一共发出了多少个请求
  •   Average:平均响应时间
  •   Median:中位数,也就是50%的用户的响应时间
  •   90%Line:表示90%的用户的响应时间,如果最小值和最大值相差很大的话,我们一般选择这个作为最终测试结果
  •   Min:最小响应时间
  •   Max:最大响应时间
  •   Error%:出错率,本次测试中出现错误的请求的数量/请求的总数
  •   Throughput:吞吐量
  •   KB/sec:每秒从服务器端接受到的数据量

七、接口测试流程和方案

1、拿到接口文档的时候先分析文档,分析的内容有:请求类型、必填项、选填项、入参、出参及描述
2、编写测试用例,测试用例的编写参考下图

3、利用postman、jmeter或者其它接口测试工具执行测试用例
4、把测试后的的响应数据与数据库中自己查询到的数据做对比,数据是否一致
(或者让后端开发人员提供debug文档,用xshell或者CRT工具远程连接主机,对debug文档进行动态查看(tail -f 文件名))
(在接口没有问题的情况下,前端测试出的bug都属于前端开发人员)
5、接口测试完成后再进行前端的功能及UI交互测试
6、提交buglist清单,修复后一定要回归测试

八、使用jmeter执行接口测试

1.测试计划

2.线程组

3.Http Cookie管理器(非必要)

4.Http请求默认值

5.取样器

6.监听器

九、接口关联

1、利用【正则表达式提取器】

下面以微信公众号接口为例子

https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

(1)在获取access_token请求的【后置处理器】中添加【正则表达式提取器】–提取access_token
在这里插入图片描述

(2)正则表达式提取器–提取access_token内容如下:

(3)添加【调试取样器】
【调试取样器】:可以调试脚本,看到正则表达式的取值

(4)替换 ${正则表达式变量名} 替换

 2、json提取原件

同理

1、原理:通过Jsonpath来提取的

2、引用:
无数组时:$.变量名
有数组时:通过下标去访问,下标从0开始 $.变量名[1]

十、断言

1、响应断言

适用于:判断返回内容与预期结果的比对

步骤:在需要判断的“HTTP”请求接口上,右击“添加”\“断言”\“响应断言”。

 例如,响应文本中含有“南京”,表示请求响应成功。

在“测试模式”中添加“南京”,点击“启动”图标,执行请求,查看结果树。可能到此有朋友感觉奇怪,怎么与未加断言时执行效果一致。

那再修改“响应断言”为“南京我爱你”,再次执行请求。

这时请求结果为红色表时请求执行结果与预期设置不同,未包括“南京我爱你”字符,证明此条接口用例执行失败。

下面对“响应断言”内容进行详细介绍。

APPly to:

Main sample and sub-samples:作用于主取样器及对应子取样器

Main sample only:仅作用于主取样器

Sub-samples only:仅作用于子取样器

JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

测试字段:响应文本、响应代码、  响应信息、响应头部......

模式匹配规则: 包括、 匹配、Equals、字符串、否、或者

测试模式:可以添加/删除需要判断的内容,按钮“添加”、“删除”是进行指定内容的管理。

除响应断言外,还有其他断言。

2、大小断言

适用于:判断返回内容的大小。

步骤:在需要判断的“HTTP”请求接口上,右击“添加”\“断言”\“大小断言”

APPly to:同“响应断言”

Response Size Field to Test(响应字段的测试范围):完整响应、响应头、响应的消息体、响应代码、响应信息。

Size to Assert:断言字节大小

响应字段可以通过察看结果树看到

根据返回响应消息体的大小设置断言值,一般什么大于多少字节,不采用=,因为数据是变化的,大多数会在一定范围内。例如本请求的“Body size in bytes: 1748”,在“大小断言”中设置如下:

3、断言持续时间

适用于:判断请求的响应时间

步骤:在需要判断的“HTTP”请求接口上,右击“添加”\“断言”\“断言持续时间”。

APPly to:同“响应断言”

持续时间(毫秒):设置期时间的时间,例如预计3秒响应,即设置为3000,如果响应时间在3秒回返回,则断言成功,否则失败!

十一、Jmeter接口测试的调试方案

1.检查【查看结果树】

检查:请求头,请求信息,响应头,响应信息

2.使用【调试取样器】

3.Jmeter结合Fiddler进行调试

十二、没有接口文档如何开展接口测试

1.抓包
2.录制(jmeter自带的代理服务器)

为什么要做接口测试? 怎么用Jmeter接口测试工具? 你都会了吗? 这里给大家全面介绍相关推荐

  1. jmeter接口测试面试题(jmeter接口测试步骤)

    jmeter性能测试只能用于java开发的软件吗 不需要,Jmeter虽然提供了编写脚本的功能,但是不会编程也一样可以用的. 如何建立和使用Jmeter测试环境? 如何用Jmeter做压力测试Jmet ...

  2. WEB接口测试之Jmeter接口测试自动化 (一)(初次接触)

    软件测试自动化从不同的测试阶段分类,可从下层到上层依次分为单元测试-->接口测试-->界面自动化测试. 单元测试一般有开发人员自行完成,而界面自动化测试合适的测试条件又很难达到,测试人员在 ...

  3. WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试) 接口测试与数据驱动...

    转载:http://www.cnblogs.com/chengtch/p/6576117.html 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚 ...

  4. (转)http接口测试——Jmeter接口测试实例讲解

    转载地址:http://my.oschina.net/hellotest/blog/512482 一.测试需求描述 1. 本次测试的接口为http服务端接口 2. 接口的主要分成两类,一类提供给查询功 ...

  5. Jmeter接口测试实战分享,你一定要知道的问题总结!

    Jmeter是一款性能测试工具,因轻量级.开源.社区接受度高.容易入门等优点,也被测试人员广泛用于做接口测试.在使用Jmeter做较大规模.复杂场景的接口测试时,往往会遇到一些困难.阅读本文你将了解: ...

  6. 【全栈接口测试进阶系列教程】入门到入职的jmeter接口测试工具实战,接口测试步骤,正则表达式jsonpath,断言,接口加密,beanshell,jdbc,jmeter+ant+jenkins

    目录 [本文简介看之前请详细的看完介绍] 本文是全网首发的[全栈接口测试进阶系列教程]jmeter接口测试工具从入门到入职, 接口系列包含 接口测试系列包含所有的接口测试工具入门到入职,如果你喜欢的话 ...

  7. 全网最新最细最全最牛的jmeter接口测试,性能测试,没有之一,如有雷同纯属抄袭。

    目录 1.接口简介 2.接口测试简介 3.环境搭建 4.RESTful风格 5.Json说明 6.Jmeter简介 7.Jmeter环境搭建 8.Jmeter使用 8.1 Jmeter发GET请求 8 ...

  8. JMeter 接口测试-if控制器

    今天是小雪节气: 小雪是二十四节气中的第20个.起点于每年公历11月22日或23日,太阳位于赤纬-20°16',到达黄经240°. JMeter 接口测试-if控制器 使用场景: 当业务场景是用户登录 ...

  9. Jmeter接口测试-if控制器

    点击箭头处"蓝色字",关注我哦!! 小雪是二十四节气中的第20个.起点于每年公历11月22日或23日,太阳位于赤纬-20°16',到达黄经240°. JMeter 接口测试-if控 ...

最新文章

  1. mysql监控内存cpu使用率_监控 cpu 内存 网卡的使用情况的一个命令 比较实用
  2. VS Supercharger插件的破解
  3. 阿里OSS图片存储java代码示例
  4. 画时域随机信号波形_【鼎阳硬件智库原创︱测试测量】任意波形发生器的基本输出波形及其相关参数...
  5. STM32F2xx DMA Controllers
  6. IT增值服务实践心得体会:企业客户的钱比个人客户好赚得多
  7. android:versionCode和android:versionName 用途
  8. Java描述设计模式(03):工厂方法模式
  9. 1确认自己的python版本
  10. windows内核和Linux内核区别
  11. 百度文库f12免费复制文章
  12. 使用UltraISO将苹果dmg镜像转换标准ISO镜像
  13. matlab空间面板门槛,重磅!这可能是最全的面板门槛回归汇总了
  14. 运维每天基本的工作流程
  15. 强制客户端更新Silverlight XAP文件方法汇总
  16. 深圳APP开发红孩儿金融APP
  17. 关于98% after emitting CopyPlugin个人探索
  18. 关于锐捷认证与傻瓜路由器
  19. bing搜索分析网站的方法
  20. umi2升级到umi3

热门文章

  1. 操作系统的内存释放原理
  2. QX5241高端检测降压恒流LED驱动器 泉芯电子
  3. JAVA抖音 WSS弹幕
  4. 【871. 最低加油次数】
  5. playbook变量
  6. 老丁带你学USB-解疑2:USB协议中的ACK、NAK、STALL三种返回包含义
  7. 青春不死,只是凋零——悼念汪国真老师
  8. Effective LSTMs for Target-Dependent Sentiment Classification
  9. getParameters failed (empty parameters) 问题解决
  10. 魔兽3内存修改器 v8