软件测试52讲
茹炳晟
eBay中国研发中心,测试基础架构技术主管
立即订阅
13425 人已学习
课程目录
已完结 63 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从“小工”到“专家”,我的软件测试修炼之道
免费
测试基础知识篇 (11讲)
01 | 你真的懂测试吗?从“用户登录”测试谈起
02 | 如何设计一个“好的”测试用例?
03 | 什么是单元测试?如何做好单元测试?
04 | 为什么要做自动化测试?什么样的项目适合做自动化测试?
05 | 你知道软件开发各阶段都有哪些自动化测试技术吗?
06 | 你真的懂测试覆盖率吗?
07 | 如何高效填写软件缺陷报告?
08 | 以终为始,如何才能做好测试计划?
09 | 软件测试工程师的核心竞争力是什么?
10 | 软件测试工程师需要掌握的非测试知识有哪些?
11 | 互联网产品的测试策略应该如何设计?
GUI自动化测试篇 (10讲)
12 | 从0到1:你的第一个GUI自动化测试
13 | 效率为王:脚本与数据的解耦 + Page Object模型
14 | 更接近业务的抽象:让自动化测试脚本更好地描述业务
15 | 过不了的坎:聊聊GUI自动化过程中的测试数据
16 | 脑洞大开:GUI测试还能这么玩(Page Code Gen + Data Gen + Headless)?
17 | 精益求精:聊聊提高GUI测试稳定性的关键技术
18 | 眼前一亮:带你玩转GUI自动化的测试报告
19 | 真实的战场:如何在大型项目中设计GUI自动化测试策略
20 | 与时俱进:浅谈移动应用测试方法与思路
21 | 移动测试神器:带你玩转Appium
API自动化测试篇 (3讲)
22 | 从0到1:API测试怎么做?常用API测试工具简介
23 | 知其然知其所以然:聊聊API自动化测试框架的前世今生
24 | 紧跟时代步伐:微服务模式下API测试要怎么做?
代码测试篇 (3讲)
25 | 不破不立:掌握代码级测试的基本理念与方法
26 | 深入浅出之静态测试方法
27 | 深入浅出之动态测试方法
性能测试篇 (7讲)
28 | 带你一起解读不同视角的软件性能与性能指标
29 | 聊聊性能测试的基本方法与应用领域
30 | 工欲善其事必先利其器:后端性能测试工具原理与行业常用工具简介
31 | 工欲善其事必先利其器:前端性能测试工具原理与行业常用工具简介
32 | 无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(上)
33 | 无实例无真相:基于LoadRunner实现企业级服务器端性能测试的实践(下)
34 | 站在巨人的肩膀:企业级实际性能测试案例与经验分享
测试数据准备篇 (4讲)
35 | 如何准备测试数据?
36 | 浅谈测试数据的痛点
37 | 测试数据的“银弹”- 统一测试数据平台(上)
38 | 测试数据的“银弹”- 统一测试数据平台(下)
测试基础架构篇 (4讲)
39 | 从小作坊到工厂:什么是Selenium Grid?如何搭建Selenium Grid?
40 | 从小工到专家:聊聊测试执行环境的架构设计(上)
41 | 从小工到专家:聊聊测试执行环境的架构设计(下)
42 | 实战:大型全球化电商的测试基础架构设计
测试新技术篇 (5讲)
43 | 发挥人的潜能:探索式测试
44 | 测试先行:测试驱动开发(TDD)
45 | 打蛇打七寸:精准测试
46 | 安全第一:渗透测试
47 | 用机器设计测试用例:基于模型的测试
测试人员的互联网架构核心知识篇 (5讲)
48 | 优秀的测试工程师为什么要懂大型网站的架构设计?
49 | 深入浅出网站高性能架构设计
50 | 深入浅出网站高可用架构设计
51 | 深入浅出网站伸缩性架构设计
52 | 深入浅出网站可扩展性架构设计
特别放送篇 (8讲)
测试专栏特别放送 | 答疑解惑第一期
测试专栏特别放送 | 答疑解惑第二期
测试专栏特别放送 | 答疑解惑第三期
测试专栏特别放送 | 答疑解惑第四期
测试专栏特别放送 | 答疑解惑第五期
测试专栏特别放送 | 答疑解惑第六期
测试专栏特别放送 | 答疑解惑第七期
测试专栏特别放送 | 浅谈全链路压测
测一测 (1讲)
测一测 | 这些软件测试题目,你都掌握了吗?
结束语 (1讲)
结束语 | 不是结束,而是开始
软件测试52讲
登录|注册

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

茹炳晟 2018-08-17
你好,我是茹炳晟,我今天分享的主题是“从 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/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件测试52讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(28)

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

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

    2018-08-23
    1
    9
  • 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
    9
  • 测试大王
    小白请教个问题,Postman 可以批量执行(run),为什么还需要newman ?是为了持续集成吗?

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

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

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

    2018-08-17
    8
  • arthur
    我们的项目中也有异步API调用的情况,作为开发,他们也需要知道操作什么时候完成,然后做出后续操作。这边的异步,开发都会在数据库的一张表插入运行信息,完成后做出相应修改。所以测试的时候,也是通过查数据库来判断异步是否完成。
    2018-08-26
    5
  • 静静张
    老师,这里的异步是多线程的意思吗?
    2018-08-19
    3
  • 豆豆
    这课的展现效果不好,有种茶壶煮饺子的感觉
    2018-11-12
    2
  • 芭蕉桑
    老师,我负责测试的一款APP最近完成了API测试的基本框架和测试代码,已经在迭代中试用了。但手工测试的用例编写数量和人力投入并没有减少。想请教一下老师,API测试如何运用才能有效地减少手工测试的人力投入呢?辛苦老师解答一下。
    2018-11-10
    1
    2
  • family
    能讲一下sdk的自动化测试么?
    2018-08-21
    2
  • 小老鼠
    1、老师为什么不用interface test,而用API test
    2、Python 中的requests 您感觉如何?
    2018-10-27
    1
  • Xiye
    我目前的项目就有涉及到异步API测试,我们的Agent端产品是提供lib库,客户需要集成我们的li库到他们的产品。我们需要测试这些库公开的API函数。我们的某些API的参数就是callback回调函数,这些回调函数主要是处理网络传输,当时也是花了好长时间理解原理。我目前的做法就是自己写相应代码实现网络传输,构造正确的Response数据,错误Response数据,非正常的网络状态等看我们API处理结果。
    2018-08-19
    1
  • 赵明月
    postman预处理部分,是使用JS来产生请求报文中的字段取值,比如md5计算sign之类,在计算签名时候,把一大段JS实现的md5方法贴进预处理部分,进而调用,感觉很low啊,求教老师一般怎么写。

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

    2018-08-17
    1
  • 泡芙
    这里说的API测试都是依靠工具的吗?可以谈一下不依靠工具的接口测试自动化的框架吗
    2019-11-15
  • Geek_guzhenhua
    接口测试的用例应该如何设计,如果参数很多,是否需要按照功能测试的用例设计方法,组合起来的参数的接口测试用例会很多。希望老师解答一下
    2019-10-11
  • Snowy.
    老师请问一下测试驱动开发TDD对平常测试帮助大嘛
    2019-10-10
  • candy
    老师,想知道SDK的测试如何进行,是否会介绍?
    2019-09-24
  • 口水窝
    很难的场景没有做过,以前做过创建订单,发货,收货的接口测试,但是也是分开去跑的,没有直接串联起来。今天学习了两个工具:cURL和postman,实践利用,感觉不错。
    2019-04-11
  • 小寞子。(≥3≤)
    不知道有没有听过lisa,CA。 我们在用这个做中间件测试。 测试各种API。 包含了消息队列。 SOAP。 各种不同的call。。 要自己建立stub来连接中间件之后做自动化测试。。。。 也是遇到了很多挑战。
    2019-03-22
  • 桃夭夭
    老师,这个API测试也可以用testng来实现吧,是不是接口测试和API测试基本上算是同一个东西?

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

    2019-01-05
  • 豆豆
    这种课应该录制成视频,只是看图说话,没有演绎的过程理解起来很费劲。
    2018-11-12
收起评论
28
返回
顶部