关注上方嘎嘎软件测试,您的支持是我们最大的动力!
1 前言最重要的详细设计
上期咱们把需求分析完了,E-R图也画了,今天我们将详细设计给写出来,详细设计就相当于你在造房子的设计图纸,是非常重要、也是非常能够看出人能力水平的一个东西。
因为MockServer主要是给测试、开发人员使用协助测试的工具,它的使用场景没有高并发、高性能、高可用诉求,所以咱们这次的详细设计会比较简单一些。但还是要说明,如果你也开始计划开发一个平台,那么请一定要写详细设计,这是整个开发过程中最重要的环节,请一定不要放过它,甚至你可以去花大量时间去反复琢磨,并给公司经验丰富的开发、架构去完善你的详细设计。
2 详细设计
接下来我将这次开发的MockServer的详细设计分享给大家,肯定有一些不足之处,但还是希望给大家一个引导和启发。
关于本次的详细设计,主要是做了核心流程说明、重要接口说明、数据库设计,另外关于详细设计还会有性能设计、灰度设计、监控设计等等,我们在最开始设计的时候要进行通篇考虑(找一个涵盖所有设计范围的详细设计模板去开始构思你的详细设计),在实际写详细设计的时候,根据实际情况来做合适的设计。
下面是本次的MockServer的详细设计说明:
1. 总体设计
1.1 总体说明
因现有EASY-MOCK无法满足现有的MOCK功能需要,故需要自建Mock能力,编写Mock平台功能,整体业务核心功能如下:
增删改查MOCK接口
接口支持固定延时/随机延时
接口支持加解密
支持动态响应、支持随机响应
支持返回http协议状态码
1.2 核心流程设计
1.2.1 核心业务N流程设计
业务需求描述,简明扼要描述功能的用途加上泳道图展现
2.功能性设计
本次需求涉及的必须实现的功能,以模块划分逐一描述实现方案
2.1 模块(功能)N设计
通过接口、数据库描述功能如何实现,如有其它实现方式自行添加
2.1.1 重要接口设计
2.1.1.1 查询响应接口
接口名称 | 查询响应接口 |
接口描述 | 查询响应接口 |
变更类型 | 新增、修改(注意前后的兼容性)、删除 |
请求路径 | 接口的完整路径 |
接口业务逻辑 | 详细描述接口内逻辑步骤: 1. 拦截所有/mock开头的请求 2. 检查入参url; 3. 将该url进行解析,查询到对应的接口; 4. 根据查询结果来匹配接口响应(*:*为默认),优先匹配kv模式的响应,也就是根据请求数据来返回响应,匹配不到kv则取默认响应; 5. 存在多个默认响应则随机取出一个默认响应; 6. 返回接口响应 |
错误码 | 无 |
2.2 数据库设计
2.2.1 数据库设计概览
Schema | 表 | 用途 |
project_info | 记录项目信息表 | |
mock_http_info | Mock接口信息表 | |
http_response | 响应信息表 | |
project_http_mapping | 项目接口映射表 | |
mock_response_mapping | 接口响应映射表 |
2.2.2 数据表详细设计
详细描述各个表的设计或以E-R图代替
表名 | project_info | |||
字段名 | 数据类型 | 可空 | 是否唯一 | 描述 |
id | varchar | N | Y | 主键 |
project_name | varchar | N | N | 项目名称 |
project_code | varchar | N | Y | 项目编码 |
project_base_url | varchar | N | Y | 项目基础url |
project_desc | varchar | Y | N | 项目描述 |
create_datetime | datetime | N | N | |
update_datetime | datetime | N | N | |
created_by | varchar | N | N | |
updated_by | varchar | N | N |
表名 | mock_http_info | |||
字段名 | 数据类型 | 可空 | 是否唯一 | 描述 |
id | varchar | N | Y | project_info_id + mock_http_url联合唯一 |
project_info_id | varchar | N | N | |
mock_http_method | varchar | N | N | 接口方法 |
mock_http_url | varchar | N | N | 接口URL(非全URL) |
mock_http_desc | varchar | Y | N | 接口描述 |
mock_http_decrypt_type | int | N | N | 请求解密方式(枚举),当为N时,不做解密操作 |
mock_http_encrypt_type | int | N | N | 请求加密方式(枚举),当为N时,不做加密操作 |
create_datetime | datetime | N | N | |
update_datetime | datetime | N | N | |
created_by | varchar | N | N | |
updated_by | varchar | N | N |
表名 | http_response | |||
字段名 | 数据类型 | 可空 | 是否唯一 | 描述 |
id | varchar | N | Y | |
mock_http_info_id | varchar | N | N | mock_http_info_id + http_resp_kv 联合唯一 |
http_resp_body | varchar | N | N | 响应体 |
http_resp_kv | varchar | N | N | 匹配键值对 |
mock_http_resp_time_start | int | N | N | 接口响应时间段 |
mock_http_resp_time_end | int | N | N | 接口响应时间段 |
create_datetime | datetime | N | N | |
update_datetime | datetime | N | N | |
created_by | varchar | N | N | |
updated_by | varchar | N | N |
3 小结
上述我们将详细设计给写完了,接下来就要开始正式编码之旅了,下一篇手把手带你开始MockServer编码之旅,在此之前,请多看看详细设计文档,看看自家开发的设计文档。
喜欢的话,记得点“赞”和“在看”哦