接口测试及常用接口测试工具

[复制链接]
发表于 2026-2-7 02:54:11 | 显示全部楼层 |阅读模式
起首,什么是接口呢?
接口一样平常来说有两种,一种是步伐内部的接口,一种是体系对外的接口。
体系对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能利用他写好的方法,从而到达数据共享的目标,比如说咱们用的app、网址这些它在举行数据处置惩罚的时间都是通过接口来举行调用的。
步伐内部的接口:方法与方法之间,模块与模块之间的交互,步伐内部抛出的接口,比如bbs体系,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部体系举行调用。
一、常见接口:
1、webService接口:是走soap协议通过http传输,哀求报文和返回报文都是xml格式的,我们在测试的时间都用通过工具才气举行调用,测试。可以利用的工具有SoapUI、jmeter、loadrunner等;
2、http api接口:是走http协议,通过路径来区分调用的方法,哀求报文都是key-value情势的,返回报文一样平常都是json串,有get和post等方法,这也是最常用的两种哀求方式。可以利用的工具有postman、RESTClient、jmeter、loadrunner等;
二、前端和后端:
 在说接口测试之前,我们先来搞清楚这两个概念,前端和后端。
      前端是什么呢,对于web端来说,咱们利用的网页,打开的网站,这都是前端,这些都是html、css写的;对于app端来说呢,它就是咱们用的app,android大概object-C(开辟ios上的app)开辟的,它的作用就是表现页面,让我们看到漂亮的页面,以及做一些简朴的校验,比如说非空校验,咱们在页面上利用的时间,这些业务逻辑、功能,比如说你购物,发微博这些功能是由后端来实现的,后端去控制你购物的时间扣你的余额,发微博发到哪个账号下面,那前端和后端是怎么交互的呢,就是通过接口。
      前面说的你大概不好明白,你只需记取:前端负责貌美如花,后端负责挣钱养家。
三、什么是接口测试:
接口测试是测试体系组件间接口的一种测试。接口测试重要用于检测外部体系与体系之间以及内部各个子体系之间的交互点。测试的重点是要查抄数据的互换,通报和控制管理过程,以及体系间的相互逻辑依靠关系等。
OK,上面是百度百科上说的,下面才是我说的
着实我以为接口测试很简朴,比一样平常的功能测试还简朴(这话我先如许说,以后大概会删O(∩_∩)O哈!),如今找工作很多多少公司都要求有接口测试履历,也有很多多少人问我(也就两三个人)什么是接口测试,本着不懂也要装懂的态度,我会说:所谓接口测试就是通过测试差异环境下的入加入之相应的出参信息来判定接口是否符合或满意相应的功能性、安全性要求。
我为啥说接口测试比功能测试简朴呢,由于功能测试是从页面输入值,然后通过点击按钮或链接等传值给后端,而且功能测试还要测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、200 2开头的都表现这个哀求发送乐成,最常见的就是200,就代表这个哀求是ok的,服务器也返回了。
2、300 3开头的代表重定向,最常见的是302,把这个哀求重定向到别的地方了,
3、400 400代表客户端发送的哀求有语法错误,401代表访问的页面没有授权,403表现没有权限访问这个页面,404代表没有这个页面
4、500 5开头的代表服务器有非常,500代表服务器内部非常,504代表服务器端超时,没返回效果
接下来再说接口测试怎么测:
1)、通用接口用例计划
①、通过性验证:起首肯定要包管这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回精确的效果。
②、参数组合:如今有一个利用商品的接口,有个字段type,传1的时间代表修改商品,商品id、商品名称、代价有一个是必传的,type传2的时间是删除商品,商品id 是必传的,如许的,就要测参数组合了,type传1的时间,只传商品名称能不能修改乐成,id、名称、代价都传的时间能不能修改乐成。
③、接口安全:
     1、绕过验证,比如说购买了一个商品,它的代价是300元,那我在提交订单时间,我把这个商品的代价改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增长?
     2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才气修改,那我传一个平凡用户,能不能修改乐成,我传一个其他的卖家能不能修改乐成
     3、参数是否加密,比如说我登岸的接口,用户名和暗码是不是加密,如果不加密的话,别人拦截到你的哀求,就能获取到你的信息了,加密规则是否容易破解。
     4、暗码安全规则,暗码的复杂水平校验
④、非常验证:
所谓非常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对非常环境的校验。比如说必填的参数不填,输入整数范例的,传入字符串范例,长度是10的,传11,总之就是你说怎么来,我就不怎么来,着实也就这三种,必传非必传、参数范例、入参长度。
2)、根据业务逻辑来计划用例
根据业务逻辑来计划的话,就是根据自己体系的业务来计划用例,这个每个公司的业务不一样,就得详细的看自己公司的业务了,着实这也和功能测试计划用例是一样的。
    举个例子,拿bbs来说,bbs的需求是如许的:
    1、登录失败5次,就须要等候15分钟之后再登录
    2、新注册的用户须要过了练习期才气发帖
   3、删除帖子扣除积分
   4、......
   像如许的你就要把这些测试点列出来,然后再去造数据测试对应的测试点。
 七、用什么工具测
接口测试的工具很多,比如 postman、RESTClient、jmeter、loadrunner、SoapUI等,本人首推的测试工具是postman和jmeter,接下来就简朴先容下怎样利用这两款工具举行接口测试,其他工具本次暂不先容。
1)、Postman是谷歌的一款接口测试插件,它利用简朴,支持用例管理,支持get、post、文件上传、相应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。
jmeter是一款100%纯Java编写的免费开源的工具,它重要用来做性能测试,相比loadrunner来说,它内存占用小,免费开源,轻便方便、无需安装,越来越被大众所喜好。
注:以下用例中所用所在皆为本人在当地所搭的环境,外网无法访问,包容。
①、获取用户信息:该接口用于通过userid获取用户信息
哀求所在:
哀求方式:POST/GET
入参:
参数
数据范例(长度)
是否必传
备注
userid
String
Y
用户id
 出参:
参数
数据范例(长度)
备注
code
int
状态码200为乐成,500为非常
age
int
年岁
id
string
用户id
name
String
用户姓名
  postman中哀求如下

 jmeter中哀求如下:




  ②、获取用户信息:须要添加header,Content-Type application/json
1.1    哀求所在
http://192.168.1.102:8081/getuser2
1.2    哀求方式
get/post
1.3     入参
参数
数据范例(长度)
是否必传
备注
userid
String
Y
用户id
 1.4     出参
参数
数据范例(长度)
备注
code
int
状态码200为乐成,500为非常
userid
int
用户id
name
string
用户名称
age
int
用户年岁

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




 jmeter测试如下




 ③、修改用户余额2
功能形貌:须要添加cookie,token token是写死的token12345
1.2    哀求所在
http://192.168.1.102:8081/setmoney2
1.3    哀求方式
Post
1.4    入参
参数
数据范例(长度)
是否必传
备注
userid
String
Y
用户id
money
String
Y
修改的余额数值
 1.5     出参
参数
数据范例(长度)
备注
code
int
状态码200为乐成,500为非常
success
String
状态
  postman测试如下:

 jmeter测试如下:






 ④文件上传
postman:


jmeter:




 ⑤、哀求webService接口
哀求webService接口须要用到的工具是SoapUI,如下图






在jmeter里哀求如下: 

末了感谢每一个认真阅读我文章的人,礼尚往来总是要有的,固然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
​


这些资料,对于【软件测试】的朋侪来说应该是最全面最完备的备战堆栈,这个堆栈也陪伴上万个测试工程师们走过最困难的路程,盼望也能资助到你!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表