技术分享 | 被测系统架构与数据流分析

news2024/11/29 10:54:12

深入了解测试过程中被测系统的架构与数据流,有助于理解业务逻辑,梳理业务用例以及促进部门协同。

更深的理解业务逻辑是指要分析公司是做什么的,公司的重要的商务决策是什么,公司内部数据流是怎么运行的,有哪些常见的业务场景。这也能考验对公司业务的负责程度,可以更好的去服务业务部门,为公司创造价值。

开源项目litemall系统架构

下面以开源项目 litemall 为例,分析一下这个项目中的系统架构。

litemall 这款产品是一个小的商城,以 SpringBoot 作为后端,Vue 管理员结合微信小程序作为前端,Vue 用户作为移动端。

系统架构

litemall 的系统架构如图所示:

image1031×485 108 KB

技术架构

litemall 的技术架构如图所示:

image1010×514 65.9 KB

开源项目Mall的系统架构

Mall 项目是一套电商系统,包括前台商城系统及后台管理系统,基于 SpringBoot + MyBatis 实现,采用 Docker 容器化部署。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。

系统架构

Mall 的系统架构如图所示:

image1080×792 188 KB

业务架构

Mall 的业务架构如图所示:

公司架构组成

通过 litemall 和 mall 两个开源项目可以看出,为了更好的服务公司,需要了解公司的架构,公司架构一般分为业务架构和系统架构。

业务架构

  1. 商业模式:也是目前大家最关心的问题,公司怎样使得收益最大化。例如抖音的盈利模式以及其中裂变系统是怎样参与的,这就需要了解你身处的业务部门的业务模式以及技术栈,以及公司的发展模式与未来趋势。
  2. 业务数据:了解角色、资源和数据。例如公司的账户管理中心中的角色有管理员、用户等,而这些角色又可以分为输出内容的人和消费内容的人,除了角色,还需要了解公司平台上的核心资源的种类以及数据信息。
  3. 业务流程:了解业务数据中角色,角色的行为以及数据之间的集成关系。

系统架构

系统架构就是要把业务架构进行落地实施,实现其中的商业模式与业务流程。

  1. 架构角色与技术栈:架构角色基本不会变,而技术栈会随着技术的发展而不断变化。其中的具体实现有:
  • 网关:Apache/Nginx/F5
  • 应用开发:SpringBoot/SpringCloud
  • 通讯协议:Dubbo/HTTP/PB
  • 数据处理:Hadoop/Spark/Flink
  • 数据存储:Redis/MySQL/Oracle/ES
  • 文档存储:MongoDB/HBase/Neo4j
  1. 部署架构:架构角色的集成关系,对应业务架构中的业务流程。

建模语言UML

为快速了解公司的架构,可以使用统一的建模语言 UML 来分析公司架构。常用的编译语言工具有:

  • plantuml(推荐)
  • yed
  • draw.io
  • processon
  • visio (不常用)

以 plantuml 工具为例,可以设计以下图模型分析公司架构:

  • 用例图:用来描述商业模式、业务角色
  • 时序图:用来描述业务流程、调用关系
  • 部署图:用来描述系统架构与集成关系
  • 活动图:用来分析业务逻辑

使用用例图梳理业务流程

@startuml

left to right direction

actor User as user

actor Admin as admin

package 商品 {

  usecase "发布商品"

  usecase "浏览商品"

  usecase "购买商品"

  usecase "下架商品"

}

package 订单 {

  usecase "结算订单"

  usecase "查询订单"

  usecase "退款"

  usecase "管理订单"

}

admin -up-> 发布商品

admin -up-> 下架商品

admin -up-> 管理订单

user --> 浏览商品

user --> 购买商品

user --> 结算订单

user --> 结算订单

user --> 查询订单

user --> 退款

@enduml

使用思维导图分析功能点

@startmindmap

scale 380 height

* <&flag>Debian

** <&globe>Ubuntu

*** Linux Mint

*** Kubuntu

*** Lubuntu

*** KDE Neon

** <&graph>LMDE

** <&pulse>SolydXK

** <&people>SteamOS

** <&star>Raspbian with a very long name

*** <s>Raspmbc</s> => OSMC

*** <s>Raspyfi</s> => Volumio

legend right

  Short

  legend

endlegend

@endmindmap

使用时序图分析数据流

scale 300 height

用户 -> 认证中心: 登录操作

认证中心 -> 缓存: 存放(key=token+ip,value=token)token

用户 <- 认证中心 : 认证成功返回token

用户 -> 认证中心: 下次访问头部携带token认证

认证中心 <- 缓存: key=token+ip获取token

其他服务 <- 认证中心: 存在且校验成功则跳转到用户请求的其他服务

其他服务 -> 用户: 信息

使用活动图分析测试用例

@startuml

scale 580 height

start

repeat

  :Test something;

    if (Something went wrong?) then (no)

      #palegreen:OK;

      break

    endif

    ->NOK;

    :Alert "Error with long text";

repeat while (Something went wrong with long text?) is (yes) not (no)

->//merged step//;

:Alert "Success";

stop

@enduml

梳理好业务用例的本质是在测试过程中,更全面的测试公司的业务。例如复杂的电商系统或者保险行业的管理系统,内部涉及的业务流以及用户的种类都很复杂多样,不理解其中的业务逻辑和数据,就很难编写一个覆盖完善的业务用例。

更好的与研发运维进行跨部门协同是指当产品出现问题时,研发和运维都会排查。作为测试,要去了解出现的问题并帮助研发运维去解决,这样可以加快部门协同进度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字孪生重点商业实践展示

数字孪生是一个系统或一组对象的虚拟表示。数字孪生背后的技术旨在准确反映系统的生命周期和应用程序&#xff0c;并使用机器学习、模拟和人工智能的组合来帮助在现实生活中运行之前对使用、问题或效率进行建模。如今&#xff0c;数字孪生技术的爆火离不开人们对其商业价值的看…

[C语言]指针进阶

[C语言]指针进阶 文章目录[C语言]指针进阶1.字符指针&#xff1a;2.指针数组&#xff1a;3.数组指针&#xff1a;4.&数组名VS数组名:5.数组指针的使用:6.数组参数、指针参数:6.1一维数组传参:6.2二维数组传参:6.3一级指针传参:6.4二级指针传参:7.函数指针:7.1如何保存函数的…

Ubuntu20.04下notify-send和cron结合使用

问题背景 今天学到一个Linux下一个很有趣的弹窗通知组件&#xff0c;名字叫notify-send&#xff0c;可以用如下方式简单调用。 notify-send hello-world可以立马看到效果。 不仅如此&#xff0c;他的图标、文字的样式等都可以定制&#xff0c;如&#xff1a; notify-send -u…

Python 编程的入门不二之选——Python编程:从入门到实践

最好的Python入门教材 你好&#xff0c;我是小雨青年&#xff0c;一名程序员。 今天我为你推荐一本Python入门级书籍——《Python编程&#xff1a;从入门到实践》&#xff08;第二版&#xff09;。 Python 是一种流行的、适用于各种领域的编程语言。对于初学者来说&#xff…

新来了个同事,设计模式用的是真优雅呀,代码如诗

之前有小伙伴私信我说看源码的时候感觉源码很难&#xff0c;不知道该怎么看&#xff0c;其实这有部分原因是因为没有弄懂一些源码实现的套路&#xff0c;也就是设计模式&#xff0c;所以本文我就总结了9种在源码中非常常见的设计模式&#xff0c;并列举了很多源码的实现例子&am…

十二月十三号作业驱动作业

成功移植内核源码 开发板可以挂在linux操作系统 添加led驱动到内核源码drivers/char目录下 打开linux内核源码进入drivers/char目录下打开Kconfig文件&#xff0c;对Kconfig文件进行分析 vi Kconfig 2.添加自己的LED灯驱动程序选项 10 config LED_DRIVER …

[C语言]指针初阶

[C语言]指针初阶 文章目录[C语言]指针初阶1.指针def:2.指针变量&#xff1a;3.指针和内存的关系&#xff1a;4.指针和指针类型:4.1指针类型&#xff1a;5.指针-整数:6.指针的解引用:7.野指针&#xff1a;7.1成因&#xff1a;7.2如何规避野指针:8.指针运算:8.1指针-整数&#xf…

C++11 多线程编程

因为之前有学习过c11的并发库&#xff0c;最近在搞项目准备复习&#xff0c;本节开始就重温一下这块内容打算连着写上几篇博客去记录一下.. 题外话get几个概念 1.进程是资源分配的基本单位&#xff0c;线程是调度的基本单位&#xff0c;注意基本二字&#xff0c;这并不意味着进…

jdk8-获取本机ip、判断ip范围、ip与long互转等

在配置nginx的ip白名单时候&#xff0c;会通过ip段进行配置&#xff08;如 10.10.10.10/24&#xff09;,就在思考这种配置怎么通过代码解析并判断&#xff0c;故通过搜索网络内容&#xff0c;并通过java编写测试代码。代码及说明来源网络&#xff0c;并进行了部分调整。故有疑问…

谷歌神秘项目曝光,能写代码还会改bug的AI,这。。。。

做一个程序员&#xff0c;压力有多大&#xff1f;反正&#xff0c;最近的一个传闻&#xff0c;是让码农们瑟瑟发抖...... 传说谷歌正在研发一个秘密的新项目&#xff0c;教AI写代码。据说&#xff0c;学会之后&#xff0c;AI不仅能写代码&#xff0c;还会修复bug。 写代码这件…

异次元发卡系统源码荔枝发卡V3.0

1.将源码上传到宝塔站点目录之后解压 2.去config目录下找到database.php文件配置数据库 3.导入数据库 4.切换php版本8.0 5.设置伪静态 伪静态代码 location ~* (runtime|application)/{ return 403; } location / { if (!-e $request_filename){ rewrite ^(.*)$ /index…

[附源码]Node.js计算机毕业设计防疫物资捐赠系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

物联网设备预警解决方案

物联网设备管理平台整合互亿无线预警解决方案&#xff0c;可以将设备预警信息第一时间通知到管理、维护人员。 场景应用示例&#xff1a; 设备**报错&#xff0c;报错类型为**&#xff0c;请及时排查。 温度监控系统&#xff0c;**设备&#xff0c;当前湿度&#xff1a;**&a…

VTK-vtkCleanPolyData/vtkQuantizePolyDataPoints

小结&#xff1a;本文主要讲述vtk中vtkCleanPolyData过滤器的作用和实现原理&#xff0c;希望对各位小伙伴能有所帮助&#xff01; 示例&#xff1a; 将下图进行Clean&#xff0c;设置Tolerance为0.01&#xff08;相对误差&#xff09;。 vtkCleanPolyData …

[附源码]Python计算机毕业设计SSM基于JAVA语言的国货美妆店管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

差分信号,共模与差模,共模滤波,差模滤波

普通并行信号. 两个信号是一样的,相位相同, 这样的信号应该属于普通的并行信号不是差分信号. 差分信号 注意中间的黑色线是0电位. 共模干扰. 共模干扰也就是两个信号一起干扰. 我个人的理解. 如有不对欢迎批评指正. 不管信号是差分信号还是普通信号, 干扰都会一样存在. 所…

解决方案分享:数商云S2B2C系统如何赋能医药企业实现深度营销数字化

营销是企业的关键一环&#xff0c;对驱动企业经营业绩增长具有重要意义。现阶段&#xff0c;面对带量采购与疫情带来的双重压力与挑战&#xff0c;越来越多医药企业开始数字化转型实践&#xff0c;用有限的资源投入实现营销效果最大化&#xff0c;这其中&#xff0c;大型跨国医…

iDdesktopX将本地的数据分享至 iPortal 中

文章目录前言一.iDdesktopX添加iPortal地址二.iDdesktopX分享地图至iPortal三.在iPortal中查看分享地图和工作空间注意作者&#xff1a;kxj 前言 云时代下&#xff0c;SuperMap iDesktopX 也站在了云端&#xff0c;SuperMap iDesktopX 连通了 SuperMap Online 和 iPortal 两个平…

物业养老,智慧养老新方式

1、新导智能看护 老人在家中通过智能看护系统&#xff0c;可以实现实时监护和远程守护。 1)可远程视频探视 为老年人提供实时视频探访服务&#xff0c;支持手机端实时查看老人情况。 2)远程可视对讲 通过视频远程实时查看老年人情况&#xff0c;可实现紧急情况下的快速响应。…

再学C语言3:C语言概述(1)

简单的示例程序&#xff1a; #include <stdio.h>int main(void) {int num;num 1;printf("I am a simple computer.\n");printf("My favorite number is %d because it is first.\n", num);return 0; } 运行结果&#xff1a; C程序剖析&#xff1a…