常用API测试工具

API测试基本步骤

1、准备测试数据(这是可选步骤,不一定所有 API 测试都需要这一步);
2、通过 API 测试工具,发起对被测 API 的 request;
3、验证返回结果的 response。

对 API 的测试往往是使用 API 测试工具,比如常见的命令行工具 cURL、图形界面工具 Postman 或者 SoapUI、API 性能测试的 JMeter 等。

一、使用 cURL 命令行工具

需要下载安装 cURL,然后通过以下命令发起 Account API 的调用。

curl -i -H "Accept: application/json" -X GET "http://127.0.0.1:8080/account/ID008"

调用结束后的界面如图 4 所示。

image.png
  • 参数“-i”,说明需要显示 response 的 header 信息;
  • 参数“-H”,用于设定 request 中的 header;
  • 参数“-X”,用于指定执行的方法,这里使用了 GET 方法,其他常见的方法还有 POST、PUT 和 DELETE 等,如果不指定“-X”,那么默认的方法就是 GET
  • 链接 ,指明了被测 API 的 endpoint 以及具体的 ID 值是“ID008”。

当使用 cURL 进行 API 测试时,常用参数还有两个:

  • “-d”:用于设定 http 参数,http 参数可以直接加在 URL 的 query string,也可以用“-d”带入参数。参数之间可以用“&”串接,或使用多个“-d”。
  • “-b”:当需要传递 cookie 时,用于指定 cookie 文件的路径。

注:这些参数都是大小写敏感的。

最常用的 cURL 命令以及使用的场景,包括 Session 的场景和 Cookie 的场景。

Session 场景

如果后端工程师使用 session 记录使用者登录信息,那么后端通常会传一个 session ID 给前端。之后,前端在发给后端的 requests 的 header 中就需要设置此 session ID,后端便会以此 session ID 识别出前端是属于具体哪个 session。
此时 cURL 的命令行如下所示:

curl -i -H "sessionid:XXXXXXXXXX" -X GET "http://XXX/api/demoAPI"
Cookie 场景

如果是使用 cookie,在认证成功后,后端会返回 cookie 给前端,前端可以把该 cookie 保存成为文件,当需要再次使用该 cookie 时,再用“-b cookie_File” 的方式在 request 中植入 cookie 即可正常使用。
具体的 cURL 的命令行如下所示:

// 将 cookie 保存为文件
curl -i -X POST -d username=robin -d password=password123 -c ~/cookie.txt "http://XXX/auth"

// 载入 cookie 到 request 中
curl -i -H "Accept:application/json" -X GET -b ~/cookie.txt "http://XXX/api/demoAPI"

总结:cURL 只能发起 API 调用,而其本身并不具备结果验证能力(结果验证由人完成),所以严格意义上说 cURL 并不属于测试工具的范畴。但是由于 cURL 足够轻量级,经常被很多开发人员和测试人员使用。

二、使用Postman测试

具体可通过下方链接细读
使用 Postman 进行接口测试(入门)
使用 Postman 进行接口测试(续)
使用 Postman 进行接口测试(cookie设置)
Postman全局变量设置和运用
Postman 搭建mock服务



如何应对复杂场景的 API 测试?

1:被测业务操作是由多个 API 调用协作完成

很多情况下,一个单一的前端操作可能会触发后端一系列的 API 调用,由于前端测试的相对不稳定性,或者由于性能测试的要求,必须直接从后端通过模拟 API 的顺序调用来模拟测试过程。
这时,API 的测试用例就不再是简单的单个 API 调用了,而是一系列 API 的调用,并且经常存在后一个 API 需要使用前一个 API 返回结果的情况,以及需要根据前一个 API 的返回结果决定后面应该调用哪个 API 的情况。

如何才能高效地获取单个前端操作所触发的 API 调用序列?
核心思路是,通过网络监控的手段,捕获单个前端操作所触发的 API 调用序列。
比如,通过 Fiddler 之类的网络抓包工具,获取这个调用序列;
又比如,目前很多互联网公司还在考虑基于用户行为日志,通过大数据手段来获取这个序列。

2:API 测试过程中的第三方依赖
API 之间是存在依赖关系的,比如被测对象是 API A,但是 API A 的内部调用了 API B,此时由于某种原因,API B 在被测环境中处于不可用状态,那么 API A 的测试就会受到影响。

在单体架构下,通常只会在涉及到第三方 API 集成的场景中才会遇到这个问题,所以还不算严重。但是,在微服务架构下,API 间相互耦合的依赖问题就会非常严重。

核心思路是,启用 Mock Server 来代替真实的 API。

3、异步 API 测试
异步 API 是指,调用后会立即返回,但是实际任务并没有真正完成,而是需要稍后去查询或者回调(Callback)的 API。

对异步 API 的测试主要分为两个部分

  • 测试异步调用是否成功
    异步调用是否成功,这个还比较简单,主要检查返回值和后台工作线程是否被创建两个方面就可以了
  • 测试异步调用的业务逻辑处理是否正确
    对异步调用业务逻辑的测试比较复杂,因为异步 API 通常发生在一些比较慢的操作上,比如数据库 I/O、消息队列 I/O 等,此时测试往往需要去验证数据库中的值、消息队列中的值等,这就需要测试代码具有访问和操作数据库或者消息队列的能力。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249

推荐阅读更多精彩内容