乐趣区

关于restful:针对-Restful-协议下的接口测试平台设计


利用背景

目前市场上很多 Web 利用转向了 RESTful 的架构,往往裸露给用户的往往就是一组 REST API,这样的益处就是,研发人员能够依据须要调用不同的 API,整合出本人的利用进去。

这样每组 API 就会造成一个信息中心,各个信息中心联合在一起,就造成了一个互联互通的信息架构。所以针对此种轻量级的风行架构,接口服务的场景测试必不可少,目前支流的 postman 或者 jmeter 之类的工具尽管也能够胜任,然而对于整体设计来说总是欠缺一些什么。

像阿里巴巴之类的大厂始终在推举本人自定义去做一些品质平台,有针对性的去设计适宜本人产品的测试计划,这里存在一个开源的接口服务框架,能够反对 restful 协定,并能够反对 xml、json 之类的数据格式的传输、验证、断言等。

REST Assured 是一套由 Java 实现的 REST API 测试框架,它是一个轻量级的 REST API 客户端,能够间接编写代码向服务器端发动 HTTP 申请,并验证返回后果;它的语法十分简洁,是一种专为测试 REST API 而设计的 DSL。

官网地址: https://rest-assured.io/
官网文档: https://rest-assured.io/#docs
Github 我的项目地址: https://github.com/rest-assur…

简略的实际

如果在 IDE 配置一个简略些的接口测试环境,那咱们首先能够将 REST Assured 配置到 Maven 中:

配置好后,咱们来看一个典型的测试案例:

在 src/test/java 下创立一个包,起名叫 OurTest,在该包下创立一个 GioApiTests 类

接下来咱们来看一下代码:

public class OurTest{

@Test
public void getAddress(){given() requestApplication.get(s:”https://ip:8090/trueTest/com/ourname/226514”) Response .then()ValidateReponse.statusCode(200);
}

@Test
public void postOurName(){String json=”{“\firstName\“:\”wangtao\”,\”secondName\”:\”tao\”}”;
given() RequestApplication.contentType(“application/json“)RequestApplication.body(json)RequestApplication.post(s:”ip:8090/trueTest/com/ourname”)response.then()ValidateReponse.statusCode(200);
}

}

上面咱们来解释一下:

首先就是 given()就是 REST Assured 的一个典型的办法,所有的申请的内容(header、body 等)都是在这里形容。get 和 post 我就不必多说了,发送申请的形式,then () 是申请后须要做哪些,statusCode 是用来判断返回值是不是 200。
这样讲下来咱们很容易了解,根本就是基于一系列简略的发送、绑定、验证的过程。
当然,咱们在设计自动化 API 平台的时候,咱们还是须要有平台化的理念在外面,对于不相熟代码开发的测试团队,咱们须要将输出项以页面的模式出现,而有肯定开发功底的团队,咱们则能够像下面一样,基于代码和 rest-assured 的语法去进行一系列的开发工作。

进阶的实际

1、REST Assured 有一种要求就是须要咱们最好进行动态导入:

io.restassured.RestAssured.*
io.restassured.matcher.RestAssuredMatchers.*
org.hamcrest.Matchers.*

这样能够进步应用中的一些效率。

2、REST Assured 将主动尝试基于 HTTP 办法确定哪个参数类型(即查问或表单参数)

在 GET 的状况下,查问参数将被主动应用,在 POST 的状况下将应用表单参数。在某些状况下,重要的是在 PUT 或 POST 中拆散表单和查问参数:

given(). formParam("formParamName", "value1"). queryParam("queryParamName", "value2"). when(). post("/something");

一些参数也能够在 url 上进行设置:

when().get("/name?firstName=wang&lastName=tao");

3、对于 cookies 的应用

通常模式下,您能够通过以下办法指定 Cookie:

given().cookie("username", "John").when().get("/cookie").then().body(equalTo("username"));

也能够像这样给 cookie 指定多个值:

这将创立两个 cookie:

cookieName = value1 和 cookieName = value2。

还能够应用以下形式指定具体的 Cookie:

Cookie someCookie = new Cookie.Builder("some_cookie", "some_value").setSecured(true).setComment("some comment").build(); given().cookie(someCookie).when().get("/cookie").then().assertThat().body(equalTo("x"));

或同时指定 多个 cookie:

Cookie cookie1 = Cookie.Builder("username", "John").setComment("comment 1").build(); Cookie cookie2 = Cookie.Builder("token", 1234).setComment("comment 2").build(); Cookies cookies = new Cookies(cookie1, cookie2); given().cookies(cookies).when().get("/cookie").then().body(equalTo("username, token"));

4、还像点样子的断言

状态码的断言:

get("/x").then().assertThat().statusCode(200). .. get("/x").then().assertThat().statusLine("something"). .. get("/x").then().assertThat().statusLine(containsString("some"))

齐全匹配的断言:

get("/x").then().assertThat().body(equalTo("something"))

表单的验证:

表单的代码:

<html><head><title>Login</title></head> 
<body>
<form action="j_spring_security_check" method="POST">
<table><tr><td>User:&nbsp;</td><td><input type='text' name='j_username'></td></tr> <tr><td>Password:</td><td><input type='password' name='j_password'></td></tr> <tr><td colspan='2'><input name="submit" type="submit"/></td></tr> 
</table></form> 
</body></html>

断言:

given(). auth().form("wang", "tao"). when(). get("/formAuth"); then(). statusCode(200);

经验总结

基于目前市面的支流品质平台的框架,自己举荐 VUE+Springboot+Mybatis+Mysql 的根本框架,API 接口测试以及其所设计的场景架构,举荐 REST Assured 的二次封装的办法(造成 REST Assured API),与基于 VUE 的前端框架相配合,前端收集报文参数,转化成 Json 格局传输给 REST Assured API,首先预判 URL 是否可用,再转化承受解析报文,返回 Response 再解析断言后果,单线程之间的变量与参数贮存在缓存中,敞开即可隐没,然而在场景中,倡议存储在本地文件或者 appolo 这种配置文件存储介质中。

心愿大家多多发散,多多总结,联合产品个性,灵便设计品质平台的定制化性能。

作者:王涛 / 测试经理

招聘信息

GrowingIO 技术团队是一个生机四射、对技术充斥激情的团队,多个岗位继续招聘中!诚招 大数据工程师 / Java 工程师 / 数据挖掘工程师 等。欢送有趣味的同学投递简历至:jianli@growingio.com(邮件题目请注明具体岗位名称)。更多职位及信息可进入招聘官网查看!

对于 GrowingIO

GrowingIO 是国内当先的一站式数据增长引擎整体计划服务商,创建于 2015 年,以数据智能剖析能力为外围,通过构建客户数据平台,打造增长营销闭环,帮忙企业晋升数据驱动能力,赋能商业决策、实现业务增长。

点击「此处」获取 GrowingIO 15 天收费试用!

退出移动版