02 系统论极简版——把东西拆成零件
开篇除恐
这一章的知识点叫"系统论",这三个字催眠效果很强。你一听可能会想:哲学、控制论、大学课本上的一整章抽象文字。
其实你要的东西简单得很。"系统"这个词的全部意思就是:若干东西放在一起,干一件事。 你家的门锁是一个系统,你的微信登录流程是一个系统,你骑的自行车是一个系统。拆开看,就四层。
白话化:四个词
系统:你需要研究的一整件事。比如"自行车刹车系统"——你最近关心它怎么工作,一个整体来看。
组件:系统里的每一个零件或步骤。刹车系统里有刹车手柄、钢线、刹车臂、刹车皮、轮圈。每一步都是组件。
接口:两个组件之间的连接点。钢线的两头:一头连刹车手柄,一头连刹车臂——两个接口。在软件里更常见:登录按钮"接"着验证服务。
边界:系统的边缘。你研究的是车的前刹车,后刹车就不算在内,那是边界外面的。
就这四个词。记住这四个词,整本书百分之八十的场景你都能看懂。
直觉先行:拼积木
你没有真的积木,但我用文字模拟一下。
想象一辆自行车的前轮刹车。它由三步串起来:
- 手捏刹车手柄——你用力的地方
- 钢线传导——力从手柄走到刹车臂的路上
- 刹车臂压刹车皮——最后实际停下来的是刹车皮夹轮圈
这三个步骤排成一排。每一步有一个"接口":手柄和钢线之间、钢线和刹车臂之间。如果其中任何一环"失效",链条就断了。
在软件测试的视角里,替换成这样:
- 用户点击"提交"——输入的地方
- 前端验证+发请求——力传导的路
- 后端入库——最后实际完成操作的地方
结构完全一样,只是积木换了颜色。
FMEA 要做的事,就是沿着这条链条走一遍,每一步问:这里怎么搞砸?
术语脱西装
| 术语 | 大白话 |
|---|---|
| System / 系统 | 你正在研究的一整件事 |
| Component / 组件 | 系统里的一个零件或一步 |
| Interface / 接口 | 两个组件之间相连的地方 |
| Boundary / 边界 | 系统的边缘,划出研究范围 |
例子
☼ 热身:微信登录 ⎯⎯ 组件拆分(自编)
把微信登录当作一个系统,列出组件(不算界面设计,只算功能层)。
Answer(怎么想到的:顺着"用户做了一件事"的时间线走一遍,每个转折点是一个组件):
- 界面(显示登录按钮)
- 输入框(接收账号密码)
- 前端验证(邮箱格式、密码长度)
- 网络请求(发到后端)
- 后端验证(账号密码对不对)
- 返回结果
六个组件,三个接口:界面→输入框、输入框→网络请求、网络请求→后端返回。边界:这是登录功能的完整链路,不涉及"忘记密码"或"二维码登录"——那些是别的系统的边界。
☼☼ 正经:一个拼写错误检查的接口分析(自编)
你在测试一个网站的注册流程。架构师的图是这样的:
前端表单 → 验证服务(HTTP POST) → 用户数据库
问:这个系统有两个接口,每个接口可能出现什么问题?
我想到的(怎么想的):接口就是两个组件之间的"握手"地方,握手失败的信息是缺失的,问题往往藏在这里——一个组件给的格式,另一个识不出来。
答案:
| 接口 | 问题 |
|---|---|
| 前端表单 → 验证服务 | 前端发 UTF-8 编码,后端按 GBK 解析,中文字段乱码 |
| 验证服务 → 用户数据库 | 验证服务允许 8 位密码,数据库字段只存 6 位,多余截断 |
两个问题都不是"组件坏了",而是"连接的地方协议没对齐"——这正是 FMEA 最该关注的地方,也是接口分析最有价值的地方。
这一章要带走的东西:
- "系统"就是若干东西放在一起干一件事,没别的。
- 四个词:系统、组件、接口、边界。够用。
- FMEA 沿着"系统→组件→接口"走一圈,每一步问"这里怎么搞砸",这就是全部流程。
- 软件测试工程师天天在用的用例设计、链路分析,本质上已经在做这件事了。
就这样。