• 0
  • 0
分享

什么是接口呢?

接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。

  • 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。

  • 程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。

一、常见接口:

  1. webService接口:是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等;

  2. httpapi接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等;

二、前端和后端:

在说接口测试之前,我们先来搞清楚这两个概念,前端和后端。

前端是什么呢,对于web端来说,咱们使用的网页,打开的网站,这都是前端,这些都是html、css写的;对于app端来说呢,它就是咱们用的app,android或者object-C(开发ios上的app)开发的,它的作用就是显示页面,让我们看到漂亮的页面,以及做一些简单的校验,比如说非空校验,咱们在页面上操作的时候,这些业务逻辑、功能,比如说你购物,发微博这些功能是由后端来实现的,后端去控制你购物的时候扣你的余额,发微博发到哪个账号下面,那前端和后端是怎么交互的呢,就是通过接口。

前面说的你可能不好理解,你只需记住:前端负责貌美如花,后端负责挣钱养家。

三、什么是接口测试:

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

OK,上面是百度百科上说的,下面才是我说的

其实我觉得接口测试很简单,比一般的功能测试还简单),现在找工作好多公司都要求有接口测试经验,也有好多人问我(也就两三个人)什么是接口测试,本着不懂也要装懂的态度,

说:所谓接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。

我为啥说接口测试比功能测试简单呢,因为功能测试是从页面输入值,然后通过点击按钮或链接等传值给后端,而且功能测试还要测UI、前端交互等功能,但接口测试没有页面,它是通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果,所以它只需测入参和出参就行了,相对来说简单了不少。

四、接口组成

接口都有那些部分组成呢?

首先,接口文档应该包含以下内容:

  1. 接口说明;

  2. 调用url;

  3. 请求方法(get\post);

  4. 请求参数、参数类型、请求参数说明;

  5. 返回参数说明。

由接口文档可知,接口至少应有请求地址、请求方法、请求参数(入参和出参)组成,部分接口有请求头header。

标头(header):是服务器以HTTP协议传HTML资料到浏览器前所送出的字串,在标头与HTML文件之间尚需空一行分隔,一般存放cookie、token等信息

有同学问我header和入参有什么关系?它们不都是发送到服务器的参数吗?

OK,首先,它们确实都是发送到服务器里的参数,但它们是有区别的,header里存放的参数一般存放的是一些校验信息,比如cookie,它是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器,然后把请求地址连同入参一起发送到服务器,然后服务器会根据地址和入参来返回出参。也就是说,服务器是先接受header信息进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的。

五、为什么要做接口测试:

大家都知道,接口其实就是前端页面或APP等调用与后端做交互用的,所以好多人都会问,我功能测试都测好了,为什么还要测接口呢?OK,在回答这个问题之前,先举个栗子:

比如测试用户注册功能,规定用户名为6~18个字符,包含字母(区分大小写)、数字、下划线。首先功能测试时肯定会对用户名规则进行测试时,比如输入20个字符、输入特殊字符等,

但这些可能只是在前端做了校验,后端可能没做校验,如果有人通过抓包绕过前端校验直接发送到后端怎么办呢?

试想一下,如果用户名和密码未在后端做校验,而有人又绕过前端校验的话,那用户名和密码不就可以随便输了吗?

如果是登录可能会通过SQL注入等手段来随意登录,甚至可以获取管理员权限,那这样不是很恐怖?

所以,接口测试的必要性就体现出来了:

①可以发现很多在页面上操作发现不了的bug

②检查系统的异常处理能力

③检查系统的安全性、稳定性

④前端随便变,接口测好了,后端不用变

六、接口测试怎么测:

在进行接口测试前,还需要了解:

1)GET和POST请求:

如果是get请求的话,直接在浏览器里输入就行了,只要在浏览器里面直接能请求到的,都是get请求,如果是post的请求的话,就不行了,就得借助工具来发送。

GET请求和POST请求的区别:

  1. GET使用URL或Cookie传参。而POST将数据放在BODY中;

  2. GET的URL会有长度上的限制,则POST的数据则可以非常大;

  3. POST比GET安全,因为数据在地址栏上不可见;

  4. 一般get请求用来获取数据,post请求用来发送数据。

其实上面这几点,只有最后一点说的是比较靠谱的,第一点post请求也可以把数据放到url里面,get请求其实也没长度限制,post请求看起来参数是隐式的,稍微安全那么一些些,但是那只是对于小白用户来说的,就算post请求,你通过抓包也是可以抓到参数的。所以上面这些面试的时候你说出来就行了。

2)http状态码

每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:

  1. 2002开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了;

  2. 3003开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了;

  3. 400400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面;

  4. 5005开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果。

接口测试怎么测:

1)通用接口用例设计

https://mubu.com/doc/5YiiDgRzf

1.png

00.png

001.png

七、用什么工具测

接口测试的工具很多,比如postman、RESTClient、jmeter、loadrunner、SoapUI等,本人首推的测试工具是postman和jmeter,接下来就简单介绍下如何使用这两款工具进行接口测试,其他工具本次暂不介绍。

  • Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。

  • jmeter是一款100%纯Java编写的免费开源的工具,它主要用来做性能测试,相比loadrunner来说,它内存占用小,免费开源,轻巧方便、无需安装,越来越被大众所喜爱。

注:以下用例中所用地址皆为本人在本地所搭的环境,外网无法访问,见谅。

① 获取用户信息:该接口用于通过userid获取用户信息

请求地址:http://192.168.1.xxx:8080/regist

请求方式:POST/GET

入参:

参数数据类型(长度)是否必传备注
useridStringY用户id

出参:

参数数据类型(长度)备注
codeint状态码200为成功,500为异常
ageint年龄
idString用户id
nameString用户姓名

postman中请求如下

2.png

jmeter中请求如下:

3.png

4.png

② 获取用户信息:需要添加header,Content-Typeapplication/json

1.1 请求地址

http://192.168.1.102:8081/getuser2

1.2 请求方式

get/post

1.3 入参

参数数据类型(长度)是否必传备注
useridStringY用户id

1.4 出参

参数数据类型(长度)备注
codeint状态码200为成功,500为异常
useridint用户id
namestring用户名称
ageint用户年龄

postman测试如下,本次入参为json类型,当然文档中没说非要用json,用其他方式也是可以的

5.png

6.png

jmeter测试如下

7.png

8.png

③ 修改用户余额2

1.1 功能描述

功能描述:需要添加cookie,tokentoken是写死的token12345

1.2 请求地址

http://192.168.1.102:8081/setmoney2

1.3 请求方式

Post

1.4 入参

参数数据类型(长度)是否必传备注
useridStringY用户id
moneyStringY修改的余额数值

1.5 出参

参数数据类型(长度)备注
codeint状态码200为成功,500为异常
successString状态

postman测试如下:

9.png

jmeter测试如下:

10.png

11.png

12.png

④ 文件上传

postman:

9.png

jmeter:

14.png

15.png

⑤ 请求webService接口

请求webService接口需要用到的工具是SoapUI,如下图

16.png

17.png

18.png

在jmeter里请求如下:

19.png

如果您觉得本篇文章还不错,欢迎点赞,转发分享,感谢~~


作者:定静沉行

原文链接:https://www.cnblogs.com/zyy98877/p/8476238.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 每次都有人问我软件测试的前景是什么样的,每年也会有人很多人纷纷涌入测试的岗位上,希望自己能够进入阿里、华为等大厂但是测试岗位真的那么吃香吗?今天我结合从零基础小白到测试开发的成长经历,来说下这个行业的发展前景,以及要入行的同学应该从哪个地方入手学习一、软件测试行业的发展最近很多同学在找工作的时候,会发现功能测试岗位很难找到工作,大多数都是外包,甚至外包都要求会性能或者自动化测试,所以对于纯手工测试,不好找工作的情况是真实存在的。另外就是技术的发展,CI/CD/Devops的项目管理迭代的方法论的流行加大了测试压力,你要是刚开始进入这个行业,可能认为测试就是找bug,但是测试工程师的核心是质量保...
            0 0 1091
            分享
          •   苹果 Vision Pro 的经验亮相可能将该公司的竞争对手发展多年的产品推回了原点,这其中自然包括三星,据传三星已经推迟了自家 AR 头戴设备的上市日期,以使其成为有足够实力的竞争对手。由于这次挫折,这家韩国巨头的头戴式可穿戴设备预计不会在明年 6 月之前推出,即便如此,途中也可能会出现一些复杂情况。  据传三星的早期AR设备原型已经宣告报废,该公司现在似乎要从头开始,制造一款真正的苹果 Vision Pro 竞争对手。  苹果 Vision Pro 的设计极具未来感,硬件和显示屏规格也更胜一筹,这促使三星推迟了 AR 头显的发布时间。根据 Revegnus 在X上的报道,揭幕仪式可能会...
            0 0 755
            分享
          •   车载测试  1、你都知道哪些can工具,测试时用到的功能有哪些?  can工具是能向车仿真发送can信号的一类工具的统称,常见的有  busmaster?canoe?cantest 等等  虽然软件的名字有很多,软件的功能细节有差异,但是针对测试使用的功能通常都是以下几种:  接收can信号  仿真发送can信号  抓日志(保存信号信息)  编写自动化脚本(高级功能)  2、busmaster工具怎么发送can仿真信号?  1)点击“transmit windows”功能键,弹出“Configure Transmission Messages-CAN”窗口。  2)双击“Tx F...
            0 0 248
            分享
          •       测试策略      测试相较于其他工作的核心竞争力是什么?在回答这个问题之前,想一下每个工作岗位的核心竞争力又是什么呢?是不是可以迁移的呢?      众所周知,测试一向用来与开发作比较,那么开发的核心竞争力是什么呢?真的是开发能力吗?如果是的话,为什么很多具有丰富开发经验的中年开发人员会面临着中年危机呢?从这个角度看,开发的核心竞争力未必是开发能力,在我看来,当前最具有竞争力的能力是解决问题的能力,不论是创新能力、领导能力、合作能力还是问题的分析能力,最终的结果都表现为解...
            0 0 1426
            分享
          • 首先要理解为什么要进行批量测试,当我们在工作中进行接口测试时,项目的接口肯定不止一个,而是很多很多,而且每个接口都需要进行正确参数,错误参数,参数为空,特殊字符等方式来测试接口是否能够正确返回所需的响应值。在编写脚本之前可以先汉化JMeter,找到JMeter解压/安装路径下的JMeter.properties,用编辑器打开(右键用记事本打开也可以):找到  #language=en  ,在下面添加:language=zh_CN 并重启JMeter那么我们该如何通过JMeter来完成批量测试呢? 我们先建立一个较为简单的方式进行测试脚本观察一下。以去获取创建订单时的【省/市...
            14 14 4111
            分享
      • 51testing软件测试圈微信