本书是资深互联网高级工程师阿奎结合自己多年的经验写就的一本指导初学者学习Python编程和自动化测试中的HTTP接口测试的书。通过闯关游戏式的独特学习模式,通过在线读者圈增值服务,指导读者掌握高效学习计算机编程和应用。
本书主要包含三部分内容,第一部分为Python编程基础,第二部分是HTTP协议,第三部分是HTTP接口测试实战。让读者可以从零开始,逐步掌握Python语言,具备基本的Python编程基础。通过练习的方式了解HTTP协议中常用的概念和机制。最后,将两者相结合,学会用Python进行HTTP接口测试,主要采用Python的单元测试方法进行HTTP接口测试工作,通过一步一步的练习,读者会掌握unittest单元测试框架的使用,掌握测试数据的外部化(到文件和到Excel等),掌握HTTP接口的发现和探测。 本书亦学亦练,学练结合,每个章节分为多个小节,每个小节的前半部分会对本小节的知识点主题进行详细的介绍,后半部分会启动一个练习,让读者边阅读边练习,在练习中检验学习的成果。
2.3 Restful接口
REST是一种互联网软件架构原则,即Representational State Transfer的缩写,由Roy Thomas Fielding在其2000年的一篇论文(Architectural Styles and the Design of Network-based Software Architectures)中提出。
The Representational State Transfer (REST) style is an abstraction of the architectural elements within a distributed hypermedia system. REST ignores the details of component implementation and protocol syntax in order to focus on the roles of components, the constraints upon their interaction with other components, and their interpretation of significant data elements. It encompasses the fundamental constraints upon components, connectors, and data that define the basis of the Web architecture, and thus the essence of its behavior as a network-based application.
表征状态转移(REST)风格是分布式超媒体系统中的架构元素的抽象。REST忽略了组件实现和协议语法的细节,以便聚焦于组件的角色,组件间交互的约束以及对重要数据元素的解释。组件、连接器和数据是定义Web架构的基础,REST涵盖了对这三要素的基本限制,从而,也涵盖了三要素作为基于网络的应用程序的行为本质。
以上内容引用、翻译自论文“5.2 REST Architectural Elements”小节,地址为:https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm。
通俗地讲,REST风格的架构就是一种将要操作的业务数据作为资源,分配一个固定的URL地址,然后,通过HTTP的四个请求方式:POST、DELETE、PUT、GET,分别对应业务数据的增、删、改、查四种操作。
比如,我们有一个客户信息,给定一个URL为http://www.example.com/ customer,那么,可以通过对这个URL分别发送四个请求方式对应四个针对某一条业务数据的操作:
● POST请求 /customer 创建一个新的客户。
● DELETE请求 /customer/111 删除id为111的客户。
● PUT请求 /customer/111 更新id为111的客户的信息。
● GET请求 /customer/111 查询id为111的客户的信息。
虽然从原理上来说,REST架构风格是无关乎通信协议的,但是在实际使用过程中,绝大部分REST架构组件之间的通信接口,也就是所谓的Restful接口,都是采用的HTTP作为其通信接口协议的。所以,一个Restful接口的请求,实际上很多情况下与一个普通的HTTP请求并无本质的区别。
通过对Ajax和Restful的简单了解,我们可以看到,随着互联网的发展,前后台部件之间以及网络应用组件之间的新的结构风格和通信机制层出不穷,而HTTP协议在这些新的架构风格和通信机制中扮演了非常重要的基础通信协议的角色。
对于一名测试人员来说,掌握接口测试,掌握HTTP协议,进而掌握HTTP协议下的接口测试已经变得日益重要起来。