API测试简介

当今互联网产品的测试策略往往会采用菱形结构,即重量级 API 测试,轻量级 GUI 测试,轻量级单元测试,由此可见API测试在现今测试中的重要性不言而喻。本文将设计一个测试用例,通过这个测试用例我们去感受API测试是如何进行的,并介绍几款常用的测试工具。

目录

一、API测试步骤

二、使用cURL命令行工具进行测试

 2.1 Session场景

2.2 Cookie场景

三、使用Postman图形工具进行测试

3.1 发起API请求

3.2 添加参数验证

3.3保存测试用例

3.4 执行测试用例

四、总结


一、API测试步骤

  • 测试数据
  • 通过API测试工具,向服务端发送requests请求
  • 服务端收到消息之后基于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"

这行命令中参数的含义如下:

  • 第一个参数“-i”,说明需要显示response的header信息;

  • 第二个参数“-H”,用于设定request中的header;

  • 第三个参数“-X”,用于指定执行的方法,这里使用了GET方法,其他常见的方法还有POST、PUT和DELETE等,如果不指定“-X”,那么默认的方法就是GET。

  • 最后“ http://127.0.0.1:8080/account/ID008 ”,指明了被测API的endpoint以及具体的ID值是“ID008”。

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

  • “-d”:用于设定http参数,http参数可以直接加在URL的query string,也可以用“-d”带入参数。参数之间可以用“”串接,或使用多个“-d”。

  • “-b”:当需要传递cookie时,用于指定cookie文件的路径。

需要注意的是这些参数都是大小写敏感的。

了解了这几个最常用的参数后,我再来分析一些最常用的cURL命令以及使用的场景,包括Session的场景和Cookie的场景。

 2.1 Session场景

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

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

2.2 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"

三、使用Postman图形工具进行测试

Postman是目前使用最广泛的Http请求模拟工具之一,常常被用于Web Service API的测试。早期的Postman,是以Chrome浏览器的插件(plugin)形式存在的,最新版本的Postman已经是独立的应用了。

操作步骤:

  • 发起API请求
  • 添加参数验证
  • 保存测试用例
  • 执行测试用例

3.1 发起API请求

我们的目标是对Account API做测试,所以这里你需要选择Postmant的“Request”模块。进入相应界面后,你需要按下图的提示依次执行以下三步操作,发起Account API的调用。

  • 在endpoint输入框中输入“http://127.0.0.1:8080/account/ID_008”;
  • 选择“GET”方法;
  • 点击“Send”按钮发起API调用。

API测试简介_第1张图片

 完成以上步骤后,我们看到返回的response默认以JSON文件的形式显示在下面的Body中。

API测试简介_第2张图片

这样就完成了一次Account API的调用,是不是非常简单。但问题是,这只是一个API调用,并没有对调用结果进行自动化验证。接下来,我们就加上结果验证的部分,一起看看会有什么效果。

3.2 添加参数验证

在Postman中添加结果验证也非常方便,假定我们在Account API测试过程中有以下四个验证点:

  • 请求的返回状态码(Status Code)应该是200;
  • 请求的响应时间应该小于200 ms;
  • 请求返回的response header中应该包含“Content-Type”参数;
  • 请求返回的response body中,“type”的值应该是“friends”;

我们可以打开我们的test界面,然后在右下角的“SNIPPETS”中依次点击:

  • “Status code: Code is 200”
  • “Response time is less than 200 ms”
  • “Response headers:Content-Type header check”
  • “Response body: JSON value check”

完成以上操作后,“Tests”中会自动生成验证代码,接着只要按照具体的测试要求,对这些生成的代码进行一些小修改就可以了。

API测试简介_第3张图片

3.3保存测试用例

这个操作起来很简单,在我们postman工具的左侧,提供了Collection收集工具,我们可以点击Save As按钮可以建立我们的Collection,并将我们创建的测试用例保存进去。

3.4 执行测试用例

顾名思义,我们情面也提到了,就是准备好数据、发起请求的这个过程。在postman里面,点击send按钮即可。

四、总结

通常情况下,无论你采用什么API测试工具,基本的测试步骤往往都是三步,即准备测试数据(并不是所有的API测试都需要这一步)、通过API测试工具发起对被测API的request、验证返回结果的response。

扩展思考:

单个API测试是比较简单的,但在实际项目中,往往存在按时序的API调用以及异步API调用,这类API应当如何测试的?如何解决呢?

你可能感兴趣的:(测试开发技术,Python技术,单元测试,python,测试工具)