|
接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。
一、常见接口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、前端交互等功能,但接口测试没有页面,它是通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果,所以它只需测入参和出参就行了,相对来说简单了不少。 四、接口都有那些部分组成呢?首先,接口文档应该包含以下内容:
由接口文档可知,接口至少应有请求地址、请求方法、请求参数(入参和出参)组成,部分接口有请求头header。 标头 (header):是服务器以HTTP协议传HTML资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔,一般存放cookie、token等信息。 有同学问我header和入参有什么关系?它们不都是发送到服务器的参数吗? OK,首先,它们确实都是发送到服务器里的参数,但它们是有区别的,header里存放的参数一般存放的是一些校验信息,比如cookie,它是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器,然后把请求地址连同入参一起发送到服务器,然后服务器会根据地址和入参来返回出参。也就是说,服务器是先接受header信息进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的。 五、为什么要做接口测试?大家都知道,接口其实就是前端页面或APP等调用与后端做交互用的,所以好多人都会问,我功能测试都测好了,为什么还要测接口呢?OK,在回答这个问题之前,先举个栗子: 比如测试用户注册功能,规定用户名为6~18个字符,包含字母(区分大小写)、数字、下划线。首先功能测试时肯定会对用户名规则进行测试时,比如输入20个字符、输入特殊字符等,但这些可能只是在前端做了校验,后端可能没做校验,如果有人通过抓包绕过前端校验直接发送到后端怎么办呢?试想一下,如果用户名和密码未在后端做校验,而有人又绕过前端校验的话,那用户名和密码不就可以随便输了吗?如果是登录可能会通过SQL注入等手段来随意登录,甚至可以获取管理员权限,那这样不是很恐怖? 所以,接口测试的必要性就体现出来了: ①可以发现很多在页面上操作发现不了的bug 六、接口测试怎么测?在进行接口测试前,还需要了解: 1)GET和POST请求:
其实上面这几点,只有最后一点说的是比较靠谱的,第一点post请求也可以把数据放到url里面,get请求其实也没长度限制,post请求看起来参数是隐式的,稍微安全那么一些些,但是那只是对于小白用户来说的,就算post请求,你通过抓包也是可以抓到参数的。所以上面这些面试的时候你说出来就行了。 2)http状态码 每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:
接下来再说接口测试怎么测: 1)通用接口用例设计 ①通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。 ③接口安全:
④异常验证: 所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。 2)根据业务逻辑来设计用例 根据业务逻辑来设计的话,就是根据自己系统的业务来设计用例,这个每个公司的业务不一样,就得具体的看自己公司的业务了,其实这也和功能测试设计用例是一样的。
七、用什么工具测?接口测试的工具很多,比如 postman、RESTClient、jmeter、loadrunner、SoapUI等,首推的测试工具是postman和jmeter(测试框架的话,可以选择Robot Framework Pytest等),接下来就简单介绍下如何使用这两款工具进行接口测试,其他工具本次暂不介绍。 1)、Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。 jmeter是一款100%纯Java编写的免费开源的工具,它主要用来做性能测试,相比loadrunner来说,它内存占用小,免费开源,轻巧方便、无需安装,越来越被大众所喜爱。 注:以下用例中所用地址皆为本人在本地所搭的环境,外网无法访问,见谅。 ①获取用户信息:该接口用于通过userid获取用户信息 请求地址:http://192.168.1.102:8081/getuser 请求方式:POST/GET 入参:
出参:
postman中请求如下: ![]() jmeter中请求如下: ![]() ![]() ②获取用户信息:需要添加header,Content-Type application/json 1.1 请求地址 http://192.168.1.102:8081/getuser2 1.2 请求方式 get/post 1.3 入参
1.4 出参
postman测试如下,本次入参为json类型,当然文档中没说非要用json,用其他方式也是可以的。 ![]() ![]() jmeter测试如下: ![]() ![]() ③修改用户余额2 1.1 功能描述 功能描述:需要添加cookie,token token是写死的token12345 1.2 请求地址 http://192.168.1.102:8081/setmoney2 1.3 请求方式 Post 1.4 入参
1.5 出参
postman测试如下: ![]() jmeter测试如下: ![]() ![]() ![]() ④文件上传 postman: ![]() jmeter: ![]() ![]() ⑤请求webService接口 请求webService接口需要用到的工具是SoapUI,如下图: ![]() ![]() ![]() 在jmeter里请求如下: ![]() 欢迎大家关注笔者的公众号:程序员老奕,专注于软件测试干活分享,全套测试资源可免费分享! 最后如果你想学习自动化测试,欢迎加入笔者的交流群:771645171,里面会有很多资源和大佬答疑解惑,我们一起交流一起学习!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |

写代码时遇到过这种情况吗? 想问 AI 一个问题,得切到浏览器;让 AI 改代码,又要来回复制粘贴。编辑器、终端、浏览器反复切换,思路早断了。 OpenCode 解决的就是这个问题——直接在终端使用 AI 助手。 OpenCode
很喜欢的靶机,有效暴露了自己的不足,里面的兔子洞基本上全部踩了一遍,所以写一下这篇wp兼笔记 感想:打靶很多时候是反直觉的,有的时候不能基于感觉,或者说觉得概率很小就不去尝试,它是一个严谨的,纯粹理性的