02 系统论极简版——把东西拆成零件

开篇除恐

这一章的知识点叫"系统论",这三个字催眠效果很强。你一听可能会想:哲学、控制论、大学课本上的一整章抽象文字。

其实你要的东西简单得很。"系统"这个词的全部意思就是:若干东西放在一起,干一件事。 你家的门锁是一个系统,你的微信登录流程是一个系统,你骑的自行车是一个系统。拆开看,就四层。

白话化:四个词

系统:你需要研究的一整件事。比如"自行车刹车系统"——你最近关心它怎么工作,一个整体来看。

组件:系统里的每一个零件或步骤。刹车系统里有刹车手柄、钢线、刹车臂、刹车皮、轮圈。每一步都是组件。

接口:两个组件之间的连接点。钢线的两头:一头连刹车手柄,一头连刹车臂——两个接口。在软件里更常见:登录按钮"接"着验证服务。

边界:系统的边缘。你研究的是车的前刹车,后刹车就不算在内,那是边界外面的。

就这四个词。记住这四个词,整本书百分之八十的场景你都能看懂。

直觉先行:拼积木

你没有真的积木,但我用文字模拟一下。

想象一辆自行车的前轮刹车。它由三步串起来:

  1. 手捏刹车手柄——你用力的地方
  2. 钢线传导——力从手柄走到刹车臂的路上
  3. 刹车臂压刹车皮——最后实际停下来的是刹车皮夹轮圈

这三个步骤排成一排。每一步有一个"接口":手柄和钢线之间、钢线和刹车臂之间。如果其中任何一环"失效",链条就断了。

在软件测试的视角里,替换成这样:

  1. 用户点击"提交"——输入的地方
  2. 前端验证+发请求——力传导的路
  3. 后端入库——最后实际完成操作的地方

结构完全一样,只是积木换了颜色。

FMEA 要做的事,就是沿着这条链条走一遍,每一步问:这里怎么搞砸?

术语脱西装

术语 大白话
System / 系统 你正在研究的一整件事
Component / 组件 系统里的一个零件或一步
Interface / 接口 两个组件之间相连的地方
Boundary / 边界 系统的边缘,划出研究范围

例子

☼ 热身:微信登录 ⎯⎯ 组件拆分(自编)

把微信登录当作一个系统,列出组件(不算界面设计,只算功能层)。

Answer(怎么想到的:顺着"用户做了一件事"的时间线走一遍,每个转折点是一个组件):

  1. 界面(显示登录按钮)
  2. 输入框(接收账号密码)
  3. 前端验证(邮箱格式、密码长度)
  4. 网络请求(发到后端)
  5. 后端验证(账号密码对不对)
  6. 返回结果

六个组件,三个接口:界面→输入框、输入框→网络请求、网络请求→后端返回。边界:这是登录功能的完整链路,不涉及"忘记密码"或"二维码登录"——那些是别的系统的边界。

☼☼ 正经:一个拼写错误检查的接口分析(自编)

你在测试一个网站的注册流程。架构师的图是这样的:

前端表单 → 验证服务(HTTP POST) → 用户数据库

问:这个系统有两个接口,每个接口可能出现什么问题?

我想到的(怎么想的):接口就是两个组件之间的"握手"地方,握手失败的信息是缺失的,问题往往藏在这里——一个组件给的格式,另一个识不出来。

答案:

接口 问题
前端表单 → 验证服务 前端发 UTF-8 编码,后端按 GBK 解析,中文字段乱码
验证服务 → 用户数据库 验证服务允许 8 位密码,数据库字段只存 6 位,多余截断

两个问题都不是"组件坏了",而是"连接的地方协议没对齐"——这正是 FMEA 最该关注的地方,也是接口分析最有价值的地方。

这一章要带走的东西:

  • "系统"就是若干东西放在一起干一件事,没别的。
  • 四个词:系统、组件、接口、边界。够用。
  • FMEA 沿着"系统→组件→接口"走一圈,每一步问"这里怎么搞砸",这就是全部流程。
  • 软件测试工程师天天在用的用例设计、链路分析,本质上已经在做这件事了。

就这样。