web json接口_接口测试的概念以及接口的分类

欢迎关注公众号 学习资料不会少

什么是接口

关于什么是接口、什么是API,如果读者去网上査询,可以找到的解释有很多,而且绝大多数都是很标准的官方解释,例如:

API( Application Programming Interface)即应用程序接口。你可以认为API是一个软件组件、或是一个Web服务与外界进行交互的接口。这里的接口可以和API画等号。

作为初学者,或者对接口了解很少的读者,这个解释其实并不好理解。那如何才能给读者解释清楚接口呢?如何由表及里地让读者理解接口的运转机制呢?下面笔者结合多年的接口测试经验,用逐层叠加的方式来解释。

1.从功能层面来说

从功能层面来说,可以将接口简单理解为一个黑盒子。其上游负责输入参数,下游负责输出参数,类似于平时的黑盒测试对象,如图2-1-1所示。

9b708be4df53d80dd272071026ada74c.png

▲图2-1-1接口理解1

这里以一个例子来说明:

(1) 在 Chrome浏览器中输入:

https://www.v2ex.com/api/nodes/show.json.json?name=Python,按“ Enter'”键之后能看到如图2-1-2所示的数据。

(2) 下面来分析这个过程。

在输入URL地址并按 Enter键后,页面实际发送了一次接口请求。具体的请求是:接口地址

(https.//www.v2ex.com/api/nodes/show.json?)+请求参数及其值(nane= python)。后面这个"name= python”就是输入数据;返回的数据就是浏览器展示的一个JSON格式数据。至于这个数据是怎么来的,目前还是看不到的。所以这就像黑盒子一样,输入不同的数据会得到不同的返回结果。这里读者也可以试试其他的参效,看看返回的数据容是什么样子的,比如:

https: //www.v2ex.com/api/nodes/show.json?name=java

https: //www.v2ex.com/api/nodes/show.ison?name=测试

a94b25af524d25478dd36faca175ddbe.png

78296115c64ffa0d17bf26f7eb6b48cf.png

▲图2-1-2 接口返回数据

//名词解释

/// 

NOCITCE

● JSON (JavaScript Object Notation) : 是一种轻量级的数据交换格式,独立于语言和平台。JSON解释器和JSON库支持不同的编程语言,是以得}括起来的键值对数据。

JSON数据格式如下:

 {“name”:“Michael”,“age”:24}

在这个例子中,键是字符串形式,值可以取任意类型。name是键名,Michael 是键对应的值。JSON 是可以嵌套的,比如{"name": "Michael", "birthday”:{"month": 8, "day": 26} } 。

● JSON格式的在线检查工具:

https: //www.beJSON.com/

https: //www.beJSON.com/JSONviewernew/

通过上面的在线检查工具,能检查JSON格式的正确性。

2. 从数据流层面来说

从数据流层面来说,可以将接口理解为连接前端(Web 页面、APP等)和数据库(Database) 等后端的纽带,用于在二者之间传递数据、处理数据,如图2-1-3所示。

30926bb31dfde56a9b0a6611134d4e32.png

▲图2-1-3 接口理解2

在现在主流的框架结构中,后端一般都使用数据库来存储数据,而前端不能直接去数据库中操作数据,一方面不安全,另一方面效率低。要完成数据的交互,必然要有中间的纽带,那就是接口。所以,从这个层面来说,接口主要负责前端页面和后端数据库之间的数据传输和处理。

当下大部分的互联网产品都采用前/后端分离的方式,即前端的表示层负责展示数据及其样式,后端的数据层负责数据处理和存储,如图2-1-4所示,它们之间的业务逻辑层负责处理业务逻辑,其中最重要的就是接口。所以说,接口的健壮性、稳定性、抗压性直接决定了这个互联网产品的成败。前端页面通过调用接口传递约定的参数;接口收到请求后,会按照业务逻辑在后端进行处理,并将处理结果和需要的数据返回给前端;前端解析数据并展示在页面。这就完成了广义上的一次前/后端交互。

4ae3f82f52d0a3583aa98c62cf717309.png

▲图 2-1-4 三层结构

// 名词解释

/// 

NOCITCE

● 前端(前台):可以直观看到和使用的内容都可被归为前端。比如Web页面上一些可见的、可操作的界面。

● 后端:不能被用户可见的内容。其实,后端是一个编程上的概念,具体是指业务逻辑和数据的处理。

● 后台:通俗意义上是指管理系统,主要用来增加、删除、修改、查询数据,实际上是内部人士使用的一个Web系统。

3. 从编程层面来说

从编程层面来说,可以将接口理解为业务逻辑处理方法的外在表现形式,如图2-1-5所示。它可以是一个类下面的方法,也可以是一个函数。

5062701ba606312c5cb8f5337b773a13.png▲图2-1-5 接口理解3

从数据流层面来理解,接口会按照“业务逻辑”处理数据。那么业务逻辑在哪里呢?很显然,是在程序代码的函数或方法中。函数或方法按照逻辑返回不同的数据,这便是接口在不同参数下的不同返回信息。所以,从“白盒操作”角度来看,接口测试是直接对函数或方法的代码层进行测试。

以上从三个层面解释了什么是接口。读者没必要把接口想得过于复杂,认为接口和接口测试多么高深。实际上,接口和日常的页面测试没有本质的区别,只是在外在表现形式和测试方法上略微有差别。读者从以上三个层面可以窥探出接口测试的一般思路,后面还会逐步讲解,请耐心往后看公众号的其他文章。

接口的分类

根据系统调用方式可以将接口分为以下两类。

1. 系统之间的接口

系统之间的接口如图2-2-1 所示。我们用得最多的是第三方接口,比如要做一个系统来展示每天的天气,那天气数据是怎么得到的呢?不可能自己去预测天气,有免费的第三方接口可使用,只需按照接口协议调用想要的天气数据。当然,这是调用系统外部的数据。在系统内部也存在这种调用关系,道理类似。

▲图2-2-1 接口分类 1

2. 服务之间的接口

目前主流的系统架构如图2-2-2所示,即应用层、服务层和数据层。

34a89e422e0f498f5024bfd9835d4800.png ▲图2-2-2 接口分类2

● 应用层:负责展示数据和发起数据请求。比如,12306 购票网站上显示的敷新购买操作等。

● 服务层:为应用层提供数据处理。

● 数据层:用来存储数据,有关系型数据库等。

各层之间的调用过程是怎样的呢?例如,在 12306 网站上买票,首先用户需要选择票,然后通过单击“确定”按钮下单。用户下单就是调用了应用层的接口,假设叫“购买接口”, 购买接口会去数据层的数据库中进行查询、新增购买记录等操作。成功完成后,会返回一个成功标志和其他信息。最后,应用层接收到这个接口返回的数据,将买票结果展现给用户。

在这个过程中,各层之间的交互就是通过接口。应用层和服务层之间是通过 HTTP接口,服务层和数据层主要通过DAO (Data Access Object) 访问数据。用Python 操作 MySQL 数据库时,使用的PyMySQL 就是起这个作用的。

4b4e39762006ec693656b4d39af3f9d0.png

往期精彩文章

喜报来了!凡猫学员薪资最高16K!

金融行业软件测试介绍

2020年为什么大家都开始学习自动化测试?

学习测试开发前 你需要掌握的python 代码水平

1万+软件测试人员都在学的精品课程免费送,大家别错过

96f995019015dbcd15c12818638d5e54.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值