被测系统架构与数据流分析

一. 什么是被测系统的架构与数据流分析

在软件测试中, 被测系统(System Under Test,SUT) 就是你要测试的软件系统。 被测系统的架构与数据流分析就是在测试之前,先搞清楚如下两个问题:

  1. 系统架构是什么样的 (系统由哪些部分组成、这些部分如何连接)。
  2. 数据在系统中是怎么流动的 (数据从哪里来,经过哪些模块处理,最后到哪里去)。

简单理解:
架构分析 = 看系统结构图
数据流分析 = 看数据在系统里走的路线
这样做的目的,是帮助测试人员知道该测哪里、怎么测、重点测什么。


二. 被测系统的架构与数据流分析价值

  • 更深的理解业务逻辑

  • 更好的梳理业务用例

  • 更好的与研发运维进行跨部门协同


三. 被测系统的架构

3.1 什么是系统架构分析

系统架构分析就是了解软件系统的整体结构,例如:
系统有哪些模块
模块之间如何交互
使用了哪些技术或服务
哪些是核心模块

举个例子:一个电商系统可能有这样的架构:

java 复制代码
用户 → 前端页面 → 后端服务 → 数据库
            ↓
          支付系统 / 订单系统 / 商品系统
  • 主要组件可能包括:

    • 前端系统:网页或App界面

    • 后端服务:处理业务逻辑

    • 数据库:存储数据

    • 第三方服务:例如支付、短信、地图等

3.2 了解系统架构的好处

  • 通过架构分析,可以知道:

    • 哪些模块最关键
    • 哪些模块之间容易出问题
    • 哪些地方需要做接口测试或集成测试
  • 通过数据流分析,可以知道:

    • 数据在哪些地方被处理
    • 是否可能丢失或错误
    • 是否有安全问题
    • 是否存在异常情况

3.3 开源项目 Mall 的系统架构

Mall 官网

开源仓库

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

  • 角色与数据
  • 用户产品
  • 前端技术栈
  • 后端技术栈
  • 服务治理技术栈
  • 监控技术栈
  • 大数据处理技术栈
  • 数据存储
  • 持续集成/持续交付/DevOps

3.4 如何快速了解一家公司的架构

  • 业务流程:
    • 商业模式
    • 业务数据:角色、资源、数据
    • 业务流程:角色、行为、数据的集成关系
  • 系统架构:
    • 架构角色与技术栈:
      • 网关:apache/nginx/f5
      • 应用开发:spring boot/spring cloud
      • 通讯协议:dubbo/http/pb
      • 数据处理:hadoop/spark/flink
      • 数据存储:redis/mysql/oracle/redis/es
      • 文档存储:mongodb/hbase/neo4j
    • 部署架构:架构角色的集成

Mall 官网

开源仓库

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

  • 角色与数据
  • 用户产品
  • 前端技术栈
  • 后端技术栈
  • 服务治理技术栈
  • 监控技术栈
  • 大数据处理技术栈
  • 数据存储
  • 持续集成/持续交付/DevOps

四、数据流分析

4.1 什么是数据流分析

数据流分析关注的是:数据在系统中是如何传递和变化的。比如一个用户登录的流程:
用户输入账号密码
前端把数据发送到后端接口
后端查询数据库
数据库返回用户信息
后端验证密码
返回登录结果给前端
后端查询数据库
这就是一条数据流路径: 用户 → 前端 → 接口 → 后端服务 → 数据库 → 返回结果

4.2 了解数据流的好处

  • 通过数据流分析,可以知道:

    • 数据在哪些地方被处理
    • 是否可能丢失或错误
    • 是否有安全问题
    • 是否存在异常情况
  • 例如要考虑:

    • 密码为空怎么办
    • 用户不存在怎么办
    • 数据库返回错误怎么办

4.3 数据流分析统一建模语言 UML

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

4.4 推荐绘图工具

  • plantuml
  • yed
  • draw.io
  • processon
  • Visio

4.5 用例图-梳理业务流程

  • 用例图(Use Case Diagram)是一种广泛使用的工具,旨在梳理和展示系统的业务流程,明确系统与外部用户(称为"角色")之间的交互。通过用例图,可以清晰地了解系统的功能需求和用户的操作流程。

4.6 思维导图-分析功能点

  • 思维导图(Mind Map)是一种有效的工具,用于分析和组织系统的功能点。通过思维导图,可以直观地展示系统各个功能模块及其相互关系,有助于全面理解和梳理系统的功能需求。

4.7 时序图-分析数据流

  • 时序图(Sequence Diagram)是一种用于描述对象或组件之间交互的图表,特别适合分析系统中的数据流和交互过程。通过时序图,可以清晰地展示在特定场景中各个对象的通信和操作顺序,有助于理解系统的动态行为和数据流向。

4.8 活动图-分析测试用例

  • 活动图(Activity Diagram)广泛用于表示业务流程和操作顺序。活动图特别适合分析测试用例,展示系统在不同条件下的行为以及各个步骤的顺序。通过活动图,可以清晰地了解系统的操作流程,设计出全面的测试用例。

4.9 测试用例设计总结

  • 用例图-分析角色与资源
  • 思维导图-分析功能点
  • 时序图-分析数据流
  • 活动图-分析业务逻辑
相关推荐
程序员zgh2 小时前
AUTOSAR CP 之 配置、开发流程、工具链 解析
c语言·开发语言·c++·系统架构·汽车
Cosolar2 小时前
大模型量化技术实战指南
人工智能·系统架构·大模型·agent
Java识堂17 小时前
如何选择合适的消息队列?
系统架构
veminhe1 天前
麒麟操作系统使用记录
系统架构
跨境数据猎手1 天前
跨境电商平台系统开发全流程
爬虫·系统架构·个人开发
郝学胜-神的一滴1 天前
CMake 010 :一步到位链接静态库
开发语言·c++·qt·程序人生·系统架构·cmake
老码观察1 天前
架构设计经验分享:从方法论到落地的完整实践
系统架构
TDengine (老段)1 天前
TDengine VNode 生命周期 — 从创建到销毁的完整旅程
大数据·数据库·重构·系统架构·负载均衡·tdengine·涛思数据
跨境数据猎手2 天前
反向海淘代购集运系统三种搭建路径对比:自研、开源二开、SaaS
爬虫·系统架构·开源