软件测试 52 讲
茹炳晟
腾讯 TEG 基础架构部 T4 级专家
71691 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 63 讲
结束语 (1讲)
软件测试 52 讲
15
15
1.0x
00:00/00:00
登录|注册

22 | 从0到1:API测试怎么做?常用API测试工具简介

基于Postman的测试代码自动生成
保存测试用例
添加结果验证
发起API调用
Cookie的场景
Session的场景
cURL命令参数含义
遇到的难题及解决方法
如何测试按时序的API调用以及异步API调用?
测试场景三:异步API的测试
测试场景二:API测试过程中的第三方依赖
测试场景一:被测业务操作是由多个API调用协作完成
使用图形界面工具Postman进行测试
使用cURL命令行工具进行测试
Account API功能简介
验证返回结果的response
发起对被测API的request
准备测试数据
思考题
如何应对复杂场景的API测试?
基于Spring Boot构建的API
API测试的基本步骤
API测试怎么做?

该思维导图由 AI 生成,仅供参考

你好,我是茹炳晟,我今天分享的主题是“从 0 到 1:API 测试怎么做?常用 API 测试工具简介”。
在第 11 篇文章《互联网产品的测试策略应该如何设计?》中,我介绍过当今互联网产品的测试策略往往会采用菱形结构,即重量级 API 测试,轻量级 GUI 测试,轻量级单元测试,由此可见 API 测试在现今测试中的重要性不言而喻。
这篇文章是 API 自动化测试系列的第一篇文章,我会先为你打好 API 测试的基础。所以,我会先从 0 到 1 设计一个 API 测试用例,通过这个测试用例,你可以体会到最基本的 API 测试是如何进行的,并介绍几款常用的 API 测试工具。

API 测试的基本步骤

通常来讲,无论采用什么 API 测试工具,API 测试的基本步骤主要包括以下三大步骤:
准备测试数据(这是可选步骤,不一定所有 API 测试都需要这一步);
通过 API 测试工具,发起对被测 API 的 request;
验证返回结果的 response。
对 API 的测试往往是使用 API 测试工具,比如常见的命令行工具 cURL、图形界面工具 Postman 或者 SoapUI、API 性能测试的 JMeter 等。
为了让你更好地理解 API 测试具体是怎么做的,并掌握常见 API 测试工具的使用,我会以基于主流 Spring Boot 框架开发的简单 Restful API 为例,分别介绍如何使用 cURL 和 Postman 对其进行最基本的功能测试,目的是让你对 API 测试有一个基本的感性认识。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了API测试的基本步骤和常用工具,以及针对复杂场景的解决方案。作者首先强调了API测试的重要性,并详细介绍了API测试的基本步骤,包括准备测试数据、发起API请求和验证返回结果。接着,通过实例演示了使用cURL和Postman进行基本功能测试,展示了它们的使用方法和特点。此外,文章还探讨了复杂场景下的API测试,包括多个API调用协作完成、API测试过程中的第三方依赖以及异步API的测试,并提供了相应的测试思路和方法。整体而言,本文内容丰富,涵盖了API测试的基础知识和常用工具,同时也提供了针对复杂场景的解决方案,对于从事API测试或相关领域的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件测试 52 讲》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(39)

  • 最新
  • 精选
  • sylan215
    1. 这么一对比的话,Postman 完胜 cURL,实际情况也是 Postman 的使用更加的广泛,特别是开发相互之间做接口对接时,Postman 可以很方便的甩锅。 2. Postman 的 Pre-request Script 功能,可以支持变量的传入,应该也可以解决 API 调用的时序问题,比如前一个接口的返回值作为当前接口的入参。 3. Postman 如果设置了多个 Workspace,并且有 Collections 在不同 Workspace 之间分享的话,貌似还是同一份,从一个 Workspace 删除后,另一个 Workspace 也会被同步删除,有点坑,千万注意,还好的就是 Postman 的 web 版提供了 Trash 可以恢复不小心错删的内容,前段时间刚刚踩过这个坑,请关注。 4. 如果是简单的 URL 测试,我觉得使用 Python 的 requests 库做下分层设计,应该也是比较简单的,而且会更加灵活,也更适合做为日常的回归执行,这样也可以解决茹老师提到的时序问题和异步调用问题了。 以上,欢迎沟通交流,公众号「sylan215」

    作者回复: 非常高质量的留言,👍,对于第四点,现在其实有个叫httprunner的api框架,底层就是封装了python的requests,然后通过写配置而不是写代码来完成api测试,其中就可以处理时序,传参数等问题,但是异步api还是没有太好的方法

    2018-08-17
    2
    29
  • 文大头
    说到异步,我现在的项目刚好有个场景,我使用jmeter压API,需要调用异步API创建一个东西,然后后台线程进行一系列操作后,更新这个东西的状态,我前端要等到他的状态变化后,再做下一步操作。具体做法是jmeter发起了创建操作后,循环执行一个查询状态操作,等到发现状态正常后再进行后续操作,或者状态异常/超时后报错。有意思的是,如果后端数据库是个集群,这样测试,还能经常发现数据库集群的node间数据不同步的问题。

    作者回复: 如果异步api没有callback接口,那么就只能用你所说的我方式,很棒的分享

    2018-08-23
    2
    18
  • 大QA
    小白请教个问题,Postman 可以批量执行(run),为什么还需要newman ?是为了持续集成吗?

    作者回复: postman可以批量执行,Newman的目的是为了可以从命令行发起测试,的确是为了持续集成

    2018-08-24
    10
  • 楚耳
    老师能深入讲解下Mock这个东西嘛,我看你好几篇文章都提到这个东西。还有这篇API 测试感觉完全没尽兴,现在公司都是自己用python 写代码测试API ,能讲讲自己开发一套api 测试框架的相关设计吗

    作者回复: Mock其实你可以简单想象成为了辅助你做测试而使用的真实api的替代品。如果用python一般都是用requests框架,这个框架的使用非常简单明了。api测试框架的设计就是下一篇文章的主题,我会从最简单的api框架讲起,逐渐过渡到先进的做法,期待一下吧

    2018-08-17
    10
  • DON G
    异步api测试这块不太理解,我们现在基本都是用ajax实现异步请求,接口测试的时候就按照普通的接口进行测试,验证返回值,并没有对异步调用业务逻辑测试~ 🤔

    作者回复: 你说的这个异步和我说的异步应该不是一个概念,我这里指的异步api指调用后会立即返回,但是此时真正的任务还没有完成。

    2018-08-17
    5
  • 桃夭夭
    老师,这个API测试也可以用testng来实现吧,是不是接口测试和API测试基本上算是同一个东西?

    作者回复: 可以用testng,testng就像是个测试执行的框架。api是接口的一种类型,接口的定义会更加宽泛

    2019-01-05
    1
  • 赵明月
    postman预处理部分,是使用JS来产生请求报文中的字段取值,比如md5计算sign之类,在计算签名时候,把一大段JS实现的md5方法贴进预处理部分,进而调用,感觉很low啊,求教老师一般怎么写。

    作者回复: 所以这就是典型的postman的弱项,这也就是为什么很多比较大的工程实践并不会基于postman来做,下一篇文章会给出解决方案,就是用代码级的api测试框架

    2018-08-17
    1
  • five years
    哈哈,终于等到api啦

    作者回复: 一共有三篇api的文章,后年会讲api测试框架和消费者契约测试,希望对你有帮助

    2018-08-17
  • DON G
    异步调用返回成功的时候,前提都是基于数据库操作成功的吧,为什么还要再去验证数据库中的值呢?

    作者回复: 你指的返回成功是指异步api调用的返回还是callback的返回,如果是异步api调用的返回,那么此时后台的真实业务操作并没有完成,如果是callback的返回,就需要验证业务逻辑是否被正确完成了。

    2018-08-17
  • Geek_558041
    这个是基本的接口测试,但是实际工作中,为了防止接口被刷通常都有验签功能,这一步怎么根据不同签名自动化.此外,测试环境基本依赖mock,包括各种正常场景和异常数据,mock是自己开发的吗?因为要支持不同的协议调用。如果使用mock,测试环境自动化似乎没有入参参数化的必要?请教老师

    作者回复: 第一问题是很典型的,就是需要拿到前一个api的返回token然后传给后年的api作为参数,基于代码的api框架完全支持这种操作。测试环境是否一定要依赖mock取决于你的应用架构,如果有可用的service尽量用真的,只有真的service难以返回你要的结果去覆盖更多的情况时,才考虑采用mock。mock的协议一般是由开发人员提供,但是在微服务架构下,又是另一种情况,后面的文章会专门讲。

    2018-08-17
收起评论
显示
设置
留言
39
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部