懂了接口测试的原理,再用工具就不难

上一篇 / 下一篇  2021-11-29 15:40:51

## 前言
>掌握了http协议,就掌握了接口测试

笔者在网络上看过不少接口测试教程,一上来就开始讲怎么操作工具,而不告诉读者为什么要这么操作。读者可能照猫画虎成功了,也可能操作失败了但不知为何出错。

因此,本文作为接口测试的入门第一课首先会给大家了解到执行接口测试每一步操作的目的和原理,由此大家才能从理论到实践上掌握接口测试,并且熟练之后有自己的创造性发挥。

本文所用的接口测试工具为Apifox,请大家在往下读之前先安装注册好工具。

Apifox官方下载地址:http://www.apifox.cn

## 目录
1. 接口测试测什么
2. 接口测试的对象:服务器接口
3. 服务器接口与前端通信的方式:http协议
5. Apifox接口测试原理
6. 用Apifox构建第一个接口请求

## 正文
### 一.接口测试测什么
>接口测试主要是测试系统
组件间接口的一种测试,主要用于测试服务器与前端(web浏览器APP)之间的数据交互接口。
测试的重点是要检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性。

由引文对接口测试的定义可得,接口测试的对象是服务器接口,接口测试的内容包括:接口参数检验,接口功能实现是否正确,接口异常情况容错处理。

接口测试的内容是《Apifox接口测试》系列教程后面的内容,本文主要讲解服务器接口,前端如何通过http协议与服务器通信,Apifox等接口测试工具如何实现接口测试。

### 二.接口测试的对象:服务器接口
API指的是一组预先定义好的函数,来让系统或外部的其他组件可以执行它内部实现的功能,但又无须访问源代码或者理解其内部逻辑。

在需求开发过程中,前后端分离开发,两端的研发人员会共同定义好接口,编写接口文档,此后的开发过程中需要遵循这份协议文档。

因此接口测试也是一种黑盒测试,测试人员需要根据接口文档来对服务器Api进行测试,来检测约定的功能是否正确实现,是否有对异常情况做容错处理。

而接口文档的编写是依据前后端数据传输的协议——Http协议进行的。

要会用接口文档,首先先理解http协议。

### 服务器接口与前端通信的方式:http协议

服务器和前端通过互相发送http报文完成数据交互。本小节将介绍如何创建http报文,以及如何理解报文的每一个部分,了解完就可以掌握接口测试的基础内容。
![1](/uploads/photo/2021/743c202b-8b5c-45dc-89e9-c7217f138f6f.png!large)


- http报文的三个组成部分
http报文是一个格式化数据块。报文类型包括客户端请求,服务器响应。它们由3个部分组成:
  - 起始行(start line)
  对报文进行描述
  - 首部块(header)
  包含属性
  Content-Type:
  Content-Length:
  - 主体(body)
  包含文本或二进制数据,可以为空
 
- 请求报文的格式

```
<method><request-URL><version>
<headers>
<entity-body>
```
- 响应报文的格式

```
<version><status><reason-phrase>
<headers>
<entity-body>
```
- 各个字段的含义如下:

*方法(method)*:前端希望对服务器执行的操作,包含get,post,put,delete等方法;

| 方法    |    功能 |
| --- | --- |
|  GET   |  从服务器获取数据 |
|  POST   |  向服务器发送要处理的数据   |
|  HEAD   |   只从服务器获取文档的首部  |
|  DELETE   |  从服务器上删除数据   |
|   PUT  |  向服务器提交数据   |

*请求url(request-URL)*:所请求资源路径,通过它可找到资源放置的位置。
格式类似于:https://www.apifox.cn/help/app/contact-us/

*版本(version)*:报文所使用的http版本,格式类似于:HTTP/1.0

*首部(headers)*:可以有0个或多个首部,常见的首部如下:
![2](/uploads/photo/2021/44800bb2-509a-476a-86d2-ba61094c5f17.jpg!large)

*实体主体(entity-body)*:包含一个数据块,支持多种数据格式,如html页面,图片,视频,源代码等等。
 
*状态码(status-code)*:描述请求结果,成功或者失败。

*原因短语(reason-phrase)*:原因短语是状态码的可读版本,只对人类有意义。

这些字段初学者会觉得非常抽象难以理解和记忆,但当后面接触到api文档和用apifox做接口测试的时候,就会顿悟——api文档里的参数和方法,url的含义和接口测试界面每个空格要填什么,返回值代表什么含义。

请耐心继续往下读。

### 三.读懂API文档

对于测试人员,准备接口测试所需要的文档有产品需求文档+API文档。

需求文档用于梳理接口为何这么设计、是否合理;

针对单个接口,接口文档用于获取:接口描述,请求说明,返回说明。

百度开放API,文字识别接口为例:我们想要使用它的文本识别功能,需要去调用它的接口,那么需要了解发起这个文本识别接口请求,每个字段需要填什么内容。
![4](/uploads/photo/2021/5a7e30b0-12c7-4b24-8bb1-24dee6f49f71.png!large)
![3](/uploads/photo/2021/fea2c376-1581-498f-942f-bd467801d726.png!large)
![5](/uploads/photo/2021/9ca00f44-bf0d-42e9-af93-a73e109a7744.png!large)


*注:Apifox的ApiHub中,收集了大量开放的API,初学者可选取某个api深入了解接口文档,或作为接口测试的练习物料,注意有些接口需要先获取使用权限。
![6](/uploads/photo/2021/f16d5dd0-f2a7-4a8a-b5d6-f807cf75030f.png!large)


### 四.Apifox接口测试原理
![7](/uploads/photo/2021/9de29ee4-c28b-4d3f-877c-c943bc178540.png!large)

对于服务器来说,Apifox也是一个前端,只不过其他前端的接口请求由研发人员在代码里封装好,在特定条件下被触发发起请求,而Apifox中,接口请求由用户手动封装,手动发起。
![8](/uploads/photo/2021/5428313a-fbd8-40e2-b5d9-cd0b3780dbf7.png!large)

看完Apifox接口测试的界面,读者想必能发现,整个界面就是让读者手动构建出一个http请求出来,上两节我们讲的抽象的http协议终于落了地。

因此一个最基础的http接口测试所需要做的步骤就是*手动填写完成并发出一个http请求,校验参数*。

*step1*.选择请求方法->填写请求url->填写url参数->填写body参数和header参数(如果有)

*step2*.手动发送请求

*step3*.查看返回参数是否正常,是否符合接口文档的约定


### 五. 用Apifox构建你第一个测试请求
在铺垫完上述那么多理论基础之后,大家终于可以开始上手使用apifox来做接口测试了。

*(一)练习1:用get请求获取html页面*

*step1*:在apifox的新建接口tab输入“http://www.baidu.com”,请求方法选择GET,header参数,url参数,body参数均为空,接着点击send按钮。
![9](/uploads/photo/2021/02bb240a-19f5-4169-9fc9-159ae7f61950.png!large)

*step2*:查看返回值,可以看到请求回来的数据是一个html页面,即百度首页,我们点击‘preview’按钮,可以看到一个完整的页面显示出来
![10](/uploads/photo/2021/bf8a694d-c1b0-43fd-bb03-b125c14eef8d.png!large)

![11](/uploads/photo/2021/8a91e587-f979-4a7d-832c-867688ecdc20.png!large)

*(二)练习2:获取百度开放API的acess_token,即获得使用api的授权*

*step1*:查看百度开放api获取acess_token的接口文档,获取请求方法和请求参数
![12](/uploads/photo/2021/ff6ed924-f125-4dc7-bab5-5da8fc99c218.png!large)

*step2*:根据接口文档描述的,在apifox接口测试界面选择post方法,在params里填写3个请求参数,
(client_id和client_secret需要创建应用后才能获得,没有可以先去创建)

![13](/uploads/photo/2021/ee64204b-c54b-4f8c-b8e8-9ba4422f41bb.png!large)
*step3*:点击下方**实际请求**tab,可以看到apifox实际发出的接口请求形式
如下:

![14](/uploads/photo/2021/3ed018c1-3ff6-492c-ad7e-e054ae5c3e34.png!large)
![15](/uploads/photo/2021/7ffd77c1-4c6a-47e5-bdc9-606d09172e74.png!large)


*step4*:查看返回参数可看到返回了我们需要的acess_token 字段:
![](/uploads/photo/2021/e1f742cb-0463-4399-8309-1904486c0ceb.png!large)

练习完成。大家可以利用自己公司内部的接口文档/外部开放api继续进行练习巩固。


## 复习题
1.写出http协议请求报文和相应报文的格式,并说明每个字段的含义。

2.api文档有哪几部分组成,在接口测试中分别发挥什么作用

3.复述用Apifox做简单接口测试的步骤。


TAG:

 

评分:0

我来说两句

日历

« 2024-04-07  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 8185
  • 日志数: 14
  • 建立时间: 2021-11-29
  • 更新时间: 2022-05-07

RSS订阅

Open Toolbar