这个系列有一个前提基础,就是HTTP协议基础,有了HTTP协议基础,再来学习这个内容。本内容主要是介绍使用Java语言,利用RestAssured这个框架,到达进行接口自动化测试的目标。本篇主要来了解下什么是REST或者RESTFUL,然后了解框架RestAssured是什么,能做些什么。
1.REST或者RESTFUL
REST是一种软件架构风格,其实就是这么一个特点就行。全称是Representational State Transfer,翻译过来叫 表属性状态传递。很绕口,看不懂什么意思对不对。
表述性状态转移是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。需要注意的是,REST是设计风格而不是标准。
所以,REST就是WEB产品设计中一种软件架构风格,有自己的原则和约束条件,但不是强制性。了解这么多就行了,主要是现在很多WEB产品都是这种设计,既能满足PC 浏览器以及手机的访问,所以我们才需要学习这种风格的软件的接口测试。
想要了解更多,请看百度百科词条:https://baike.baidu.com/item/rest/6330506?fr=aladdin
2.RESTFUL架构具有功能
每个系统都使用资源。 这些资源可以是图片,视频文件,网页,商业信息或可以在基于计算机的系统中表示的任何内容。 服务的目的是为其客户提供一个窗口,以便他们可以访问这些资源。 服务架构师和开发人员希望此服务易于实现,可维护,可扩展和可伸缩。 通常,RESTful服务应具有以下属性和功能:
Representations,表述性
RESTful服务的重点是资源以及如何提供对这些资源的访问。 资源可以很容易地被视为OOP中的对象。 资源可以包含其他资源。 在设计系统时,首先要确定资源并确定它们之间的相互关系。 这类似于设计数据库的第一步:识别实体和关系。
一旦我们确定了我们的资源,我们需要的下一件事就是找到一种在我们的系统中表示这些资源的方法。 您可以使用任何格式来表示资源,因为REST不会对表示的格式施加限制。所以,千万不要以为REST风格的设计,就一定采用JSON进行数据交换,在REST中也可以使用XML存储和数据交换,这个没有强制规定。只不过,我们在工作中,看到的设计,绝大部分都是采用JSON格式来进行数据交换。
Messages, 消息
客户端和服务通过消息相互通信。 客户端向服务器发送请求,服务器回复响应。 除实际数据外,这些消息还包含有关消息的一些元数据。这个HTTP消息,在我文章开头说的前提系列中有,详情去看:https://blog.csdn.net/u011541946/article/details/96130797
简单来说,一个消息包含以下部分
URIs 统一资源标识符,这个在HTTP协议基础也有介绍,这里不再重复。
Uniform interface 统一接口
统一的接口就是,不管是浏览器还是移动app,都是同一个接口请求。主要是GET POST PUT DELETE这几个方法。
Stateless 无状态的意思
RESTful服务是无状态的,不会为任何客户端维护应用程序状态。 请求不能依赖于过去的请求,并且服务会独立地处理每个请求。这个无状态通信是REST的一个设计原则。服务器除了当前请求之外,它不知道客户端什么状态,不会纪录和本次请求之外的其他数据。
Links between resources 资源之间的联系
资源表示可以包含指向其他资源的链接,例如HTML页面包含指向其他页面的链接。 服务返回的表示应该像网站一样驱动流程。 当您访问任何网站时,您将看到一个索引页面。 单击其中一个链接并移至另一个页面,依此类推。所以,在设计之前,考虑好对象之间的关系很重要。
Caching 高速缓存
缓存是存储生成的结果并使用存储的结果的概念,而不是在相同的请求在不久的将来到达时重复生成它们。 这可以在客户端,服务器或它们之间的任何其他组件上完成,例如代理服务器。 缓存是提高服务性能的好方法,但如果管理不当,可能会导致客户端被提供过时的结果。
缓存是可以通过HTTP 中头部的 Cache-Control 这个字段来控制。
以上就是REST风格的架构具备的一些特点或者功能,了解一下就好。
3.RestAssured简介
REST Assured 是由 Johan Haleby开发和维护,当然这些年有很多人往这个github贡献过代码,使得这么这个工具越来越流行。
这个框架使java语言写接口测试用例变成和ruby和groovy语言一样容易和简单。
官方网站是:http://rest-assured.io/
官方文档:http://rest-assured.io/#docs
github项目地址:https://github.com/rest-assured/rest-assured
这个是这个框架的Logo, 下一篇我们创建一个maven项目,然后引用Rest-Assured框架。