51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1210|回复: 0
打印 上一主题 下一主题

[转贴] 技术分享:被测系统架构与数据流分析

[复制链接]
  • TA的每日心情
    无聊
    8 小时前
  • 签到天数: 978 天

    连续签到: 3 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-4-11 09:59:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     深入了解测试过程中被测系统的架构与数据流,有助于理解业务逻辑,梳理业务用例以及促进部门协同。
      更深的理解业务逻辑是指要分析公司是做什么的,公司的重要的商务决策是什么,公司内部数据流是怎么运行的,有哪些常见的业务场景。这也能考验对公司业务的负责程度,可以更好的去服务业务部门,为公司创造价值。
      开源项目litemall系统架构
      下面以开源项目 litemall 为例,分析一下这个项目中的系统架构。
      litemall 这款产品是一个小的商城,以 SpringBoot 作为后端,Vue 管理员结合微信小程序作为前端,Vue 用户作为移动端。
      开源项目Mall的系统架构
      Mall 项目是一套电商系统,包括前台商城系统及后台管理系统,基于 SpringBoot + MyBatis 实现,采用 Docker 容器化部署。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
      系统架构
      Mall 的系统架构如图所示:

    业务架构
      Mall 的业务架构如图所示:

    公司架构组成
      通过 litemall 和 mall 两个开源项目可以看出,为了更好的服务公司,需要了解公司的架构,公司架构一般分为业务架构和系统架构。
      1.商业模式:也是目前大家最关心的问题,公司怎样使得收益最大化。例如抖音的盈利模式以及其中裂变系统是怎样参与的,这就需要了解你身处的业务部门的业务模式以及[url=]技术[/url]栈,以及公司的发展模式与未来趋势。
      2.业务数据:了解角色、资源和数据。例如公司的账户管理中心中的角色有管理员、用户等,而这些角色又可以分为输出内容的人和消费内容的人,除了角色,还需要了解公司平台上的核心资源的种类以及数据信息。
      3.业务流程:了解业务数据中角色,角色的行为以及数据之间的集成关系。
      系统架构就是要把业务架构进行落地实施,实现其中的商业模式与业务流程。
      4.架构角色与技术栈:架构角色基本不会变,而技术栈会随着技术的发展而不断变化。其中的具体实现有:
      ·网关:Apache/Nginx/F5
      · 应用开发:SpringBoot/SpringCloud
      · 通讯协议:Dubbo/HTTP/PB
      · 数据处理:Hadoop/Spark/Flink
      · 数据存储:Redis/MySQL/Oracle/ES
      · 文档存储:MongoDB/HBase/Neo4j
      5.部署架构:架构角色的集成关系,对应业务架构中的业务流程。
      建模语言UML
      为快速了解公司的架构,可以使用统一的建模语言 UML 来分析公司架构。常用的编译语言工具有:
      · plantuml(推荐)
      · yed
      · draw.io
      · processon
      · visio (不常用)
      以 plantuml 工具为例,可以设计以下图模型分析公司架构:
      · 用例图:用来描述商业模式、业务角色
      · 时序图:用来描述业务流程、调用关系
      · 部署图:用来描述系统架构与集成关系
      · 活动图:用来分析业务逻辑
    1.  @startuml
    2.   left to right direction
    3.   actor User as user
    4.   actor Admin as admin
    5.   package 商品 {
    6.     usecase "发布商品"
    7.       usecase "浏览商品"
    8.         usecase "购买商品"
    9.           usecase "下架商品"
    10.           }
    11.           package 订单 {
    12.             usecase "结算订单"
    13.               usecase "查询订单"
    14.                 usecase "退款"
    15.                   usecase "管理订单"
    16.                   }
    17.                   admin -up-> 发布商品
    18.                   admin -up-> 下架商品
    19.                   admin -up-> 管理订单
    20.                   user --> 浏览商品
    21.                   user --> 购买商品
    22.                   user --> 结算订单
    23.                   user --> 结算订单
    24.                   user --> 查询订单
    25.                   user --> 退款
    26.                   @enduml
    复制代码
    1. @startmindmap
    2.   scale 380 height
    3.   * <&flag>Debian
    4.   ** <&globe>Ubuntu
    5.   *** Linux Mint
    6.   *** Kubuntu
    7.   *** Lubuntu
    8.   *** KDE Neon
    9.   ** <&graph>LMDE
    10.   ** <&pulse>SolydXK
    11.   ** <&people>SteamOS
    12.   ** <&star>Raspbian with a very long name
    13.   *** <s>Raspmbc</s> => OSMC
    14.   *** <s>Raspyfi</s> => Volumio
    15.   legend right
    16.    Short
    17.      legend
    18.      endlegend
    复制代码
    1. scale 300 height
    2.   用户 -> 认证中心: 登录操作
    3.   认证中心 -> 缓存: 存放(key=token+ip,value=token)token
    4.   用户 <- 认证中心 : 认证成功返回token
    5.   用户 -> 认证中心: 下次访问头部携带token认证
    6.   认证中心 <- 缓存: key=token+ip获取token
    7.   其他服务 <- 认证中心: 存在且校验成功则跳转到用户请求的其他服务
    8.   其他服务 -> 用户: 信息
    复制代码
    1.  @startuml
    2.   scale 580 height
    3.   start
    4.   repeat
    5.   :Test something;
    6.   if (Something went wrong?) then (no)
    7.   #palegreen:OK;
    8.   break
    9.   endif
    10.   ->NOK;
    11.   :Alert "Error with long text";
    12.   repeat while (Something went wrong with long text?) is (yes) not (no)
    13.   ->//merged step//;
    14.   :Alert "Success";
    15.   stop
    16.   @enduml
    复制代码

    梳理好业务用例的本质是在测试过程中,更全面的测试公司的业务。例如复杂的电商系统或者保险行业的管理系统,内部涉及的业务流以及用户的种类都很复杂多样,不理解其中的业务逻辑和数据,就很难编写一个覆盖完善的业务用例。
      更好的与研发运维进行跨部门协同是指当产品出现问题时,研发和运维都会排查。作为测试,要去了解出现的问题并帮助研发运维去解决,这样可以加快部门协同进度。





    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-7-3 17:03 , Processed in 0.064236 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表