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

举报
ceshiren001 发表于 2022/05/17 15:58:10 2022/05/17
【摘要】 本文节选自霍格沃兹测试学院内部教材深入了解测试过程中被测系统的架构与数据流,有助于理解业务逻辑,梳理业务用例以及促进部门协同。更深的理解业务逻辑是指要分析公司是做什么的,公司的重要的商务决策是什么,公司内部数据流是怎么运行的,有哪些常见的业务场景。这也能考验对公司业务的负责程度,可以更好的去服务业务部门,为公司创造价值。开源项目litemall系统架构下面以开源项目 litemall 为例,...

本文节选自霍格沃兹测试学院内部教材

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

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

开源项目litemall系统架构

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

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

系统架构

litemall 的系统架构如图所示:



技术架构

litemall 的技术架构如图所示:



开源项目Mall的系统架构

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

系统架构

Mall 的系统架构如图所示:



业务架构

Mall 的业务架构如图所示:

image

公司架构组成

通过 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

image

使用思维导图分析功能点

@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

image

使用时序图分析数据流

scale 300 height

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

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

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

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

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

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

其他服务 -> 用户: 信息

image

使用活动图分析测试用例

@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

image

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

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

更多技术文章: https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=hwyun&timestamp=1652690731&author=XP

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。