Postman使用-基础篇

前言

本教程将结合业界广为推崇和使用的RestAPI设计典范Github API,详细介绍Postman接口测试工具的使用方法和实战技巧。

在开始这个教程之前,先聊一下为什么接口测试在现软件行业如此重要? 为什么我们要学习Postman?

现代软件行业已经从传统的万维网发展到移动互联网,云计算,如今更进入到万物互联时代。软件和网络会连接我们生活的方方面面,不同的设备,不同的软件系统之间存在各式各样的联系。而接口就是不同设备、系统之间联系的桥梁,所以接口在现今和未来的软硬件产业当中都具有越来越高的重要性和地位。

什么是接口?

IT行业从WWW万维网时代的C/S,B/S架构,到移动互联网时代的大前端时代,发展到云计算时代以IaaS(基础架构即服务),PaaS(平台即服务),SaaS(软件即服务)为代表的云端架构,如今更是进入到万物互联的物联网时代,网络连接着我们生活的方方面面,而承载这些连接的连接点,就是网络接口,接口是不同网络应用之间联系、交互、相互作用的入口和桥梁

如下图,是接口在软件系统中所处位置的示意图
image
这里UI接口和API接口分别代表用户交互接口和应用程序接口

接口测试

了解了接口的概念,我们再看什么是接口测试?

以下是百度百科中给出的定义:

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

可以看到,针对接口定义阐述后,说明了接口测试的重点包括交互的数据、过程以及背后的业务逻辑。

再进一步看更常用的API测试的定义,这个百度没有收录,可以看下Wiki百科的定义:

API testing is a type of software testing that involves testing application programming interfaces (APIs) directly and as part of integration testing to determine if they meet expectations for functionality, reliability, performance, and security.[1] Since APIs lack a GUI, API testing is performed at the message layer.[2] API testing is now considered critical for automating testing because APIs now serve as the primary interface to application logic and because GUI tests are difficult to maintain with the short release cycles and frequent changes commonly used with Agile software development and DevOps.[3][4]

它是直接针对API进行测试的一类集成测试,注意wiki把接口测试归类在集成测试阶段。也就是说它更多是在系统集成时实施。然后也说明了接口测试不单纯是功能测试,还需考虑可靠性、安全、性能等。API接口测试和GUI测试不同,更多体现在消息层,并且因为GUI层在自动化测试上的先天劣势,API自动化目前是自动化测试领域以及敏捷、DevOps等研发模式的关键实践。

下图是著名的测试金字塔,它根据不同测试类型对软件测试进行了分层,底层是针对的代码层面的单元测试,中间是service服务测试,而现今的应用服务更多是API形式来体现,服务测试也可以理解为API的测试,上层则是针对用户界面的GUI测试。

image

这个模型体现出在自动化测试中,越底层的自动化测试所占比重应该越大,才有更好的投入产出比。中间这一层的API测试它既不像UI层那样维护成本巨大,很难跟上快速迭代的要求,同时它又比单元测试更能在业务逻辑上进行质量验证。所以现在一般认为API测试是自动化测试实施上的优先选择

HTTP协议基础

在正式开始Postman的功能介绍前,首先还是要介绍Postman的测试对象。Postman主要是针对HTTP协议接口的测试工具,所以本章首先介绍一下HTTP协议的基础知识。

HTTP,即超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议,目前主要使用的1.1版本,基于TCP/IP通信协议来传递数据(HTML,文件、数据、API接口消息等)

http协议工作于客户端-服务器即C/S架构上
image

HTTP消息组成

客户端发送一个HTTP请求到服务器,请求消息包括以下格式:

请求行(request line)、请求头部(header)、空行和请求数据四个部分。如图

image

如下是一个请求百度首页的请求示例:

GET https://www.baidu.com/ HTTP/1.1
#请求方法  URL HTTP协议版本
Host: www.baidu.com
#请求服务器地址
#以下是消息头内容
Connection: keep-alive
#连接方式:长连接
Cache-Control: max-age=0
#请求缓存控制,需确认请求内容是否有修改
Upgrade-Insecure-Requests: 1
#支持https协议
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
#请求客户端,浏览器版本
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
#支持的响应内容类型
Accept-Encoding: gzip, deflate, br
#支持的编码类型
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
#支持的语言
Cookie: BAIDUID=C0A2...
#携带的cookie信息
#未携带请求消息体,body为空

服务器接收并处理客户端发过来的请求,返回一个HTTP的响应消息。也由四个部分组成,分别是:

响应状态行、消息报头、空行和响应正文。 如图

image

如下是百度首页的响应示例

HTTP/1.1 200 OK
#协议版本 消息状态码 状态描述
Bdpagetype: 2
Bdqid: 0x8707d7d80001f34e
#自定义消息头
Cache-Control: private
#缓存控制策略
Connection: Keep-Alive
#长连接
Content-Type: text/html;charset=utf-8
#响应内容类型
Date: Sat, 22 Dec 2018 08:54:51 GMT
#响应时间
Expires: Sat, 22 Dec 2018 08:54:51 GMT
#过期失效时间
Server: BWS/1.1
#服务器系统及版本
Set-Cookie: BDSVRTM=372; path=/
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: path=/; domain=.baidu.com
#设置客户端cookie
Strict-Transport-Security: max-age=172800
#严格安全传输,有效时间
X-Ua-Compatible: IE=Edge,chrome=1
#兼容浏览器版本
Content-Length: 191722
#消息体长度
#以下消息体内容
<!Doctype html>
<html xmlns=http://www.w3.org/1999/xhtml><head>
...
HTTP方法

HTTP方法是请求消息中携带的关键信息,告知服务器本次请求希望进行的操作类型。目前在HTTP1.1版本中常见以下方法

No. 方法 描述
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 TRACE 回显服务器收到的请求,主要用于测试或诊断。
8 PATCH 从客户端向服务器传送数据,取代指定文档的部分内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

城下秋草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值