ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 接口测试 > ### 首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 1. 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。 2. 程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如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,上面是百度百科上说的,下面才是我说的 其实我觉得接口测试很简单,比一般的功能测试还简单,现在找工作好多公司都要求有接口测试经验 什么是接口测试,本着不懂也要装懂的态度,我会说:所谓接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。 我为啥说接口测试比功能测试简单呢,因为功能测试是从页面输入值,然后通过点击按钮或链接等传值给后端,而且功能测试还要测UI、前端交互等功能,但接口测试没有页面,它是通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果,所以它只需测入参和出参就行了,相对来说简单了不少。 > ### 接口测试的原理 通过测试程序或工具,模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理,然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。 > ### 接口组成 首先,接口文档应该包含以下内容: 1、接口说明 2、调用url 3、请求方法(get\\post) 4、请求参数、参数类型、请求参数说明 5、返回参数说明 一个完整的具体的接口测试文档,它告诉接口的地址/或名称,要向接口传入什么参数,每个参数有什么约束条件,成功调用接口时的预期返回结果和调用接口失败时的预期返回结果。 > ### 为什么要做接口测试: 大家都知道,接口其实就是前端页面或APP等调用与后端做交互用的,所以好多人都会问,我功能测试都测好了,为什么还要测接口呢?OK,在回答这个问题之前,先举个栗子: 比如测试用户注册功能,规定用户名为6~18个字符,包含字母(区分大小写)、数字、下划线。首先功能测试时肯定会对用户名规则进行测试时,比如输入20个字符、输入特殊字符等,但这些可能只是在前端做了校验,后端可能没做校验,如果有人通过抓包绕过前端校验直接发送到后端怎么办呢?试想一下,如果用户名和密码未在后端做校验,而有人又绕过前端校验的话,那用户名和密码不就可以随便输了吗?如果是登录可能会通过SQL注入等手段来随意登录,甚至可以获取管理员权限,那这样不是很恐怖? 所以,接口测试的必要性就体现出来了: 1. 可以发现很多在页面上操作发现不了的bug 2. 检查系统的异常处理能力 3. 检查系统的安全性、稳定性 4. 前端随便变,接口测好了,后端不用变 > ### 接口测试要关注什么内容 1. 发送给服务器的请求数据是否正确; 2. 服务器返回给客户端的信息是否和预期结果一致; 3. 进入数据库,检查接口是否实现的相应的功能; 4. 接口的响应时间是否符合需求。 > ### 接口测试怎么测: * 第一步:分析需求 所有的软件测试都应追溯到用户需求,接口测试也一样。在接口测试开始前,我们需要得到一份接口测试的需求文档。 产品开发负责人在完成某产品功能的接口文档编写后,在核对无误后下发给对应的接口测试负责人。测试负责人拿到接口文档需要首先做以下两方面的工作。一方面,测试人员要对接口文档中各个接口的功能以及接口中涉及的各个字段的意义和用途进行理解。另一方面,测试人员也应该充分与开发人员交流,理解清楚每个接口用到协议以及各个字段的取值规范和范围。 需求文档有很全面的,也有很简单,如下图: ![](https://img.kancloud.cn/19/3f/193fcf5cebfbd0c58a693afb261e62f8_628x576.png) 不完整的需求 ![](https://img.kancloud.cn/b2/0f/b20f786b1f9566d520157db712c8a974_376x503.png) * 第二步:创建测试计划 接口测试负责人与测试组长或者项目经理沟通测试计划安排。单独一个接口文档涉及的接口过多时,由测试组长按照接口功能的相关性以及复杂性划分接口分发给不同的测试人员进行测试,并制定测试时间以及每日测试工作量。 * 第三步:写测试用例并评审 接口测试用例的编写方式和功能测试类似,针对接口需要输入的参数,设计各种合理和不合理的数据进行测试,然后进行用例的评审。以下面这个需求为例,编写测试用例: ![](https://img.kancloud.cn/c5/5c/c55c9ee698a36d5aa01a79508eaf75d1_782x526.png) > > 测试用例: ![](https://img.kancloud.cn/dc/69/dc6985875ea4cfecd2855dbf61222f9d_1011x294.png) * 第四步:构造接口测试请求并执行 接口测试的工具很多,比如 postman、RESTClient、jmeter、loadrunner、SoapUI等,本人首推的测试工具是postman和jmeter 1)、Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。 jmeter是一款100%纯Java编写的免费开源的工具,它主要用来做性能测试,相比loadrunner来说,它内存占用小,免费开源,轻巧方便、无需安装,越来越被大众所喜爱。