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

一卷旌收千骑虏,万全身出百重围。这篇文章主要讲述技术分享 | 被测系统架构与数据流分析相关的知识,希望能为你提供帮助。
技术分享 | 被测系统架构与数据流分析
深入了解测试过程中被测系统的架构与数据流,有助于理解业务逻辑,梳理业务用例以及促进部门协同。更深的理解业务逻辑是指要分析公司是做什么的,公司的重要的商务决策是什么,公司内部数据流是怎么运行的,有哪些常见的业务场景。这也能考验对公司业务的负责程度,可以更好的去服务业务部门,为公司创造价值。
开源项目litemall系统架构下面以开源项目 litemall 为例,分析一下这个项目中的系统架构。litemall 这款产品是一个小的商城,以 SpringBoot 作为后端,Vue 管理员结合微信小程序作为前端,Vue 用户作为移动端。
系统架构
litemall 的系统架构如图所示:

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

文章图片

技术架构
litemall 的技术架构如图所示:
技术分享 | 被测系统架构与数据流分析

文章图片

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

文章图片

业务架构
Mall 的业务架构如图所示:
技术分享 | 被测系统架构与数据流分析

文章图片

公司架构组成通过 litemall 和 mall 两个开源项目可以看出,为了更好的服务公司,需要了解公司的架构,公司架构一般分为业务架构和系统架构。
业务架构
  • 商业模式:也是目前大家最关心的问题,公司怎样使得收益最大化。例如抖音的盈利模式以及其中裂变系统是怎样参与的,这就需要了解你身处的业务部门的业务模式以及技术栈,以及公司的发展模式与未来趋势。
  • 业务数据:了解角色、资源和数据。例如公司的账户管理中心中的角色有管理员、用户等,而这些角色又可以分为输出内容的人和消费内容的人,除了角色,还需要了解公司平台上的核心资源的种类以及数据信息。
  • 业务流程:了解业务数据中角色,角色的行为以及数据之间的集成关系。
系统架构系统架构就是要把业务架构进行落地实施,实现其中的商业模式与业务流程。1.架构角色与技术栈:架构角色基本不会变,而技术栈会随着技术的发展而不断变化。其中的具体
  • 网关:Apache/nginx/F5
  • 应用开发:SpringBoot/SpringCloud
  • 通讯协议:Dubbo/HTTP/PB
  • 数据处理:Hadoop/Spark/Flink
  • 数据存储:Redis/mysql/Oracle/ES
  • 文档存储:MongoDB/HBase/Neo4j
2.部署架构:架构角色的集成关系,对应业务架构中的业务流程。
建模语言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
< strong> < & globe> Ubuntu
< /strong> * Linux Mint
*< strong> Kubuntu
< /strong> * Lubuntu
*< strong> KDE Neon
< /strong> < & graph> LMDE
< strong> < & pulse> SolydXK
< /strong> < & people> SteamOS
< strong> < & star> Raspbian with a very long name
< /strong> * < s> Raspmbc< /s> => OSMC
*** < s> Raspyfi< /s> => Volumio
legend right
Short
legend
endlegend
@endmindmap

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

文章图片

使用时序图分析数据流
scale 300 height
用户 -> 认证中心: 登录操作
认证中心 -> 缓存: 存放(key=token+ip,value=https://www.songbingjia.com/android/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

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

文章图片

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

    推荐阅读