接口测试相关知识

Posted 刘某刘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试相关知识相关的知识,希望对你有一定的参考价值。

到底什么是接口?

一般来说接口有两种,一种是程序内部的接口,一种是系统对外的接口。

广义来说,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;再小到一个类提供的方法;都可以理解为接口

系统对外的接口

如果我们要从网站或服务器上获取资源或信息,网站肯定不会把数据库共享给你,它只会给你提供一个写好的方法来获取数据,我们通过引用它提供的接口就能获取数据

程序内部的接口

它是方法与方法之间,模块与模块之间的交互,也是程序内部抛出的接口。比如一个web项目,有登录、新增,修改,删除等等,那么这几个模块会有交互,会抛出一个接口,供内部系统进行调用

接口的组成有哪些?

一个完整的接口应该包含以下内容:

1. 接口说明

2. 调用的url

3. 请求方法(get\post)

4. 请求参数、参数类型、请求参数说明

5. 返回参数说明

header是服务器以HTTP协议传html资料到浏览器前所送出的字串,一般存放cookie、token等信息

常见的接口类型

webService接口

它使用soap协议并通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候通过工具才能进行调用。可以使用的工具有SoapUI、jmeter

 

http-api接口

它使用http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、jmeter等

前端和后端

前端

咱们使用的网页,打开的网站,都是前端。包括Web页面的结构、Web的外观视觉表现以及Web层面的交互实现;

后端

我们在页面上进行操作的时候,这些业务逻辑、功能,比如说新增,修改,删除这些功能是由后端来实现的。后端更多的是与数据库进行交互去处理相应的业务逻辑。需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等

前端和后端通过接口进行交互。前端页面通过调用后端接口来实现功能、数据的存取,将数据展现在用户面前

接口测试定义

1) 接口测试是测试系统组件之间接口的一种测试方法

2) 它用于检测外部系统与系统之间以及系统内部各个子系统之间的交互

3) 重点是要检查数据的交换,以及系统间的相互逻辑依赖关系等

4) 接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求

接口测试意义

1.系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以要做接口测试

2.接口测试相对容易实现。且接口自动化相对UI自动化也较稳定。减少人工回归测试人力成本与时间,缩短测试周期,支持快速迭代。

3.由于很多系统前后端是分离的,所以从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端很容易), 需要后端也进行校验,在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如钱,身份信息等。

接口测试的价值

 1. 更早发现问题

测试应该更早的介入到项目开发中,因为越早的发现 bug,修复的成本越低。然而功能测试必须要等到系统提供可测试的界面才能对系统进行测试。而接口测试可以功能界面开发出来之前对系统进行测试。系统接口是上层功能的基础,接口测试可以更早更低成本的发现和解决问题。然而,在实际的开发过程中,开发人员并没有充足的时间去编写单元测试,并且他们往往对自己编写的代码迷之自信,不愿意花时间在编写单元测试上。这个时候接口测试的作用就会变得更加重要。

接口测试常见请求

GET和POST请求

    如果是get请求的话,直接在浏览器里输入就可以,只要在浏览器里面直接能请求到的,都是get请求,如果是post的请求的话就得借助工具来发送。

GET请求和POST的区别

    1、GET使用URL或Cookie传参。而POST将数据放在BODY中。

    2、GET的URL会有长度上的限制,则POST的数据则可以非常大。

    4、一般get请求用来获取数据,post请求用来发送数据。

接口测试常见问题

(1)传入参数处理不当,导致程序异常; 

(2)类型溢出,导致数据读出和写入不一致;

(3)因对象权限未进行校验,可以访问其他用户敏感信息;

(4)状态处理不当,导致逻辑出现错乱;

(5)逻辑校验不完善,可利用漏洞获取非正当利益等

接口用例设计

 

一个接口通常是有输入输出的,输入就是我们常见的入参,输出则时有时无。调用相关接口,接口会执行相关处理逻辑。

接口测试的用例设计,主要从输入和接口处理两方面考虑:

1)针对输入,可按照参数类型进行设计;

2)针对接口处理,可按照逻辑进行用例设计;

3)针对输出,可根据结果进行分析设计

针对输入设计

 

对于接口来说,输入就是入参。常见参数类型有:

(1)数值型(int,long,float,double等)

(2)字符串类型

(3)数组或链表

(4)结构体

数值型

数值型的参数主要考虑以下几个方面设计

 

 

可能出现的问题和风险

传入非特定类型程序异常退出

超长字符未进行处理,导致存储、显示等异常

其他用户可见设置的敏感字

 

数组或链表类型

参数类型为数组或链表时,用例可以考虑

 

 

例如批量提交任务的接口,参数用例设计考虑:

正常取值:1-5个权限,范围外:6个权限;

边界值:1-35的边界值,请求允许最大最小值;

特殊值:0个;

合法ID和不合法的;

重复的ID等。

可能存在的问题和风险:

0个item时程序异常退出;

重复的item处理时未去重导致结果异常等。

如下图用户登录接口文档:


以上是关于接口测试相关知识的主要内容,如果未能解决你的问题,请参考以下文章

扫盲接口测试,有些知识是需要了解和掌握的(建议收藏)

接口测试全流程

接口测试测试的原则用例设计流程等基础知识

测试必备之Java知识———— 线程相关

接口测试全流程扫盲

什么是接口测试?怎样做接口测试?