[接口测试 - 基础篇] 01 你应该了解的协议基础
概述
对于很多软件测试从业人员而言,可能并不具备协议相关基础,更别说去独立的构建协议抓包环境、分析协议报文,并在实际测试过程中结合业务进行接口级自动化测试。
下面本节从笔者实际从业过程中,进行一些总结来阐述说明软件测试从业人员应该了解、掌握的一些协议基础、重点、服务、工具等等。、
- TCP/IP协议
- HTTP协议
- Web Service服务
- RESTful风格
- 常用工具
TCP/IP协议
首先你需要理解TCP/IP的基本说明,百度百科简要说明如下:
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。
其次你需要了解并掌握TCP/IP的架构:
对于上图,本文不做任何说明,请自行闭关领悟。
再次你则需要了解并掌握TCP三次握手建立连接过程:
注:如果你说看不懂英文,需要看中文,请离开,谢谢
TCP四次挥手断开连接过程,本文不再列举,请自行找资料学习。
详细的TCP/IP指南请参见:http://man.chinaunix.net/develop/rfc/RFC1180.txt
HTTP协议
请参见:《工具篇 - HTTP协议报文结构及示例03》
HTTP 1.0: http://man.chinaunix.net/develop/rfc/RFC1945.txt
最新的http协议RFC文档已经被差为以下6个文档:
RFC7230 - HTTP/1.1: Message Syntax and Routing - low-level message parsing and connection management
RFC7231 - HTTP/1.1: Semantics and Content - methods, status codes and headers
RFC7232 - HTTP/1.1: Conditional Requests - e.g., If-Modified-Since
RFC7233 - HTTP/1.1: Range Requests - getting partial content
RFC7234 - HTTP/1.1: Caching - browser and intermediary caches
RFC7235 - HTTP/1.1: Authentication - a framework for HTTP authentication
注:请根据RFC编号,在http://www.faqs.org/rfcs/输入编号查阅文档原文。
懒啊,只好把英文的链接放这了,不爱看的请绕路~~
重点补充,对于http至少要掌握以下几个方面的知识:
- HTTP报文结构
- HTTP方法(PUTGETPOSTHEAD等)应用场景
- 常见的状态码含义(200302400500等等)
- HTTP头的构成
- Cookies的管理
RESTful风格
作为当下web开发最为潮流的一种设计风格,软件测试从业人员必须了解RESTful风格的特性。
RESTful
REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。
RESTful关键
RESTful的关键是定义可表示流程元素/资源的对象。在REST中,每一个对象都是通过URL来表示的,对象用户负责将状态信息打包进每一条消息内,以便对象的处理总是无状态的。
RESTful的第二大问题是组合管理及流程绑定。企业对正规的(基于SOAP)SOA最大的反对声之一便是,这种等级的发现和绑定灵活性不足以适应复杂性。
理解下RESTful:
要理解RESTful架构,需要理解Representational State Transfer这个词组到底是什么意思,它的每一个词都有些什么涵义。
下面我们结合REST原则,围绕资源展开讨论,从资源的定义、获取、表述、关联、状态变迁等角度,列举一些关键概念并加以解释。
- 资源与URI
- 统一资源接口
- 资源的表述
- 资源的链接
- 状态的转移
更详细请参见Roy Thomas Fielding在他2000年的博士论文:http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
在后续的文章中,会结合实例演示如何测试restful风格的api。
常用工具
要掌握协议,必不可少的要掌握分析工具, 对于http抓包分析,笔者推荐使用浏览器自带的插件,例如:
- firefox下的firebug
- chrome直接按F12调出调试工具
第三方抓包工具,大家可以使用:
- fiddler
- httpwatch
专业的抓包工具可以使用:
- wireshark
总结
本文由拼凑的各种资源整合而成,同时有N个外链跳接出去学习,仅此而已
- 简单的 H5 视频推流解决方案
- 来腾讯云开发者实验室学习.NET
- 跨域资源共享(CORS)在ASP.NET Web API中是如何实现的?
- 使用腾讯云 GPU 学习深度学习系列之六:物体的识别与定位
- npm5 新版功能特性解析及与 yarn 评测对比
- H5直播避坑指南
- 龙门阵之 DevOps 门外汉须知
- 全面进阶 H5 直播(上)
- 这年头,不会斗图都毕不了业?
- 龙妈也会死?《权力的游戏》 AI 算法预测丹妮女王危在旦夕
- 腾讯云 GAME-TECH 沙龙干货回顾:海外网络拓展及质量把控
- 通过扩展让ASP.NET Web API支持W3C的CORS规范
- 腾讯云GAME-TECH沙龙干货回顾:腾讯游戏云全球化实践
- 腾讯云GAME-TECH沙龙干货回顾:猎豹游戏出海经验分享
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法