带你打开-接口测试的大门

Hi,欢迎来到小喜的博客,希望能对你有所帮助! Hi,欢迎来到小喜的博客,希望能对你有所帮助!     2022-09-18     472

关键词:

你是否有这样的疑虑?


1、到底什么是接口,接口长什么样?

2、什么情况下进行接口测试?

3、接口文档到底是什么?

4、测试接口的正确姿势是什么?


什么情况下展开接口测试?


1、项目处于开发阶段,前后端联调接口是否请求成功

2、有接口文档,开发已完成联调,功能测试展开之前

3、专项测试:如测流量大小、查看图片压缩大小、测试接口请求响应时间

4、版本上线前,进入整体回归测试,查看接口是否有异常

5、版本功能文档后,接口自动化


什么是接口?


计算机中包括硬件接口和软件接口。电脑等信息机器硬件组件间的接口叫硬件接口,是可以看到的以实物存在的如串口、并口等;而电脑等信息机器软件组件间的接口叫软件接口。而软件接口则是虚拟存在的接口。

接口广义的定义为:泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式。

接口狭义的定义为:是指特定的函数集合,一般是用interface(Delphi)声明的,它表示一个方法集合,这个集合被成为一个命名接口。一个命名接口中的方法必须在一个类中实现后才能被使用,一个类继承实现一个接口,称为这个类实现了该接口,一个接口可以被多个类实现,一个类也可以实现继承多个接口,这样就形成了一种灵活的接口调用的方式,从而实现更加灵活和节省资源的多态。


接口测试的分类


接口测试分为模块接口测试和Web接口测试。模块接口测试需要对代码有一定的掌握能力,可以划分到白盒测试中;而Web接口测试分为服务器接口测试和外部接口测试。

1、服务器接口测试:是测试浏览器与服务器的接口。这个很容易理解,我们知道web开发一般分前端和后端,前端开发人员用HTML/CSS/JavaScript等技术。后端开发人用PHP/JAVA/Python/Ruby等各种语言。用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过HTTP协议的GET与POST请求来实现前后端的数据传递。这也可认为是接口测试,调用的登录接口还是查询接口,传参的是用户密码还是搜索关键字。

2、外部接口测试:这个很典型的例子就是第三方登录,比如你做的新系统免于新用户重新注册的麻烦会提供第三方登录,那用户在登录的时候调用的就是第三方登录的接口,由第三方验证用户名和密码并且返回给当前系统。


接口测试的意义


1、保证系统的稳定性:

一个系统的服务端越接近底层,对系统的影响就越大,甚至有可能牵一发而动全身,服务端的一个缺陷可能会引起客户端的几个甚至十几个缺陷,更可怕的是服务端的缺陷有可能引起系统的崩溃,这对整个系统来说,损失将是不可估量的,因此服务端接口的质量将直接影响到系统的正确和稳定。

然而,在实际的开发过程中,开发人员并没有充足的时间编写单元测试,并且他们往往对自己编写的代码有足够的信心,不愿意将时间“浪费”在编写单元测试身上。这个时候接口测试就肩负着重要的作用。

2、将 bug 控制在项目前期:

就笔者所做的微信活动而言,后端系统比较成熟,对于前端开发来说,每个活动都有很大不同。这就导致后端接口开发只需要一天就可完成,而前端开发的工作量至少需要两、三天。而在这个空当期就可以充分的对接口进行测试,从而尽早的发现系统 bug;减少功能测试的工作量,缩短产品的发布周期。

3、检查服务器的异常处理能力:

我们通常把前端的验证称为弱验证,因为它很容易被绕过,这个时候如果只站在功能的层面时行测试,就很难发现一些安全的问题。不以前功能为入口的接口测试就会发挥出它的作用。


接口测试的用例设计流程


首先,明确出发点。和所有的测试一样,接口测试出发点是你要证明所测的程序是错误的。以这个出发点为导向,你的设计行为就会尽量朝这个方向发展,更易发现问题,不会出现大方向的偏差。

其次,选择好测试对象。对于一个系统做接口测试选择好的测试对象是接口测试关键。一个系统有无数的接口,每个接口如果分别测试,那将是很痛苦的一件事情,不光繁琐浪费,而且任何一个内部接口的变动,都将导致我们用例的不可用。这里推荐把整个系统作为一个整体,选择整个系统提供给外部使用、交互的最外层接口作为你的测试对象,以此为测试对象的用例将有很好的健壮性,并且更高效。另外,根据数据的流向,又可将这些最外层的接口分为两类:一类是数据进入系统的接口;一类是数据流出系统的接口。进入系统的接口实际是我们用例的执行调用的接口。可通过变化参数对这些接口进行调用,模拟外部的使用;而流出的接口则是我们用例真正该验证的点。数据从哪里流出,流出时的状态如何,此时系统又是什么状态都是我们所应该验证的。

然后,确认完整的测试对象的功能:确认外部接口提供给使用这些接口的外部用户什么样的功能,外部用户真正需要什么样的功能。此两个功能一定要准确详细,用例的设计要严格按照测试对象功能设计才是正确的用例。

最后当出发点、对象、功能都确定了,就可以真正设计用例了。


接口测试用例设计举例


我觉得接口测试用例的设计方法其实和功能测试用例的设计方法是类似的,参考如下:

1.输入参数测试: 针对输入的参数进行测试,也可以说是假定接口参数的不正确性进行的测试,确保接口对任意类型的输入都做了相应的处理:

输入参数合法,

输入参数不合法,

输入参数为空,

输入参数为null,

输入参数超长;

2.功能测试:接口是否满足了所提供的功能,相当于是正常情况测试,如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例具有更好的可读性和维护性。

3.逻辑测试:逻辑测试严格讲应为单元测试,单元测试应保持内部逻辑的正确性,可单元测试和接口测试界限并不是那么清楚,所以我们也可以从给出的设计文档中考虑内部逻辑错误的分支情况和异常;

4.异常情况测试:接口实现是否对异常情况都进行了处理,接口输入参数虽然合法,但是在接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何的异常都进行处理。


接口文档举例


下图为简单的接口文档,包括URL,调用方式,传入参数,返回值,状态码等等~~

技术分享

还不会ts?一文带你打开ts的大门(代码片段)

一文带你打开ts的大门序言一、什么是TypeScript?1、编程语言的类型2、TypeScript究竟是什么?二、为什么要学习TypeScript?1、程序更容易理解2、效率更高3、更少的错误4、非常好的包容性5、一点小缺点三、typescript入门1... 查看详情

还不会ts?一文带你打开ts的大门(代码片段)

一文带你打开ts的大门序言一、什么是TypeScript?1、编程语言的类型2、TypeScript究竟是什么?二、为什么要学习TypeScript?1、程序更容易理解2、效率更高3、更少的错误4、非常好的包容性5、一点小缺点三、typescript入门1... 查看详情

带你进入linux的大门(代码片段)

Linux学习的重要性基础指令的学习ls指令:mkdir指令cd指令pwd指令rmdir指令Linux是一个操作系统,它的父亲是Unix,相较于Windows而言最大的优点就是安全性和稳定性比较高,所以当今互联网巨头们所使用的服务器都是... 查看详情

,带你彻底掌握接口测试!

一、什么是接口测试?所谓接口,是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据库的对接。而接口测试,则是通过接口的不同情况下的输入,去对比输出,看看是否满足... 查看详情

带你做接口测试从零到第一条用例总结(代码片段)

目录序章请求模型请求结构接口的请求会发向哪里复杂一点的接口,RESTful5.接口测试接口测试用例序章​说起接口测试,网上有很多例子,但是当初做为新手的我来说,看了不不知道他们说的什么,觉得接口... 查看详情

玩转rabbitmq系列01:一文带你敲响rabbitmq的大门(代码片段)

...向:java后端开发🎁我的上一篇文章:手把手带你搭建第一个SpringCloud项目(二)💕如果我的文章对你有帮助,点赞、收藏、留言都是对我最大的动力【玩转Rabbitmq系列】文章直通车~【玩转Rabbitmq系列】... 查看详情

带你做接口测试从零到第一条用例总结(代码片段)

目录序章请求模型请求结构接口的请求会发向哪里复杂一点的接口,RESTful5.接口测试接口测试用例序章​说起接口测试,网上有很多例子,但是当初做为新手的我来说,看了不不知道他们说的什么,觉得接口... 查看详情

毕业季·进击的技术er什么是微信小程序,带你推开小程序的大门(代码片段)

活动地址:毕业季·进击的技术er作者:半身风雪简介:本节课程,我将带领大家初识微信小程序,将通过小程序的发展,开发环境,开发工具,项目结构等,做一个详细的讲解。前几天,我... 查看详情

轻轻推开软件测试的大门

一谈到软件测试,很多人都是多少带着一些五味杂陈的感觉,眼光高的觉得开发才有前途,不自信的学习测试也学不精通,面对各种压力,在岁月的流逝中自怨自艾。这几年从事软件测试培训工作以来,我遇到了很多学员的很多... 查看详情

一文带你全面解析postman工具的使用(基础篇)(代码片段)

postman是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好。无论是开发人员进行接口调试,还是测试人员做接口测试,postman都是我们的首选工具之一。那么接下来就介绍下p... 查看详情

如何用postman做接口测试

...在电脑桌面上找到安装的postman软件位置,鼠标双击图标打开;打开后显示如下界面即为打开成功。现在我们开始对一个接口进行测试。2、点击左上角的“+New”,在打开的弹窗页面中切换到creatNew页面(一般打开后默认就是creatNe... 查看详情

打开c++的大门(代码片段)

初识C++1.C++的三大特性(背)①封装把客观的事务抽象成一个类(将数据和方法打包在一起,加以权限的区分,达到保护并安全使用数据的目的)②继承继承所表达的是类之间相关的关系,这种关系使得对象可... 查看详情

c++打开c++的大门(代码片段)

目录前言1.什么是C++2.C++的发展史3.C++关键字(C++98)4.命名空间4.1命名冲突4.2命名空间定义4.3命名空间使用5.输入输出6.缺省参数6.1缺省参数的概念6.2缺省参数分类7.函数重载7.1函数重载概念7.2C+&#... 查看详情

如何用postman做接口测试

...在电脑桌面上找到安装的postman软件位置,鼠标双击图标打开;打开后显示如下界面即为打开成功。现在我们开始对一个接口进行测试。2、点击左上角的“+New”,在打开的弹窗页面中切换到creatNew页面(一般打开后默认就是creatNe... 查看详情

css实例:翻转图片滚动图片栏打开大门

CSS翻转图片主要用到的技术除了3D翻转和定位,还用到了一个属性backface-visibility:visable|hidden;该属性主要是用来设定元素背面是否可见。效果图如下:具体的步骤如下:1、写出页面主体,<div><imgsrc="Images/b.jpg"><imgsrc="I... 查看详情

css实例:翻转图片滚动图片栏打开大门

CSS翻转图片主要用到的技术除了3D翻转和定位,还用到了一个属性backface-visibility:visable|hidden;该属性主要是用来设定元素背面是否可见。效果图如下:具体的步骤如下:1、写出页面主体,<div><imgsrc="Images/b.jpg"><imgsrc="I... 查看详情

接口测试基础

...esponse中传输的数据就是接口测试最重要的部分Cache是什么打开浏览器或者应用的实话,用户的等待时间叫做响应时间,打开速度影响到用户体验,提高反应速度的一个方法就是使用缓存策略,缓存策略能带来什么好处呢?1.减少... 查看详情

从零开始带你一步一步使用yolov3测试自己的数据

上一篇: 从零开始带你一步一步使用YOLOv3训练自己的数据我给大家详细介绍了如何使用YOLOv3模型来训练自己的数据集。训练部分完成,本文将继续给大家详细介绍如何使用我们训练好的模型来进行图片的批量测试。一、... 查看详情