📄 本篇摘要
金字塔的顶两层:系统测试把整个软件当黑盒测【整体行为】,验收测试由客户/使用方确认【这就是我要的东西】。分界线一句话:系统测试问【做对了吗】,验收测试问【做的是对的这个东西吗】。
一、系统测试:站在整体的高度
零件合格(单元)、组装合格(集成),还不等于产品合格——性能撑不撑得住并发、内存漏不漏、异常会不会雪崩、界面流程顺不顺,都是系统层面才暴露的问题。常见类型:
- 功能测试:按需求逐条走;
- 性能/负载测试:多少人同时用还跑得动;
- 安全测试:能否被注入、越权(数据库课 7-9 讲过 SQL 注入就是这类);
- 易用性/兼容性测试:换台机器、换个浏览器还正常吗。
系统测试阶段不再看代码内部(内部已由下层测试管过),只对着需求规格说明书逐项验证。
二、验收测试:客户说了算
系统测试通过后,交到客户/使用方手里,按合同或需求清单确认——这东西是我要的吗?场景对不对、报表格式合不合意、业务流程走不走得通。验收标准最好在开发前就白纸黑字:临到验收才讨论什么叫【完成】,是项目纠纷的头号来源。
通过验收=交付。单元/集成/系统/验收这四层,正好对应第 5-9 节软件生命周期里【开发→交付】的主干。
三、V 模型:开发与测试一一对应
教材的 V 模型把两侧对齐——左边的开发产物,右边各有一个测试等级盯着:
需求分析 \ / 验收测试 (验收测需求)
系统设计 \ / 系统测试 (系统测设计)
详细设计 \ / 集成测试 (集成测设计间的接口)
编码实现 \ / 单元测试 (单元测代码)
读法:每种缺陷在哪个阶段埋下的,就该在对应等级的测试里抓住。需求阶段的误解,单元测试永远抓不住——它只能被验收测试抓住。
四、动手 Demo:用一张验收清单跑一遍小系统
# 一个迷你【成绩换算系统】:需求规格说明书三条
# R1: 90 分以上输出 A;R2: 60~89 输出 B;R3: 60 分以下输出 C
def to_grade(score):
if score >= 90:
return "A"
if score >= 60:
return "B"
return "C"
# —— 单元测试层:函数本身 ——
assert to_grade(95) == "A"
assert to_grade(75) == "B"
assert to_grade(40) == "C"
# —— 系统测试层:按 R1~R3 逐条走完整流程 ——
report = {"A": 0, "B": 0, "C": 0}
for name, score in [("波仔", 95), ("小红", 75), ("小明", 40)]:
report[to_grade(score)] += 1
print(report)
assert report == {"A": 1, "B": 1, "C": 1}
# —— 验收测试层:客户的验收标准(写在合同里的样子)——
acceptance = [
("R1", 90, "A"),
("R1", 89, "B"), # 客户现场最爱的挑刺点:边界归属
("R2", 60, "B"),
("R3", 59, "C"),
]
for rule, score, want in acceptance:
got = to_grade(score)
print(f"{rule} {score} 分 -> {got} {'通过' if got == want else '不通过'}")
assert got == want
print("验收通过")
沙箱实跑输出:
{'A': 1, 'B': 1, 'C': 1}
R1 90 分 -> A 通过
R1 89 分 -> B 通过
R2 60 分 -> B 通过
R3 59 分 -> C 通过
验收通过
看到什么算成功:四条验收逐条通过、最后打出验收通过。
读结果:89 分归 B 还是 A?这种事单元测试写得再好也替代不了验收现场的那一问——验收清单里必须亲手写下边界。验收标准先行,纠纷少一半。
五、30 秒实验
把需求改成【90 分及以上为 A】之外再加一条【正好 60 分输出 A-】,改 to_grade 让验收清单的 R2 一条变红——体验一次【需求变更→验收失败→返工】的迷你全流程。
六、常见误区
| 误区 | 真相 |
|---|---|
| 系统测试就是再跑一遍单元测试 | 系统测试不看代码看需求;性能、安全、兼容都是整体问题 |
| 验收是走过场 | 验收标准不先写清楚,交付日就是扯皮日 |
| V 模型只是画着好看 | 它提醒你:需求阶段埋的误解,只有验收级测试能抓 |
自测三问(点击展开)
1. **系统测试和验收测试各问一句什么话?** 答:系统测试问【软件整体做对了吗】,验收测试问【做的是客户要的那个东西吗】。 2. **V 模型的对应关系举一例。** 答:需求分析对验收测试——需求误解只能由验收级测试抓住。 3. **验收标准什么时候定?** 答:开发前白纸黑字写好,不能等交付日再谈。- ☐ 5-4 学习完成
相关笔记
- 软件生命周期与 DevOps —— 四级测试在生命周期里的位置
- 数据库 5-4 · 需求定义 —— 需求是验收的锚
- ⌨️ 编程原理 · 索引 —— 全课路线图