接口测试

接口测试

一、什么是接口

接口类型 description
内部接口 方法与方法之间,模块与模块之间的交互,程序内部抛出的接口。
调用对外包装的接口 例如时间穿梭,UG中台封装了时间穿梭方法,其他服务可以直接调用接口来进行时间穿梭实现。

1、常用接口采用方式:

  1. webService接口:是走soap协议通过http传输,request和response都是xml格式的,我们在测试的时候需要通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等;
  2. http API接口:是走http协议,通过路径来区分调用的方法,reques都是key-value形式的,response一般都是json串。有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等;
  3. https API接口:https并非是应用层的一种新协议,只是http通信接口部分用SSL(Secure socket Layer)和TLS(Transport Layer Security)协议代替而已。
接口形式 优缺点分析
webService接口 返回的格式xml还需要解析麻烦,而且速度可能有降低(目前开发平台等都使用的http(get/post实现的)
http API接口 http协议时超文本传输协议(不安全)
https API接口 https是安全的超文本传输协议,是安全版的http协议,使用安全套接字层(SSL)进行信息交换。
注:https协议主要针对解决http协议以下不足:
  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方身份,应此可能遭遇伪装
  • 无法证明报文的完整性(即准确性),所以可能已遭篡改

2、接口组成

首先,接口文档应该包含以下内容:
  • 接口说明
  • 调用路径(URL)
  • 请求方法(get\post)
  • 请求参数、参数类型、请求参数说明
  • 返回参数说明
由接口文档可知,接口至少应有请求地址、请求方法、请求参数(入参和出参)组成,部分接口有请求头header。
标头 (header):是服务器以HTTP协议传HTML资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔,一般存放cookie、token等信息。
!那么header和入参有什么区别?它们不都是发送到服务器的参数吗?
首先,它们确实都是发送到服务器里的参数,但它们是有区别的,header里存放的参数一般存放的是一些校验信息,比如cookie,它是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器,然后把请求地址连同入参一起发送到服务器,然后服务器会根据地址和入参来返回出参。也就是说,服务器是先接受header信息进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的。

二、为什么要做接口测试

1、接口测试:

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

2、接口测试的必要性:

由于如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降;同时,接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求;从安全层面来说,现在很多系统前后端架构是分离的,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证;前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

三、如何做接口测试

1、接口测试目标:

  • 可能发现客户端没有发现的bug(那么也叫隐藏bug)
  • 及早爆出风险(保证质量正常上线)
  • 接口稳定了,前端随便改
  • 最重要检查系统安全性,稳定性,兼容性。(当前对接口的异常场景测试及兼容性测试关注度不够)

2、测试内容:

3、测试实现:

  1. 编写接口测试用例:
  • 分析出测试需求,并拿到开发提供的接口文档;
  • 从接口说明文档中整理出接口测试案例,里面要包括详细的入参和出参数据以及明确的格式和检查点;
  • 和开发一起对接口测试案例进行评审,注意接口的兼容性测试;
  • 准备接口测试案例中的入参和出参数据,并编写自动化case;
  1. 接口自动化测试实现:
  • 接口自动化使用场景:回归测试,冒烟测试(测试前置,开发自测),常用于自动化测试回归,之后可以考虑测试左移试运行;
  • 接口自动化编写:TODO:

4、持续集成

目前我们已经实现了单接口自动化(Tesla),主要应用于回归阶段,但是当前自动化bug拦截率不高。预计加入场景case,引入testng进行自动化建设:UG接口自动化建设 ,后续还需要加强自动化的程度,包括但不限于下面的内容:
  • 接口覆盖率:提高红包业务接口自动化覆盖率,最起码做到核心接口可进行有效测试;
  • 代码覆盖率:接口覆盖率搞上去后,结合开发代码向白盒下探,提高代码覆盖率(代码覆盖率并不是越高越好);
  • 结果校验:加强自动化校验能力,如数据库信息校验;
  • 维护机制:TODO,建立有效的维护机制,使自动化真的作用于测试保障过程中;
  • 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化;
  • 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等;
  • 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。

5、质量评估标准

  • 业务功能覆盖是否完整
  • 业务规则覆盖是否完整
  • 参数验证是否达到要求(边界、业务规则)
  • 接口异常场景覆盖是否完整
  • 接口覆盖率是否达到要求
  • 代码覆盖率是否达到要求
  • 性能指标是否满足要求
  • 安全指标是否满足要求
posted @ 2021-02-25 17:01  测试随笔📈  阅读(63)  评论(1编辑  收藏  举报