一篇文章入门API测试

什么是API

API是Application Programming Interface的简写。

实现了两个或多个独立系统或模块间的通信和数据交换能力。

什么是API测试

API测试是不同于UI级自动化测试,其主要关注在系统架构的业务逻辑层,所以其主要关注不在于UI操作或用户感观上,更重调用逻辑关系。

与UI级自动化测试通过控制键盘输入和鼠标等操作不同的是:API测试,我们是通过工具或代码方式去调用特定的API,获取输出,并记录系统的响应。

API测试需要与应用程序的API进行交互,为了测试这些API,我们可以:

  • 使用测试工具来进行测试
  • 自己写代码的方式进行测试

API测试准备工作

首先你得获取目标测试系统的API相关文档,例如API对应的参数格式、期望返回结果等(一由开发提供文档,二自己抓包分析)

就我们所处国内的实际情况,在大部分情况下,开发都没有成型的文档。所以作为测试人员,你应该具备以下技能:

  • 优先去推动开发生成一份合适的API说明文档
  • 掌握抓包分析工具,能够自己去抓包分析形成API文档
  • 至少把http协议掌握,了解其报文结构
  • 对用户业务熟悉,能把API级业务逻辑和用户业务结合起来

API主要测试什么

API级测试至少应该覆盖以下测试要点:

  • 验证API所暴露的资源是否恰当的列出、创建、修改、和删除
  • 验证API是否功能可用以及用户友好,是否便于与其他平台集成
  • 安全测试,验证API是否包含了必要的认证以及敏感数据是否做了脱敏处理,是否支持加密或明码的http访问
  • 自动化测试,将API高度业务场景化,实现自动化测试
  • 文档,形成足够的文档,确保API质量的可维护行

API测试要注意什么

在API测试过程中要重点关注什么呢?

  • API测试用例要进行分类分组
  • 每个API测试用例都应该参数化
  • 在测试执行时,优先执行API测试
  • 测试用例应该尽可能做到可独立执行
  • 为了确保覆盖率,应该为API的所有可能输入进行测试数据规划

API测试能发现什么bug

在API测试时,一般会发现哪类型的bug呢?

  • 无法正确处理错误的深入条件
  • 缺少或重复功能
  • 可靠性问题
  • 安全问题
  • 多线程问题
  • 性能问题
  • 响应数据结构不规范问题
  • 有效参数值不能正确处理

API测试有哪些工具

  • SoapUI
  • JMeter
  • PostMan
  • 自己写代码

其他工具不推荐了,笔者首推SoapUI或自己写代码

API测试你可能遭遇哪些大坑

  • 无效的测试数据规划,导致你的参数穷举组合
  • 因为没有界面,开发又不提供文档的情况下,大部分人无从下手,会一脸懵逼
  • 平时测试大都关注正常的正常的情况,但要注意异常处理API必须进行测试,你懂的
  • 代码你要会点代码,会点HTTP协议,不然没法沟通交流

总结

把日常接口测试工作进行了大概的总结,希望对入门接口测试的朋友们有点效果,没效果那也没办法了,只能这样了。

原文发布于微信公众号 - 开源优测(DeepTest)

原文发表时间:2018-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源优测

一篇文章让你入门API测试

什么是API API是Application Programming Interface的简写。 实现了两个或多个独立系统或模块间的通信和数据交换能力。 什么是...

35510
来自专栏沃趣科技

ASM 翻译系列第六弹:高级知识 如何映射asmlib管理的盘到它对应的设备名

原作者:Bane Radulovic 译者: 赵恩东 审核: 魏兴华 DBGeeK社群联合出品 当使用ASMLIB 来管理ASM 磁盘时,设备的路径...

3764
来自专栏Golang语言社区

创建一个杀手级 Go Cli 的 5 个关键点

CLI(命令行接口)是一种文本接口,其提供了一种快速、自动化的方式与应用程序打交道,并且还可以和其他命令行程序接口创建新的工作流。

1225
来自专栏开源优测

一篇文章入门API测试

API是Application Programming Interface的简写。

1033
来自专栏全栈架构

开源BI工具Metabase简介

Metabase 是一个简单、开源的方式,通过给公司成员提问,从得到的数据中进行分析、学习。

754
来自专栏黑白安全

10条加速Ubuntu Linux的杀手级技巧

一些实际的加速 Ubuntu Linux 的技巧。 这里的技巧对于大多数版本的 Ubuntu 是有效的,也可以应用于 Linux Mint 以及其他的基于 Ub...

773
来自专栏魏艾斯博客www.vpsss.net

如何给 vps 安装 windows2003 系统

2132
来自专栏开源优测

python selenium2 架构说明

selenium技术族谱 ? selenium技术族谱 selenium家族图说明: 1、IDE 主要用来学习和对selenium技术有个初步的了解用,不适...

2767
来自专栏互联网杂技

Nodejs学习路线图

Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的w...

4298
来自专栏云计算教程系列

如何在Ubuntu上搭建Minecraft服务器

PS:本文撰写前已查询相关法律,本文内容不违反《互联网文化管理暂行规定》,遵守EULA协议,请勿举报。

1564

扫码关注云+社区