为什么要做接口测试? 怎么用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自带的代理服务器)

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值