title: 软件测试与维护
tags:
- module
- software-engineering
- testing
- maintenance
- joplin
type: module
source_type: reconstructed
created: 2026-04-23
updated: 2026-04-23
---
软件测试与维护
[!abstract]
这一模块关注软件交付前后的质量保证工作。测试负责尽早发现问题,维护负责让软件在真实环境中持续可用。
模块结论
- [[软件测试]] 的目标不是证明程序“没问题”,而是系统性发现缺陷并验证需求满足程度。
- 测试通常按单元、集成、系统、验收分层推进,黑盒和白盒是两种基本观察视角。
- [[软件维护]] 不只是修 bug,还包括适配环境、完善功能和预防性优化。
- 维护成本高,反过来说明前期设计、文档、测试做得是否扎实。
一、软件测试在做什么
- 通过执行程序或分析逻辑发现缺陷。
- 检查功能、性能、稳定性和需求符合性。
- 为发布和后续维护提供质量依据。
二、测试层级
单元测试
- 目标:验证单个模块或函数是否正确。
- 常与白盒测试配合。
集成测试
- 目标:验证模块接口和协作关系。
- 常见策略:自顶向下、自底向上。
系统测试
- 目标:站在整体系统角度验证功能和性能。
- 更强调真实使用场景。
验收测试
- 目标:由用户或代表用户的角色判断系统是否满足需求。
- 常见形式:Alpha、Beta。
三、测试方法
黑盒测试
- 关注输入和输出,不依赖内部代码结构。
- 常见方法:等价类划分、边界值分析。
白盒测试
- 关注内部逻辑结构和控制路径。
- 常见指标:语句覆盖、条件覆盖、路径覆盖。
灰盒测试
- 介于两者之间,既关注部分内部结构,也关注外部行为。
四、测试工具与自动化
- 单元测试工具:JUnit、PyTest。
- 接口与功能测试工具:Postman、Selenium。
- 性能测试工具:JMeter。
- 持续集成工具:Jenkins 等。
自动化的意义
- 减少回归测试成本。
- 在需求迭代频繁时保持质量基线。
- 让测试成为开发流程的一部分,而不是项目尾声的补救动作。
五、软件维护
维护四分类
- 改正性维护:修复已发现缺陷。
- 适应性维护:适配新环境或新平台。
- 完善性维护:扩展功能或优化性能。
- 预防性维护:重构、补文档、改善结构以降低未来风险。
为什么维护成本高
- 软件长期处在变化环境中。
- 真实业务需求会持续演化。
- 历史设计缺陷和文档不足会放大每次修改成本。
六、降低维护成本的做法
- 采用模块化设计和清晰接口。
- 保持文档与代码同步。
- 建立自动化回归测试。
- 在关键阶段做重构,而不是无限堆补丁。
七、易错点
- 测试的目标是发现问题,不是证明软件绝对正确。
- 黑盒和白盒不是互斥替代关系,而是不同层面的补充。
- 维护四分类不是只在理论里区分,项目中往往会直接决定资源分配。
八、复习提问
- 单元测试、集成测试、系统测试分别关注什么边界?
- 路径覆盖为什么比语句覆盖更严格?
- 为什么说维护阶段反过来检验了前期工程质量?
来源
- [[raw/Joplin/计算机专业基础/软件工程/_软件工程考研复试终极整理版.md]]
- [[raw/Joplin/计算机专业基础/软件工程/4.软件工程——软件测试与维护.md]]
相关页面
- [[软件工程]]
- [[软件工程关键过程与设计]]
- [[软件测试]]
- [[软件维护]]