当前位置: 首页 > news >正文

MockServer 服务框架设计

大部分现有的 mock 工具只能满足 HTTP 协议下简单业务场景的使用。但是面对一些复杂的业务场景就显得捉襟见肘,比如对 socket 协议的应用进行 mock,或者对于支付接口的失败重试的定制化 mock 场景。

为解决上述问题,霍格沃兹测试学院设计并研发了 CSRMockServer 在下面的文章中简称 mock server。

mock server 相较于这些 mock 工具,具有规则更灵活、定制化更强、支持拓展多协议的特点。在本章节将会从架构设计介绍如何实现以上的特点,而在实战章节,会针对具体的测试场景,演示不同的解决方案。

框架设计

若想实现上述特点,一定要有一个合理的架构设计。mock server 架构设计:

76d60e0de52e3d7caac0cc057d627379.jpeg

框架的设计主要分为五个部分:

客户端

  • 客户端主要负责与 mock 服务的交互,由测试人员制定 mock 的请求响应规则,以及启动/停止 mock 服务。

代理

  • 负责请求和响应的收发,接收到请求后,先转发给 Mock 引擎,mock 引擎收到请求响应数据进行处理后,再返回给代理响应信息,代理给服务器返回模拟的响应值。

协议(protocol)

  • 不同的协议的请求、响应数据格式往往不相同,既有标准的 json 结构体,也有二进制或十六进制的数据类型。这部分数据需要在协议层进行处理之后,才好进行相关的逻辑处理。所以协议层(protocol)主要负责和协议相关的数据处理。

  • protocol 还具备很强的很拓展性,如果一个系统涉及到了多协议的 mock,测试人员可以给不同的协议指定不同的规则,以此达到多协议 mock 的作用。具体的使用会在后面的章节进行演示。

Mock引擎

  • mock 逻辑的驱动引擎,根据不同功能模块的请求,分发给 mock 服务的对应的实现接口。

后台服务

  • 提供与 mock 服务交互的对外接口。

设计优点

  • 提供了后台服务接口,测试人员添加规则、控制 mock 服务更加灵活

  • 定制化更强,内置支持根据索引、消耗、mock 后添加动作等操作

  • 通过切换不同的 protocol 与代理服务,即可实现多协议的支持,扩展性强mock server 框架就先介绍这些,后面将会演示 mock server 的使用流程哦。

免费领取:性能测试+接口测试+自动化测试+测试开发+测试用例+简历模板+测试文档


相关文章:

  • 【web-利用信息泄露】(10.2)收集公布的信息、使用推论
  • java计算机毕业设计文档资料管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  • JS中数组reduce()方法使用
  • 国稻种芯百团计划行动 任万军:减穴稳苗方法提高稻米品质
  • 新房IM转加私五步骤!!!
  • FPGA结构分析——ODDR,网口储备点2
  • DFS之剪枝与优化AcWing 166. 数独
  • 公司保护知识产权做法有哪些
  • Map和mybatis
  • 信息化与工业化融合,MES管理系统助力制造业发展
  • 国稻种芯百团计划行动 邓兴旺:依靠中国农业现代化的实现
  • Promethues入门,看懂不会写
  • Windows 10硬盘数据怎么永久擦除?
  • Jenkins 踩坑(四)|基于接口自动化测试完成
  • package.json配置
  • 【知识碎片】第三方登录弹窗效果
  • bearychat的java client
  • Django 博客开发教程 16 - 统计文章阅读量
  • Javascript 原型链
  • JDK9: 集成 Jshell 和 Maven 项目.
  • js中forEach回调同异步问题
  • Logstash 参考指南(目录)
  • Markdown 语法简单说明
  • PaddlePaddle-GitHub的正确打开姿势
  • SpingCloudBus整合RabbitMQ
  • SQLServer之索引简介
  • 闭包--闭包作用之保存(一)
  • 程序员该如何有效的找工作?
  • 从零开始学习部署
  • 构建工具 - 收藏集 - 掘金
  • 好的网址,关于.net 4.0 ,vs 2010
  • 技术:超级实用的电脑小技巧
  • 技术胖1-4季视频复习— (看视频笔记)
  • 精彩代码 vue.js
  • 两列自适应布局方案整理
  • 如何合理的规划jvm性能调优
  • 深入 Nginx 之配置篇
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • $NOIp2018$劝退记
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (C语言)共用体union的用法举例
  • (TOJ2804)Even? Odd?
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十八)SpringBoot之发送QQ邮件
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (一一四)第九章编程练习
  • .net6使用Sejil可视化日志
  • .Net程序帮助文档制作
  • @JsonFormat与@DateTimeFormat注解的使用
  • @staticmethod和@classmethod的作用与区别
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [Assignment] C++1
  • [BUG] Authentication Error