接口测试相关知识及相关接口测试工具使用
一. 什么是接口?
按照百度百科的定义
接口(硬件类接口)是指同一计算机不同功能层之间的通信规则称为接口。
接口(软件类接口)是指对协定进行定义的引用类型。其他类型实现接口,以保证它们支持某些操作。接口指定必须由类提供的成员或实现它的其他接口。与类相似,接口可以包含方法、属性、索引器和事件作为成员。
本文着重讨论软件类的接口,一般来说软件类的接口有两种,一种是程序内部的接口,一种是系统对外的接口。无论是内部还是外部,接口的作用就是从数据库(或者文件服务器等数据存放位置)里面取数据或者插入数据。
最常用的两种接口就是webservice接口和http api接口:
webservice接口是走soap协议通过http传输,请求报文和返回报文都是xml格式
http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式,返回报文格式一般都是json串
二.什么是前端和后端?
一般网站的前端是与用户直接交互的部分,包括你在浏览网页时接触的所有视觉内容--从字体到颜色,以及下拉菜单和侧边栏。这些视觉内容,都是由浏览器解析、处理、渲染相关 HTML、CSS、Java 文件后呈现而来。
而后端是为了让服务器、应用、数据库能够彼此交互。
前端和后端的交互就是通过接口来实现的。
三.什么是接口测试?为什么要做接口测试?
按照百度百科的定义
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之 间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程, 以及系统间的相互逻辑依赖关系等。
接口测试就是功能测试,它比功能测试还简单。接口测试和功能测试区别不大,测接口是为了测试很多前端测试不到的情况,例如买东西提交订单,可以修改提交金额测试后端是否有验证,这个是普通页面功能测试无法验证的。
接口测试的必要性
1、可以发现很多在页面上操作发现不了的bug;
2、检查系统的异常处理能力;
3、检查系统的安全性、稳定性;
4、前端随便变,接口测好了,后端不用变。
四.什么是接口文档?
既然我们要测试接口,那我们根据什么来测试呢? 那就是接口规范文档,也是我们测试最重要的一个依据。接口文档是干嘛的呢,接口文档说简单点,就是这个接口的使用文档。
接口文档至少包括:
1、接口说明
2、调用url
3、请求方法(get\post等)
4、请求参数、参数类型、请求参数说明
5、返回参数说明
五.怎么调用接口?
有了接口文档,那么我们就要根据接口文档来拼接参数调用接口,那么怎么调用呢 ?
接口请求报文拼接
1、url?param=value¶m2=value 这种是最简单的一种,问号前面是请求url,后面是请求的参数名和参数值,多个参数用&来连接
2、还有一种就是入参是json串的,那就不能拼接参数了,需要借助工具来完成比如postman、jmeter等工具
如果是get请求的话,直接在浏览器里输入就行了,如果是post的请求的话,就不行了,就得借助工具来发送。
GET请求和POST请求的区别:
1.get请求只有请求头,没有请求体,它的参数只能写在URL里面
2.get请求一般用来向服务器获取数据,post一般用来向服务器发送数据(实际使用中没有区别)
3.get请求有参数长度限制,post请求没有(现在已经没有限制了)
4.get请求没有post请求安全(一样不安全,这个一般是指get请求会明文发送参数内容,但通过抓包手段,post请求一样可以查看到参数内容)
六.怎么设计接口测试用例
通用接口用例设计
通过性验证:
首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。
接口安全:
1、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证。
2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户的cookie,能不能修改成功,我传一个其他的卖家能不能修改成功?
3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
4、密码安全规则,密码的复杂程度校验。
异常验证:
异常的,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。
七.接口测试用例模板,需要有哪些字段呢?
1、项目 是哪个项目的
2、模块 这个接口是属于哪个功能模块的
3、用例id
4、接口名称
5、用例标题 用例是干嘛的
6、请求方式 GET/POST
7、请求url url地址
8、请求参数
9、前置条件 有依赖的时候,比如说要测登录失败3次的
10、结果验证 预期结果
11、请求报文
12、返回报文
13、测试结果 通过/失败
14、测试人员
八、工具使用
前面说到了一般get请求可以直接用浏览器来进行测试,但是post请求就需要用到工具了,下面介绍两个工具的常见用法:
1.postman
get请求
post请求 带headers传送
传送json串
上传文件
2.jmeter
get请求
post请求
post json串
上传文件
3.使用Chrome浏览器查看接口信息
可以使用Chrome浏览器的检查工具,来查看当前浏览的页面的接口信息。
使用方法,打开页面,然后右键选择检查,在弹出的窗口中选择Network页签,然后选择XHR(该选择只包含接口相关的请求,如果是All请求的话会包含图片、js等静态页面的所有请求),通过左下方的name列表,可以看到相关的接口请求,右下的页签里可以看到请求和返回相关的内容,如请求的方法、URL、headers,以及返回的内容等等,通过相关信息就可以对相关接口进行测试了。