接口测试是一种测试类型,又是一种测试方法,它是很多个领域测试工作的一部分,同时它又可以通过不同方式来执行;
功能测试
功能测试即我们常说的黑盒测试,传统意义上的黑盒测试即验证开发出来的产品是否满足产品提出的产品需求说明书,而接口实际上也是产品需求的一部分;
例如:
产品需求:客户端输入一个词,点击按钮,即按时间倒叙展示这个词相关的新闻;
功能实现:客户端将用户输入的词拼成http请求,发往服务端接口,接口查找了这个词有关的新闻,并且按时间倒叙拼接成json,回复给客户端,客户端按顺序展示。
这个例子里,中心需求 ≈ 接口功能
安全测试
经常听说的安全测试很大程度上也属于接口测试的一部分,因为接口相当于内部服务器和外界的桥梁,如果桥上没有警卫,那任何人都可以进到内部服务器,这里说的警卫其实就是接口的安全校验;
举个已经烂了的例子:
接口功能:接收用户输入的词,到数据库查询这个词的解释;
这里涉及到将用户输入的词拼成sql的过程,接口要做的不仅仅只拼接sql并执行,更重要的是过滤用户输入的异常字符串;
自动化测试
传统意义上的自动化是客户端通过框架自动执行黑盒case的过程,但接口测试同样可以自动化,看看下面的例子:
测试需求:服务端实现接收客户端输入的各种词语、句子、符号、单词等等信息,查询判断输入的类型、解释语句、或者判断这是个非法查询,客户端依据服务端返回的json展示结果。
这个需求需要非常多的输入case,比如各类短语、字符、全角、半角、空格、繁体、简体、韩语、日语等等,然而这些case有一些共同的检查点,比如:返回值要是json格式,一定要有类型字段、是否合法的bool值、如果合法的话要有解释语句内容;那么这个需求,我们就可以通过自动化来验证需求;我们只需要写好入参的case就好了;
性能测试
一般来说,性能测试即服务端接口的性能测试,这也是一个需求能否正常上线的重要关注点。
这里说的接口性能测试最重要的是下面两部分:
1、服务端能承受的最大压力;
2、正常负载时的稳定性;
单元测试
这个理由很简单,服务端接口也是码代码,也有不同的模块、类、函数,可以通过单测来保证那些服务端接口代码的底层函数的功能正确性,例如:解析json的函数、处理请求参数的函数、连接db的函数等等;