微信搜索【大奇测试开】,关注这个坚持分享测试开发干货的家伙。

平台背景

从业务特性上,不少测试的服务很多是依赖第三方的接口的,比如其中的支付场景,就需要很多状态的返回进行验证,但大部分服务提供商没有很友好的测试环境或者沙箱环境,提供的测试账号能做的场景也有限;从技术层面,服务不想在代码里做过多侵入Mock,也想充分利用统一配置服务做快速切换;从测试团队来讲,可以为业务特性适配简单好用,也想找一种内部自动化和平台配置的数据驱动方案,另外也是想找一个技术平台推动全员的技术参与度。

基于以上的一些内容便有了这个Mock平台,还是和上个系列一样,这里重新整理和开发,作为一个测试平台开发练手项目分享出来,希望对正在找干货,爱学习的同学提供一些微不足道的学习途径,当然这个平台其实具有实用价值,后续可以直接使用或者二次开发扩展使用

Mock流程

整个实现层面比较简单,画了一个示意图做参考,一部分web页面(服务1 前端+后端)进行接口的录入和配置,另一部分则是外部的依赖请求流程(服务2 纯后端独立)核心是做http拦截和匹配返回,这里还有一个待定实现的proxy代理功能,既手机可以通过局域网设置带来走mock,这种最大的好处就是连服务的统一配置都不需要做变更。

功能概述

这里先罗列出大的包含的功能模块,以便有个整体概念,然后在给出详细的prd和需求说明,方便后续开发实现。

Web前后端

  • 项目管理
  • 分类树管理
  • 接口录入和编辑
  • 规则简单和高级配
  • 返回支持标准JSON和XML
  • 数据图表Dashboard

独立Mock服务

  • 请求拦截功能
  • 匹配接口和规则
  • 按照HTTP规范组装返回
  • 高级设置逻辑处理工具
  • Proxy代理 (TBD)

原型和需求说明

一、项目管理

平台项目必不可少的基础配置,更大的团队可以加入空间的概念或者跟组织架构做关联,能更好方便后统计和管理。

1.搜索功能

支持项目名称关键字输入,点击后进行模糊搜索

2.展示列表

表格展示分页接口项目列表,页面初始化默认查询空关键词第一页数据

  • 按照更新时间倒序排序
  • 支持分页,默认每页10条
  • 分页选项为5-10-20-30-50,支持快速转跳
  • 列表功能列包含编辑和进入项目菜单

3.操作项目

  • 添加功能在搜索列最右侧,点击后弹窗形式
  • 添加和编辑对话包含项目名称(必填)和描述,确定提交成功后进列表刷新

二、接口分类管理

接口的数量可能很多,这里增加一个分类tree功能,可以进行归类和查询,如原型图将其放在项目同页面的最左侧区域,方便直接切换过滤。

添加分类:通过点击添加按钮弹出对对话框,字段分别为名称(必填)和描述

分类编辑:选中某个分类后出现编辑按钮,点击后操作与添加相同,另外为了增加交互可以根据控件情况实现右侧快捷菜单和不限层级的分类结构

三、接口配置

平台核心功能,实现标准HTTP接口的录入和管理,涉及的核心字段包括但不限于方法、路径、返回值,提前说明一点的是,接口只做基本配置和默认返回,更多高级的配置玩法将在规则管理中实现。

详细的需求交互拆解如下:

1. 列表展示

对于一个项目或者微服务一般接口数量不会太多,所以列表可以不分页直接展示全部,另外接口还可以通过分类切换进行快速过滤,列信息参考原型图,右侧操作列功能按钮包括“修改接口”和“规则配置”。

2. 新增和编辑

通过点击对应按钮弹出添加/编辑对话框字段包括:

  • 对话框文案:标题和提交按钮根据操作动作展示区分文案;
  • 标题必填名字,且1-20个字符校验;
  • 方法:必选,支持GET/POST,默认GET为第一选项;
  • 路径:接口实际请求path(不含host)字符500以内;
  • 分组:即左侧分类归属,非必填不选择则放在全部下;
  • 返回类型:目前设计支持JSON和XML两种,其他可根据业务需求自行定义;
  • 默认返回:接口在没有规则配置的情况的默认返回,非必填,如果没有设置并且Mock逻辑拿了这个值则为空;
  • 备注:非必填自负,500字符以内,仅作为一些备注说明;
  • 取消按钮:关闭对话框,如果是添加并清空历史缓存信息;
  • 添加/修改:进行表单的提交,数据落库。

3. 规则操作

点击规则配置,在当前接口下展开子区域,然后进行规则管理,再次点击关闭展开。扩展:快速开启/关闭接口是否生效功能(TBD)。

四、规则配置

接口之下另一个核心功能续期,往往其他mock平台太过于简单,只有默认返回的时候,就不得不每次测个场景就要做些接口返回变更,这里加入更高级一点规则配置,可以根据输入的参数返回不同的数据,这样方便各种类型的测试,也更能灵活的放在自动化的Mock需求场景上。

为了交互上的便捷,通过接口表行点击扩展页面来实现规则的增删改操作,规则主要针对请求参数规则匹配然后返回不同的Body,本系列上通过一种简单的方式 正则表达式来实现匹配逻辑,更好一点交互是做到 param/body的key-value形式。

规则管理分两种类型

1. 简单配置

通用标题必填,类型选项选择简单配置也是默认的选项。

  • 参数过滤选项:支持param和body
  • 参数过滤值:完全匹配或正则匹配
  • HTTP返回体:json或者xml,这个根据接口配置的返回类型设定

2.高级配置

在简单配置的基础上增加的扩展配置,这些都是指返回内容的设置。

  • HTTP返回码:不配置或默认选项为成功200,也可以配置为其他状态码,如302,401等根据业务常见状态设定
  • HTTP返回头:特殊场景需求下header的返回场景需要,比如格式、协议等
  • 延迟:模拟一些需要延迟返回的场景,默认为0,单位毫秒

五、数据报表

接口相关的数据统计,初步计划展示一些概要汇总,以及调用的趋势图,这里趋势的统计需要依赖后段服务做个请求日志存留,详细界面和数据内容做到的时候在详细说明,此处仅做个概要原型预览。

六、功能扩展

除了上述是已经确定的需求会开发,还将根据实际进度进行决定是否做一些扩展的功能,包括但不限于如下内容:

  1. 接口分类树管理支持多层配置
  2. 代理能力的实现(即实现移动端无缝使用ock)
  1. 平台支持忽略转发(即接口禁用或没有匹配时候直接原封转发)
  2. 项目权限的管理
  1. 接入飞书/企业微信/钉钉至少一种统一登录和通知能力
  2. ...

更多希望大家也参与进来,将一些通用有价值的功能合作开发出来。

技术选定

后端接口:已确定为JAVA语言框架 springboot

前端框架还未最终确定,还需要调研权衡下,主要是项目之前用的element ui admin以及上个系列提测平台也是这个框架,本着突破自己舒适区以及尽可能提供广大学习者的更多选择,所以会定在 React 的 ant design pro xing ✩✩✩ 或者antdvue ✩✩,后者推荐星数少的在于没有比较好的Vue3开箱即用的项目。

Mock服务:Springboot HandlerInterceptor

数据库:Mysql 5.7+

Mock分享规划

跟提测平台差不多,会从几个方面做系列分享:

  • 基础篇:对于从未接触前后端框架的基础使用普及2~5篇
  • 开发篇:对上述产品需求进行开发实战讲解分享 10篇左右
  • 总结篇:阶段的总结2~3篇
  • 深度篇:一些知识点的扩展深度学习1~2篇
  • 扩展开发:根据系列分享的效果决定是否迭代开发扩展待定需求

最后欢迎大家持续关注 《大奇测试开发》公众号一起学习成长,完整的PRD在线文档可公众号发送 “Mock原型” 关键字获取。

【Mock平台】测试开发实战01-开篇PRD和需求详细的更多相关文章

  1. 《自动化平台测试开发-Python测试开发实战》新书出版了

    首先 第一本书,当初在百度阅读初步写了个电子版,刚一上线不久即收到了数百位读者朋友阅读收藏购买,于是顺利成章就出版了纸质书. <软件自动化测试开发>认真看过的读者应该都知道,介绍的主要是自 ...

  2. 测试开发实战[提测平台]20-图表G2Plot在项目的实践实录

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. G2Plot项目应用 上一篇<提测平台19-Echarts图表在项目的实践>讲解了Echarts的图表应用,此篇来看下开箱即用 ...

  3. 微信公众平台网页开发实战--3.利用JSSDK在网页中获取地理位置(HTML5+jQuery)

    复制一份JSSDK环境,创建一份index.html文件,结构如图7.1所示. 图7.1  7.1节文件结构 在location.js中,封装“getLocation”接口,如下: 01 wxJSSD ...

  4. 测试开发【Mock平台】04实战:前后端项目初始化与登录鉴权实现

    [Mock平台]为系列测试开发教程,从0到1编码带你一步步使用Spring Boot 和 Antd React 框架完成搭建一个测试工具平台,希望作为一个实战项目能为你的测试开发学习有帮助. 一.后端 ...

  5. 测试开发实战[提测平台]19-Echarts图表在项目的应用

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 在图表统计展示方面,笔者目前使用过的两种开源,分别是 Echats 和 G2Plot 组件,从个人使用上来讲前者应用更广.自定义开发更灵活 ...

  6. 测试开发实战[提测平台]17-Flask&Vue文件上传实现

    微信搜索[大奇测试开],关注这个坚持分享测试开发干货的家伙. 先回顾下在此系列第8次分享给出的预期实现的产品原型和需求说明,如下图整体上和前两节实现很相似,只不过一般测试报告要写的内容可能比较多,就多 ...

  7. 【课程分享】ASP.NET MVC5&amp;微信公众平台整合开发实战(响应式布局、JQuery Mobile,Windows Azure、微信核心开发)

    对这个课程有兴趣的,能够联系我QQ2748165793 基础知识储备 ASP.NET MVC 5基础(6讲) 第一讲-初识ASP.NET MVC并搭建整合开发环境 第二讲-深入MVC开发模式 第三讲- ...

  8. 《自动化平台测试开发-Python测试开发实战》第2次印刷

    书籍货源比较紧张.紧张啊,如此短的时间,已经第2次印刷.第2次印刷. 第2次印刷. 同时该书已确认与台湾出版社合作翻译成繁体版,甚至有可能与国外出版社合作翻译成英文版. 2018年7月 第1次印刷 2 ...

  9. 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发

    第一部分:微信公众号对接的基本介绍 一.填写服务器配置信息的介绍 登录微信公众平台官网后,进入到公众平台后台管理页面. 选择 公众号基本设置->基本配置 ,点击“修改配置”按钮,填写服务器地址( ...

随机推荐

  1. Nginx虚拟主机、日志排错、模块配置

    目录 Nginx虚拟主机 1. 基于多IP的方式 2. 基于多端口的方式 3. 基于多域名的方式 Nginx日志 Nginx配置文件配置项 Nginx模块 Nginx访问控制模块 Nginx状态监控模 ...

  2. python+selenium 定位元素的主要方法

    selenium对web各元素的操作首先就要先定位元素,定位元素的方法主要有以下几种: 通过id定位元素:find_element_by_id("id_vaule") 通过name ...

  3. 使用nexus搭建一个maven私有仓库

    使用nexus搭建一个maven私有仓库 大家好,我是程序员田同学.今天带大家搭建一个maven私有仓库. 很多公司都是搭建自己的Maven私有仓库,今天就带大家使用nexus搭建一个自己的私有仓库, ...

  4. 生产环境上,哨兵模式集群Redis版本升级应用实战

    背景: 由于生产环境上所使用的Redis版本并不一致,好久也没有更新,为了避免版本不同对Redis集群造成影响,从而升级为统一Redis版本! 1.集群架构 一主两从三哨兵: 2.升级方案 (1)升级 ...

  5. ADD software version display

    ADD software version display ADD software version display1. Problem Description2. Analysis3. Solutio ...

  6. Android官方文档翻译 八 2.1Setting Up the Action Bar

    Setting Up the Action Bar 建立Action Bar This lesson teaches you to 这节课教给你 Support Android 3.0 and Abo ...

  7. (2)用Micropython将ESP32数据上云

    之前我们尝试过直接把LED点亮并且闪烁. 今天尝试一下将LED的开关状态上云,并可以通过云来进行数据下发. 数据要上云,首先开发板要联网. 首先我们会用 Python的network 库, 在netw ...

  8. NAO机器人开发环境配置

    python python2.7用于NAO开发 https://www.python.org/downloads/release/python-2718/ python3.6用于其他程序测试. htt ...

  9. DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ | TORCH.AUTOGRAD

    torch.autograd 是PyTorch的自动微分引擎,用以推动神经网络训练.在本节,你将会对autograd如何帮助神经网络训练的概念有所理解. 背景 神经网络(NNs)是在输入数据上执行的嵌 ...

  10. java-异常-异常处理原则

    1 异常处理的原则: 2 * 1,函数内部如果抛出需要检测的异常,那么函数上必须要声明. 3 * 否则必须在函数内用trycatch捕捉,否则编译失败. 4 * 5 * 2,如果调用到了声明异常的函数 ...