接口的概念&特点:
- 接口的概念:软件由许多模块构成,软件的功能往往不是某个单独的模块来实现的,而是由模块跟模块之间协作共同实现某个功能,这种模块间的的交互就是通过接口来实现的,我们可以理解为接口就是自己提供给外界的一种抽象物,或者说是一种沟通的协议。
- 接口测试的本质:其实所谓的接口测试本质就是功能测试,只不过我们采用测试接口的方式来测试功能。我们对接口的操作最终会发送到数据库,也就是对数据库进行一些列增、删、改、查的操作。
- 接口测试的优势: 接口测试的优势在于,当一个页面还未开发完成的时候,测试可以提前介入,测试软件的功能。接口测试可以发现一些页面操作发现不了的问题,测试介入的越早,解决bug的成本越低。
接口的分类:
- 依据开放性划分
- 外部接口:也就是所谓的openapi,是软件对用户可见的接口(包括对应发布的接口文档),用户可以通过工具调取相应接口实现需要的功能。测试人员一般都是测试openapi 。
- 内部接口:内部模块间的接口,用户不可见,公司内部人员可见的接口。
- 依据类型划分
- webService(SOAP)接口:走soap协议,通过http传输,请求的报文和返回的报文都是xml格式的,需要通过工具进行调用和测试。
- Http API接口:目前较常见的接口,走http协议,通过路径来区分调用的方法,请求的报文都是key-value形式的,返回的报文一般都是json串,包括的方法有post/get/put/delete/patch等。
延伸概念:
- 前端(客户端):负责貌美如花,用户能看的到的都是前端,前台的编程语言有:html,css,js等。
- 后端(服务端):负责养家糊口,功能主要靠后端实现的,后台的编程语言有:python,java,php,c,c++等。
- 前后端的关系:前后端通过接口交互,采用通用的数据类型(json:所有语言可以解析),接口返回的都是json体,server端测试主要指的就是接口测试,测试依据接口文档写脚本测试。
- json串的组成 :key + value ,android开发就是java开发的一个分支,iso采用object-c编译的。
- 抓包:就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,为了提供安全性,许都公司的协议都采用https而不是http。
- 接口签名:所谓接口签名就是给接口做了加密处理,防止别人恶意篡改请求,它是一个加密(MD5)之后的字符串。
接口文档包含的内容:
- URL
- 接口说明
- 请求方式:post/get/delete/put
- 入参
- 出参
- 请求、返回的样例,状态码说明。
post请求和get请求的区别:
- get请求:浏览器输入url可以直接发送请求,参数都在url里面或者cookie里面,一般用来获取数据,多见于查询接口。
- post请求:参数都在请求体里面,一般包含请求头和请求体,post请求比get请求安全,get请求长度有限制,post无限制,一般是发送数据,多见于创建接口。
常见的状态码:
- 200:代表请求已正常发送和接收。
- 300:3开头的代表重定向,最常见的就是302,请求被重定向到其他地址。
- 例子:京东商城里面,用户在没登录的情况下先添加商品到购物车,下单后跳转到登录界面,再跳转到下单页面,就用到了重定向。
- 400:400代表请求有语法错误,一般是请求体有误;401代表访问的页面没有授权,用户鉴权失败;403代表没有权限访问页面,404代表页面不存在,多半是url有误。
- 500:5开头的代表服务器异常,500代表服务器内部错误,一般服务端有问题。
接口测试用例设计:
- 通用性测试:
- 正常测试:正确的url+请求方式+请求体等组合到一起。
- 异常测试:根据参数类型,是否必填,长度等进行异常测试。
- 参数组合:
- op1 : 新增:name ,班级,电话三个必选。
- op2 : 修改学生,name ,电话三选一
- 接口安全:
- 绕过验证:修改价格
- 绕过身份鉴权
- 参数是否加密
- 密码安全规则
cookie跟session的区别:
- cookie :用户登录后,存在本地的一个键值对。
- session:用户登录后,存在服务端的一个键值对,相当于token 。