当前位置:文档之家› 接口测试概念

接口测试概念

一:到底什么是接口?
一般来说接口有两种,一种是程序内部的接口,一种是系统对外的接口。

广义来说,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;再小到一个类提供的方法;都可以理解为接口
系统对外的接口
如果我们要从网站或服务器上获取资源或信息,网站肯定不会把数据库共享给你,它只会给你提供一个写好的方法来获取数据,我们通过引用它提供的接口就能获取数据
程序内部的接口
它是方法与方法之间,模块与模块之间的交互,也是程序内部抛出的接口。

比如一个web 项目,有登录、新增,修改,删除等等,那么这几个模块会有交互,会抛出一个接口,供内部系统进行调用
二:接口的组成有哪些?
一个完整的接口应该包含以下内容:
1.接口说明
2.调用的url
3.请求方法(get\post)
4.请求参数、参数类型、请求参数说明
5.返回参数说明
三:常见的接口类型
webService接口
它使用soap协议并通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候通过工具才能进行调用。

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

可以使用的工具有postman、jmeter等
四:前端和后端
前端
咱们使用的网页,打开的网站,都是前端。

包括Web页面的结构、Web的外观视觉表现以及Web层面的交互实现;
后端
我们在页面上进行操作的时候,这些业务逻辑、功能,比如说新增,修改,删除这些功能是由后端来实现的。

后端更多的是与数据库进行交互去处理相应的业务逻辑。

需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等
前端和后端通过接口进行交互。

前端页面通过调用后端接口来实现功能、数据的存取,将数据展现在用户面前
五:接口测试的价值
1.更早发现问题
测试应该更早的介入到项目开发中,因为越早的发现bug,修复的成本越低。

然而功能测试必须要等到系统提供可测试的界面才能对系统进行测试。

而接口测试可以功能界面开发出来之前对系统进行测试。

系统接口是上层功能的基础,接口测试可以更早更低成本的发现和解决问题。

然而,在实际的开发过程中,开发人员并没有充足的时间去编写单元测试,并且他们往往对自己编写的代码迷之自信,不愿意花时间在编写单元测试上。

这个时候接口测试的
作用就会变得更加重要。

2.缩短产品研发周期
对于产品研发周期来说,如果将所有测试工作都集中在功能测试阶段。

那么测试的问题和修复周期就会变长。

因为测试可以更早的介入产品开发中,所以,可以有效的控制功能阶段bug 的数量;从而有效的缩短产品开发周期。

3.发现更底层的问题
系统的有些底层逻辑是在UI功能测试中不太容易触发的,那么这些逻辑可能会存在问题。

接口测试可以更容易更全面的测试到这些底层的逻辑。

4.检查服务器的异常处理能力
通常把前端的验证称为弱验证,因为它很容易被绕过,这个时候如果只站在功能的层面进行测试,就很难发现一些安全的问题。

不以功能为入口的接口测试就会很容易的验证这些异常情况。

六:接口测试常见请求
GET和POST请求
如果是get请求的话,直接在浏览器里输入就可以,只要在浏览器里面直接能请求到的,都是get请求,如果是post的请求的话就得借助工具来发送。

GET请求和POST的区别
1、GET使用URL或Cookie传参。

而POST将数据放在BODY中。

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

3、POST比GET安全,因为数据在地址栏上不可见。

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

七:接口测试流程
接口测试的流程其实和功能测试的流程类似,它依赖的主要对象是需求说明书,所以,最初
流程是参与需求评审
需求确定以后,开发会根据需求进行接口设计,会给出接口定义。

在开发设计过程中,测试可以给出一些针对设计的建议,提高可测性,针对需求及设计,指定测试计划。

在开发完成接口定义之后,需要根据需求文档及接口定义设计测试用例与导图。

测试用例设计主要从业务场景,功能,以及异常测试几个方面考虑。

测试用例设计完成后,针对测试用例进行评审。

测试人员可以提前介入开发的接口联调阶段
在项目结束后,需要对每个项目进行总结
八:面试题:平常你是怎么测试接口的(接口测试用例设计思路)?
通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。

参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,
商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。

接口安全:
1、绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?
2、绕过身份授权,比如说修改商品信息接口,那必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,我传一个其他的卖家能不能修改成功
3、参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。

4、密码安全规则,密码的复杂程度校验
异常验证:
所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验。

比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来,其实也就这三种,必传非必传、参数类型、入参长度。

性能测试
接口并发情况,如上面提到的:一个账号,同时(大于2个请求)对最后一个商品下单,或不同账号,对最后一个商品下单
接口响应时间,响应时间太长了,肯定需要优化,一般都是毫秒级别。

相关主题