玖叶教程网

前端编程开发入门

干货满满丨接口测试最全概述:定义、分类、……、如何学习

麻省理工校训:Mens et Manus (Mind and Hand)——动手,动脑

如果你在接口测试时出现问题,按上面的话走就没问题。

接口测试的定义

接口测试是测试系统组件间接口的一种测试。主要用于检测外部系统与系统之间以及内部各个子系统间的交互点。

接口测试作为集成测试的一部分,通过直接控制API来判断系统的功能性,可靠性,性能与安全性。API测试是没有界面的,执行在通讯层。API 测试在自动化测试中有着重要的地位,因为API一般是应用逻辑的主要接口,而GUI测试在敏捷开发和DevOps的快速迭代和频繁变更中很难维护。

接口测试分类

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

1.模块接口测试

模块接口测试是单元测试的基础。它主要测试模块的调用与返回。经常需要编写一些桩模块与驱动模块。

主要测试要点如下:

  • 检查接口返回的数据是否与预期结果一致。

  • 检查接口的容错性,假如传递数据的类型错误时是否可以处理。

  • 接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。

  • 接口的性能,接口处理数据的时间也是测试的一个方法。牵扯到内部就是算法与代码的优化。

  • 接口的安全性

2.WEB接口测试

web接口测试又可分为两类:服务器接口测试和外部接口测试。

服务器接口测试:是测试浏览器与服务器的接口。用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过http协议的get与post请求来实现前后端的数据传递。这也可认为是接口测试。

外部接口测试:这个很典型的例子就是第三方支付,比如在我们应用中在充流量时,交话费时,都会调用第三方支付接口。

主要测试要点如下:

  • 请求是否正确,默认请求成功是200,如果请求错误也能返回404、500等。

  • 检查返回数据的正确性与格式;json是一种非常常见的格式。

  • 接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。

  • 接口的性能,这直接影响用户的使用体验。

  • 接口测试工具

  • SOAPUI

  • JMeter

  • Grinder

  • Suds Python

在工作中主要应用SOAPUI与JMeter。SOAPUI对接口安全测试有比较好的支持。

接口测试流程

  1. 项目启动后,测试人员要尽早找到开发人员拿到接口测试文档

  2. 获取接口测试文档后,就可以进行接口用例的编写和调试

  3. 接口用例编写调试完成后,部署到持续集成的测试环境中

  4. 设定脚本运行频率,告警方式等基本参数,进行接口的日常监控。每日进行接口脚本的维护更新,接口异常的处理

接口测试的目的

  • 以保证系统的正确和稳定为核心,以持续集成为手段

  • 提高测试效率,提升用户体验,降低产品研发成本

测试用例设计与原则

因为在实际工作中测试的接口都是基于HTTP协议的,所以下面的测试用例及原则也是针对此类接口。

正面测试用例:

  • 覆盖所有的必选参数

  • 组合可选参数

  • 参数边界值

  • 如果参数的取值范围是枚举变量,需要覆盖所有枚举值

  • 还应考虑实际业务应用场景,去设计输入参数的组合。(这些用例可用来测试功能,作为SMOKE用例。也可将来用于压力测试模拟实际业务场景,但要注意保证用例的独立性,因为压力测试是多线程的。比如我们测试ACCOUNT 创建接口,NAME是不能重的,在写测试用例时,给NAME赋值时可以加一个时间戳, 这样用例在多线程并发测试时也不会有问题)

负面测试用例:

  • 空数据

  • 包含特殊的字符

  • 越界的数据

  • 错误的数据

验证点:

  • status code (正常情况下,所有请求都应该返回200)

  • 响应信息数据结构(目前大多数情况下,返回信息都是JSON, 我们应该验证相应的结构当数据信息发生改变时)

  • 验证结点的类型

  • 验证结点的值 (主要是针对固定的值或者值遵循某些规则,我们能知道预期的结果的)

对于列表,应该根据请求参数,也应该验证列表的长度是否与期望值一致

负面测试用例,应验证ERROR INFO是否与实际相匹配

测试原则

  • 测试应该是独立的、可读的、抗变的、可维护的,其实这也是所有自动测试应该遵循的原则

  • 每个测试用例都是独立的

  • 测试用例都是可重复运行的

    PS:这主要是说一些测试数据不能写死,不同的环境数据可能不同。在实际工作中,解决方案有二:自已创建所需要的数据,比如你要测试接口需要输入参数ACCOUNTID,你可以先调用创建ACCOUNT API, 然后从响应值拿到ACCOUNTID, 当你测试完你要测的接口后,再把新建的ACCOUNT删除,也就是说一个测试用例分了三步。另外一种方法就是读取数据库,从数据库获取数据,这种方法在测试开发与测试环境还OK,但如果测线上环境就比较困难了,因为我们不能随意更新上面的数据,也不能放过多的测试数据在上面。因此我个人比较推崇第一种方法,虽然增加开发用例的工作量,但一劳永逸)

  • 测试能被运行在不同的环境里

    PS:平常测试环境至少会分DEV/TEST/STAGING/ONLINE,我们在测试过程中,应该把域名,token/apikey等应放在一个变量里,当切换环境时,我们只需改变变量的值即可

  • 测试数据与业务相分离(测试数据包括参数接口数据/ 测试执行所需要的系统数据)

  • 尽量统一共用的测试环境变量

  • 测试完成后,要删除不必要的测试数据。

接口测试需要掌握的知识点

  • 了解系统及内部各个组件之间的业务逻辑交互;

  • 了解接口的I/O(input/output:输入输出);

  • 了解协议的基本内容,包括:通信原理、三次握手、常用的协议类型、报文构成、数据传输方式、常见的状态码、URL构成等;

  • 常用的接口测试工具,比如:jmeter、loadrunner、postman、soapUI等;

  • 数据库基础操作命令(检查数据入库、提取测试数据等);

  • 常见的字符类型,比如:char、varchar、text、int、float、datatime、string等;

如何学习这些技能

系统间业务交互逻辑:通过需求文档、流程图、思维导图、沟通等很多渠道和方式;

协议:推荐《图解http》这本书,内容生动,相对算是入门级的书籍,其他的还有《图解tcp、IP》等;

接口测试工具:好多的教学博客、相关问题解决方案、以及一些基于工具的书籍,当然,选择合适的书很重要;

数据库操作命令:学习网站(W3C、菜鸟教程)、教学博客,以及一些数据库相关书籍,入门级推荐:《mysql必知必会》、《oracle PL/SQL必知必会》等

字符类型:还是百度,有句话这么说:内事不决问百度,外事不决问Google


关注云测学院,为您提供每日国内外最新资讯、干货。

推荐文章:

行业丨技术新环境下测试行业的机遇在哪里?

技能丨撰写bug报告后仍需要思考的10个问题

评价丨看测试团队专不专业,这一点就够了!

休闲丨特意设计出这么个bug的人,可能本身就是个bug

敏捷丨敏捷开发中提高你代码阅读技能的7种技巧

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言