接口:一种是程序内部的接口,一种是系统对外的接口;
程序内部接口:方法与方法之间,模块与模块之间 的交互,程序内部抛出的接口,比如一个系统的登录接口,发帖模块,要发帖必须先登录,那么这两个模块就有交互;
系统对外接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会给你分享数据,他只能给你提供写好的方法来获取数据,你引用他提供的接口就能使用他写的方法,从而达到数据共享的目的;
接口分类:webservice接口;http api接口;
webservice接口:是走sopa协议通过http传输,请求报文和 返回报文都是xml格式,测试的时候是通过工具才能进行调用和测试;
http api接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get 和post等方法,这是最常用的两种请求方式;
接口测试前,先搞清楚前端和后端的概念:
前端:对于web端来说,我们使用的网页,打开的网站,这都是前端,这些都是html,css写的;对于app端来说,就是我们用的app,android,object-C(开发ios)开发的,它的作用就是显示页面,一些漂亮的页面与简单的校验,比如说非空校验;
后端:我们在页面上操作的时候,这些业务逻辑,功能,是由后端来实现的,后端与前端就是通过接口在交互;
接口测试概念:接口测试是测试系统组件间接口的;主要用于检测外部系统与系统之间及 内部各个子系统之间的交互点;测试的重点是检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系。
接口测试没有页面,通过接口规范文档的调用地址,请求参数,拼接报文,然后发送请求,检查返回结果;
接口测试的目的:更进一步提高产品质量;
接口测试必要性:1:可以发现很多页面操作发现不了的BUg;2:检查系统的异常处理能力,3:检查系统的安全性与稳定性;4:前端随便改变,接口测好了,后端不用变;
接口测试流程:需求评审,熟悉业务和需求;开发提供接口文档;编写接口测试用例;用例评审;提测后开始测试;提交测试报告;
接口规范文档:接口说明,调用url,请求方式(get、post),请求参数,参数类型,请求参数说明;返回参数说明;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
接口测试:
http接口:
1:接口请求报文拼接:
(1):url?param=value¶m2=value 这是最简单的一种,问号前面是请求url, 后面是请求的参数名和参数数值,多个参数用&来连接;
(2):如果 是 入参 json串的,那就不能拼接参数,需借助工具来完成,如 postman,jmeter;
get 和 post 请求:
get: 直接在浏览器中输入,在浏览器中直接能请求到的;
post: 需借助工具来发送;
两者区别:
1:get 使用url 或 cookie 传参 ; post 将数据放在 body 中;
2:get 的url 有长度限制;post 的数据可以非常大;
3:post 比get 安全,因为数据在地址栏上是不可见的;
4:一般get 请求用来获取数据;post 请求用来发送数据;
http 状态码:每发出一个http请求之后,都会有一个响应,会有一个状态码来标识这个请求是否成功,
200 2开头的都表示请求发送成功;
300 3开头是代表重定向,
400 代表客户端发送的请求有语法错误,401 代表访问的页面没有授权,403 表示没有权限访问这个页面,404表示没有这个页面,
500 5开头的代表服务器有异常,500 表示服务器内部异常,504表示服务器端超时,没有返回结果;
webservice 接口:
直接在soapui中导入webservice地址 或是 wsdl 文件,就可以看到这个webservice里面的所有接口,也有报文,直接填入参数调用看返回结果就行;
通用接口用例设计:
通过性验证:首先要确定这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果;
接口安全性: 1:绕过验证,比如购买一个商品,它的价格是300元,那在提交订单的时候,把这个商品的价格改为3元,后端有没有做验证;改为-3呢?
2:绕过身份授权,比如 修改商品信息,这应该是管理员才能修改,如果传一个普通用户,能不能修改成功?
3:参数是否加密,比如是登录接口,用户名与密码是不是加密,如果不加密,请求被拦截,信息就被获取了,加密规则是否容易破解了,
4:密码安全规则,密码的复杂程度校验;
异常验证:就是不按照接口文档的要求输入参数,来验证接口对异常情况的校验,如必填的参数不填,输入整数类型时传入字符串类型,长度是10,传入大于10位的,
总结三点: 必传 非不传,参数类型,入参长度。