1.接口分类
接口分为两种,一种是程序内部的接口,另一种是系统对外的接口.
外部接口:从别的网站或服务器获取资源信息,调用别人写好的方法,来获取数据,通过引用别人提供的接口,就能使用它写好的方法,从而达到数据贡献的目的,如app调用接口,二手项目调用支付宝接口,调用微信接口等.
程序内部接口:方法与方法直接,模块与模块直接进行交互,程序内部抛出的接口,eg:蜂鸟网论坛发帖,发帖时,必须登录,调用用户登录接口,蜂鸟网的登录接口就是程序内部的接口.
接口分类:webservice&http api(常用)
webservice :走的是soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候通常用工具进行调用测试.
http api :走http协议,通过路径区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法.
报文:报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块
通常url的构成方式:域名/路径?参数
json串表达方式{"key":"value"}
*cookie和session:
cookie:通俗理解,就是存在本地的键值对
session:通俗理解,就是存在服务器的键值对
2.接口测试必要性
可以发现很多前台页面发现不到的bug
检查系统的异常处理能力
检查系统的安全,稳定性
前端改动,不影响接测试
3.接口测试流程
接口测试流程同功能测试流程一样:
需求评审,熟悉业务和需求
开发提供接口文档
编写接口测试用例
用例评审
提测后开始测试,提交测试报告
4.接口测试文档包含内容
接口说明
调用url
请求方法(get/post)
请求参数,参数类型,请求参数说明
返回参数说明
如何测试http接口
url?参数1=value&参数2=value
这种是最简单的一种,问号前面是请求url,后面是请求的参数名和参数值,多个参数用&来连接
例如:https://api.douban.com/v2/book/search?q=邹伟伟
还有一种就是入参是json串的,那就不能拼接参数了,需要借助工具来完成比如postman
get&post
get请求的话,直接在浏览器里输入后回车,直接请求,只要在浏览器里面直接能请求到的,都是get请求
如果是post的请求的话,就不行了,就得借助工具来发送。
GET请求和POST请求的区别:
1、GET使用URL或Cookie传参。而POST将数据放在BODY中。
2、GET的URL会有长度上的限制,则POST的数据则可以非常大。
3、POST比GET安全,因为数据在地址栏上不可见。
4、一般get请求用来获取数据,post请求用来发送数据。(get 比如打开一个网页,打开蜂鸟论坛,后面都会带有参数,就是一个最基本的get请求.)
其实上面这几点,只有最后一点说的是比较靠谱的,第一点post请求也可以把数据放到url里面,get请求其实也没长度限制,post请求看起来参数是隐式的,稍微安全那么一些些,但是那只是对于小白用户来说的,就算post请求,你通过抓包也是可以抓到参数的。所以上面这些面试的时候你说出来就行了
http状态码
1XX:指示信息--表示请求已接受,继续处理.
2XX:成功---表示请求已经被成功,接收,理解,接受
3XX:重定向---要完成请求必须进行更进一步的操作
4XX:客户端错误---请求有语法错误或请求无法实现.
5XX:服务器错误---服务器未能实现合法的请求
接口用例设计
一.通过性验证:首席保证这个接口功能是好用的,也就是正常通过性能测试,按照接口文档上的参数,进行正常传入,是否可以正确的返回参数.
二.参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功
三.接口安全:
1、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功
3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
4、密码安全规则,密码的复杂程度校验
四.异常验证:
异常的,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。
接口用例包含的内容
咱们测试接口的话,肯定要写测试用例,写测试用例的话,就要有一个用例模板,那需要有哪些字段呢?
1、项目是哪个项目的
2、模块这个接口是属于哪个功能模块的
3、用例id
4、接口名称
5、用例标题用例是干嘛的
6、请求方式GET/POST
7、请求url,url地址
8、请求参数
9、前置条件有依赖的时候,比如说要测登录失败3次的
10、结果验证预期结果
11、请求报文
12、返回报文
13、测试结果通过/失败
14、测试人员