您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
Docker技术的测试应用——接口测试平台
 
  4144  次浏览      19
 2017-1-26 
 

 

编辑推荐:

本文来自于infoq,本文主要讲解,如何巧用Docker的天然优势,构建一个扩展性强的接口测试平台,以及构建平台过程中遇到的技术细节。

HTTP接口测试是大家接触较多的一种测试类型,也是做自动化验证、快速回归的重要手段。

1 接口测试基本流程

接口测试的基本流程是这样的:根据接口规范文档,构造请求参数(正面的、反面的、边界值等),然后发送http请求到服务端,服务端处理完返回对应的数据,然后验证返回值是否符合预期。整个流程如下图所示:

 

2 常见接口测试工具

下图对比了一些常见的接口测试工具:

3 理想中的接口测试平台需要具备哪些功能

作为一个点点点工程师,希望接口测试可以通过点点鼠标就可以轻松完成一次接口测试,上面的那些工具虽然各有优势,但是用起来并不那么轻松。

下面列出各种理想中接口测试是怎样的:

1)可视化的编辑http请求

2)无缝接入持续集成

3)方便的准备测试数据

4)灵活的圈定用例集

5)用例可复制共享协作

6)支持定时任务

7)支持场景化的测试

8)用例可以快速的在不同环境中执行

9)支持并发执行

10)直观看到测试过程中的各种数据

4 接口测试平台功能分析

基于上面的需求,我们开发了一个定制化的接口测试平台,外观如下图所示:

核心功能是用例创建、执行、管理,下图是产品架构图:

5 平台的架构

下图是接口测试平台主要的架构:

从架构图中可以看到,主要的核心服务有三个:

1)web服务,主要负责用例、环境等的管理

2)调度器,负责下发任务、数据转发等

3)执行器,是轻量的Docker容器,是具体用例的执行就是在执行器里面操作的

6 具体的功能介绍

1)用例创建:

用例五元组: URL、请求类型、用例名、请求头、请求参数

用例参数获取方式: 固定值、外部获取、系统生成、其他用例

校验方式支持:json校验、请求包含、请求不包含、正则表达式、httpcode

支持单用例多组数据

支持用例复制、重新编辑

执行记录有保存

2)用例执行

动态指向不同的测试环境

执行环境相互隔离

列出执行结果中的关键信息

给出校验结果

3)用例集

任意用例组合成一个集合

执行时可以指定执行器

支持单次执行和并发执行

动态的显示执行结果

7 技术改进

point1:用例并发执行

用例并发执行的原理是将任务推送到broker,然后通过启动多个消费者worker来并发的消费任务,从而达到并发流量的目的。但是这样会带来一个问题,当多个用户同时在平台上面提交了并发执行任务后,由于任务没有区分优先级,导致有些用户的请求必须等到前面的任务执行完了才能得到响应,用户体验很不好。解决的方案就是让消费者worker有区别的去消费不同的任务,例如user1的任务,只让worker1来消费,其他的worker不会消费,这样就达到了用户并发任务都能达到及时响应。

下图给展示了任务并发的架构改进:

point2:协议的设计演进

刚开始,调度器和执行器之间是基于http请求的,但是发现http请求对资源的消耗比较大,而且随着执行器不断的增加,对调度器而言开销会越来越大,性能会急剧下降。现在将协议改成socket,调度器和执行器之间维护长连接,这样减少了http创建连接的开销。任务通过msgpack下发,消息体里面定义任务的类型。

point3:执行器管理

上面提到执行器是通过docker实现的,这样做的好处有:

通过docker来实现网络隔离

swarm做调度,shipyard做可视化的集群管理

可以动态的扩展资源,接入成本更低

   
4144 次浏览       19
相关文章

微服务测试之单元测试
一篇图文带你了解白盒测试用例设计方法
全面的质量保障体系之回归测试策略
人工智能自动化测试探索
相关文档

自动化接口测试实践之路
jenkins持续集成测试
性能测试诊断分析与优化
性能测试实例
相关课程

持续集成测试最佳实践
自动化测试体系建设与最佳实践
测试架构的构建与应用实践
DevOps时代的测试技术与最佳实践