一、概述
1.1 什么是接口?
从外观来区分:硬件、软件接口
硬件接口:电脑等信息机器硬件组件间的接口
软件接口:电脑等信息机器软件组件间的接口,一般分为内部接口和调用对外包装的接口
内部接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口。一般是指系统内部的接口(包括:上层服务与下层服务接口、同级接口。)
例如:下订单网购物品,首先你需要登录,然后调用订单接口,两个模块有交互、相互之间的调用,就属于内部接口
对外包装的接口:两个系统之间的调用。也就是系统外部的接口
例如:qq充值服务,充值需要支付宝或银行卡充值,调用支付宝/银行卡支付接口,并且支付成功后,qq检查到充值金额成功,金额才到qq账号,而qq内部充值是没有金额汇入的,这种充值是无意义的。所以这种就是对外包装的接口。
1.2 接口测试
接口测试:是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
测试的重点:是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
1.3 接口测试
1.web接口测试
2.应用程序接口(API, application programming interface)测试---平时常说的接口测试
3.数据库测试。
实际上意义就是UI界面到数据库之间,数据流经过的所有过程。
接口分类:
1、webService接口:是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等;
2、http api接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等;
1.4 接口测试工具
抓包工具:fiddler、Charles、wireshark等
接口工具:postman、jmeter、loadrunner、soapUI
Python代码编写、java编写
1.5 接口文档
接口文档一般都会由开发或者对应的技术负责人员提供,里面会注明接口相关的地址、参数类型、方法、输入、输出等信息,
如果没有,可以询问研发、或者手动抓包查看接口(但不靠谱)
接口文档八要素:
封面:封面最好是本公司规定的封面,有logo,内容标题,版本号,公司名称,文档产生日期;
修订历史:表格形式较好些,包括:版本、修订说明、修订日期、修订人、审核时间审核人等;
接口信息:接口调用方式,常用的GET/POST方式,接口地址;
功能描述:简洁清晰的描述接口功能,比如:接口获取的信息不包括哪些;
接口参数说明:每个参数都要和实际中调用的一样,包括大小写;参数的含义言简意赅的说明,格式,是string 还是int 还是long等格式;
说明部分,说明参数值是需要哪里提供,并详细说明参数怎么生成的,例如时间戳,是哪个时间段的,参数是否必填,一些参数是必须要有的,有些是可选参数等;
返回值说明:
①最好有一个模板返回值,并说明每个返回参数的意义;
②提供一个真实的调用接口,真实的返回值;
调用限制,安全方面:加密方式,或者自己公司一个特殊的加密过程,只要双方采用一致的加密算法就可以调用接口,保证了接口调用的安全性,比如常见的md5;
文档维护:文档在维护的时候,如有修改一定要写上修改日期,修改人,对大的修改要有版本号变更;
1.6 接口测试用例设计
接口测试用例要比功能测试用例多一些,但大体是一样的
1.覆盖所有参数,正向用例
2.覆盖所有必填参数,正向用例
3.某一必填参数为空,逆向用例
4.必填参数基础上,少传一个参数
5.多传一个参数,逆向用例
6.必填参数数据类型错误、数据值错误、逆向用例(例如整型变字符串)
7.任意组合可选参数正向用例
8.与业务逻辑相关的,用户身份认证为空或者错误,逆向用例
9.字段的唯一校验,如插入数据字段不能重复,发送两次请求,查看第二次返回结果
1.7 接口测试测试说明
1. 单一接口测试
单一接口测试主要测试的是输入输出值,一些具有业务意义的值需要特别测试(例如,1和2分别代表两个测试场景,那么久不能够把他们看成是等价类,需要分开测试)
2. 组合接口测试
组合接口测试主要是通过组合多个单一接口,来测试一个业务场景
Example:测试购物网站的一个下单的功能,那么因为在下单之前还有一些流程,所以要测试一个场景。
测试:搜索商品 --> 选中商品 --> 添加进购物车 --> 提交订单 -->支付
(提交订单时还涉及到地址的选取等)
[注:涉及到如果使用从cookie或者session在本例中的区别:如果使用cookie加入购物车,那么换一台电脑购物车里的商品就不存在了,但如果使用的是session,购物车里面的东西就一直存在,即:cookie是本机作用的,session不止于本机作用]
3. 结构检查
(1)检查返回值的结构是否正确,如是json类型还是xml类型的数据
(2)字段名称是否正确等
二、协议及状态码
2.1 HTTP协议
2.1.1 概述
HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。客户端连上 web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式
2.1.2 HTTP请求的细节——请求行
请求行中的GET称之为请求方式,请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT,常用的有: GET、 POST
用户如果没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。
不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上:如果请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:GET/mail/1.html?name=abc&password=xyz HTTP/1.1
GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。
如果请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。
2.1.3 报文
请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语,可选的响应首部字段以及实体主体构成
2.2 状态码
HTTP 状态码是用以表示网页服务器 HTTP 响应状态的3位数字代码。 所有的状态码的第一个数字代表了响应的五种状态之一:
1xx:代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束;
2xx:代表请求已成功被服务器接收、理解、并接受;
3xx:代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的Location域中指明;
4xx:代表了客户端看起来可能发生了错误,妨碍了服务器的处理。
5xx:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源 无法完成对请求的处理。
常见状态码有:
200: 请求已经成功,请求所希望的响应头或者数据体将随着此响应返回 ;
202: 服务器已接受请求,但尚未处理。
204: 服务器成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息;
301:永久重定向;
302:临时重定向;
304: 被请求的资源内容没有发生更改;
400:Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求;
401 Unauthorized 请求未授权;
403 Forbidden 禁止访问;
404: Not Found 请求失败,请求所希望得到的资源未被在服务器上发现;
408: 请求超时。客户端可以再次提交这一请求而无需任何修改;
500: 服务器内部错误,无法处理请求 ;
502: 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效响应。
503:由于临时的服务器维护或者过载,服务器当前无法处理请求。
三、一些免费接口测试网站
①免费的接口测试网站:https://www.juhe.cn/
这里提供一些可免费使用的接口,注册后,申请接口,这个好像有限制一个还是两个,申请后,就可以查看接口的接口文档,可以进行相应的接口测试,可以用这个网站了解一下整个流程。
②http://www.webxml.com.cn/zh_cn/index.aspx
这个网站也可以进行接口测试,详细你们去百度哈,这里不详细写了,都忘记好多了
总结:工具方面的使用,单独写,这些内容不全,后期补