接口测试总结

从0到1,认识和熟悉接口测试。

1.接口

接口泛指实体把自己提供给外界的一种抽象化物(可以化另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。

人类与电脑等信息机器或程序之间的接口称为用户界面;电脑等信息机器硬件组件间的接口叫硬件接口;电脑等信息机器软件组件间的接口叫软件接口。这里主要讨论的也是和我们软件测试工程师最密切的软件接口。

2.接口分类

分类方式接口类别描述主要关注点
按功能程序内部接口方法与方法之间、模块与模块之间的交互,是程序内部抛出的接口。这类接口平常接触得可能相对更多一些,不同的模块部署在同一套服务器上并使用同样的数据库。接口间的逻辑控制关系
系统对外接口不同系统之间的接口。比如有时候想要从别的服务器上获取资源,目标服务器提供对外的接口,我们可以通过调用这个接口来访问对方的数据。各个系统是部署在不同服务器上,使用不同的数据库系统间接口的实现方式,例如接口文件类型、文件格式
按类型业务接口业务逻辑存在上下游关系。可能设计跨系统跨模块的逻辑控制以及方向操作测试难点是业务逻辑的分析,推荐使用路径覆盖的方式进行,同时要注意不同业务流下的正向、方向操作的测试
数据接口接口中存在数据上下游的关系测试重点在于数据本身,例如数据的准确性和安全性
按数据方向单向接口根据实现方式分为单向推和单向取两种,这两种方式都存在一个数据地址和相关的存取策略数据的文件格式和存取策略
双向接口系统或模块之间的数据双向流动。比如报文处理系统需要接收核心系统发来的数据,又要将处理结果返回给核心系统来往数据的关联性
按数据读写方式单独读写接口数据在接口中不仅是单向流动而且都是读或写的单独操作。例如模块与数据库之间的接口,属于单向接口的一种特殊方式接口的读写权限以及对冲突等异常的处理机制
既读又写接口此类一般是业务类接口,存在业务逻辑控制的要求业务逻辑以及读写数据的正确性和写入数据的正确性
按接口层级直接(联机)接口系统或者模块间的接口是直接联通的模式直接根据接口的特征进行分析
间接(非联机)接口系统间接口需要第三方中转后才会进行连接。比如综合报文系统和核心系统中间隔着一个ESB,第三方一般不会涉及到业务逻辑,经常是进行一些数据格式的转换操作需要分析中间层的处理方式是否合理,以及中间层异常时,系统的处理方式是否合理

3.接口测试

这里按照5W1H的分析方法来作说明。

1.定义与分类(what)

1.1 定义

接口测试是属于功能测试范畴,不同于界面上的手动测试,但只是测试对象不是界面元素而是接口,本质上也还是输入数据,发送请求,输出结果,检查结果的过程,也是通过不同的输入数据组合来实现的。

1.2 分类

根据测试的内容可以分为:

模块接口测试——也就是常说的集成测试;

数据库接口测试——数据交换的准确性和安全性测试;

web接口测试——webservice接口测试和http api接口测试,webservice走http协议,请求报文和返回报文都是xml格式;http api接口走http协议,返回报文一般为json格式。

2.为什么做接口测试(why)

  • 弥补传统UI测试的不足

很多系统没有界面,只有接口功能,不能进行UI测试;

有些服务端的功能在UI上没有覆盖到;

UI上不能直接看出是否做了有些必要的异常处理。

  • 保证安全性

只依赖前端进行限制不足以满足系统的安全需求,需要在后端也加以控制,于是就要对接口进行验证;

前后端传输、日志打印等信息是否加密也需要验证

  • 提高投入产出比

相对单元测试比较稳定、可靠、快速,相对UI自动化变更少,用例易于维护。较容易实现自动化持续集成,可以降低人工回归测试的人力和时间成本,有助于版本快速迭代;

降低构造异常场景的人力和时间成本,方便快速检查系统的安全性、稳定性以及对异常的处理能力

  • 提高团队工作效率

由于在接口功能代码搞定之后就可以测试,不需要等前端页面完全写好,因此测试工作能够早点介入,能节省工作时间

3.接口测试的执行者(who)

通常开发人员将接口文档写好后,由测试人员来对接口进行测试。有些团队里接口的性能测试可能会是开发人员自测,毕竟开发对自己写的接口比较熟悉,而且优化起来会更直接方便。

4.接口测试的时间段(when)

4.1 前期准备

主要是使测试所需的条件尽可能充分:

  • 了解系统以及内部各个组件之间的业务逻辑交互,了解接口的I/O;

  • 选择好合适的测试手段:是采用postman、jmeter等工具,还是编写测试代码,亦或结合进行;

  • 了解协议的基本内容:常用的协议类型、请求和响应的构成等;

  • 熟悉接口关联的数据在数据库中的位置,能用基础数据库操作命令获取相关数据;

  • 知悉一些接口相关的典型问题,如:传入参数处理不当,导致程序crash类型溢出,导致数据读出和写入不一致;状态处理不当,导致逻辑出现混乱,逻辑校验不完善。

4.2 常见场景

接口测试活动常常在这些场景中发生:

  • 测试或开发定位问题时,想要调用某个接口查看响应是否正常;
  • 手工测试某个功能点时,需要一个订单号(或者其他类型数据),可以通过顺序调用多个接口实现下单流程;
  • 开始上线测试之前,可以先检测一下系统的所有接口是否工作正常,确认正常后再开始手工测试;
  • 开发提交代码前检测新的代码对系统已有接口是否产生影响;

5.接口测试在哪测哪些(where)

5.1 在哪进行

接口测试的载体很多,包括各式各样的工具、框架、平台等,具体如何选择需要考虑测试周期、学习成本、后续用例或脚本维护等实际情况。

  • 轻量级工具:postman、jmeter、soupUI等,简单实用;
  • 高级工具:jmeter、python的request库、TestNG等,功能强大,拓展丰富,包括但不限于多种协议支持、前置条件、后置条件、文件读取、检查点、结果报告;
  • 框架:jmeter+Ant+Jenkins 或 TestNG+Maven 或 request+HTMLreport+Jenkins等比较流行的框架;
  • 平台:涉及到执行代理、执行引擎、协议支持、数据读写、任务分发调度、结果收集、集成CI/CD等功能,实现的技术要求较高;

5.2 测试范围

包括但不限于:

  • 业务功能测试:正常场景+异常场景
  • 边界分析测试:业务边界值分析、输入输出参数边界值分析
  • 参数组合测试
  • 安全测试:敏感信息加密、SQL注入等
  • 性能测试:响应时间、吞吐量、并发数、占用资源率
  • 异常情况测试:并发测试、分布式测试、事务测试、环境异常、大数据量测试

6.如何进行接口测试(how)

6.1 流程步骤

在需求评审阶段要熟悉业务和具体的测试需求;

开发提供相关接口文档或者测试人员自己抓包分析,根据接口信息和接口测试范围设计并编写测试用例(方法也是UI功能测试的那些:等价类划分、边界值划分、错误推断等),理论上对于单个接口需要覆盖到所有正常和异常分支;

用例评审;

转测后执行测试用例,验证响应结果(查看状态码、响应报文是否含有关键信息、响应报文关键字段是否存在且值正确、结合数据库进行比对正误),涉及中间件处接口的测试,还需关注系统日志中有无错误;

追踪bug,输出测试报告

6.2 测试的原则

  • 要明确接口实现的是什么功能,实际实现的功能与之是否一致;
  • 测试数据量较多的情况下,采取数据驱动模式较为合适,后续沿用方便点;
  • 先单接口测试,再多接口测试;
  • 测试完成后,需对脏数据处理
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rainbow之星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值