软件测试¶
这是华为可信认证的一个科目,本版块将梳理软件测试的基础知识,帮助理解测试目标、测试层次、测试方法与测试过程。
软件测试是通过设计和执行测试,发现软件与需求之间的偏差,并为质量判断提供依据。测试可以揭示缺陷、降低风险,但有限的测试无法证明软件绝对没有缺陷。
测试基础¶
测试的核心工作是在明确的条件下验证软件行为:先确定要检查的对象和预期结果,再准备输入、执行测试并比较实际结果。测试既包括运行程序的动态测试,也包括不运行程序的静态检查,例如需求评审、代码审查和静态分析。
| 概念 | 说明 | 关注点 |
|---|---|---|
| 测试用例 | 一组输入、执行条件、操作步骤和预期结果 | 是否能清晰、可重复地检查某个行为 |
| 缺陷 | 软件、需求或相关产物中的问题 | 是否会导致错误结果或带来质量风险 |
| 失效 | 软件运行时表现出不正确的外部行为 | 用户或其他系统实际观察到了什么 |
| 验证(Verification) | 检查产物是否符合规定的要求 | “是否按要求正确构建?” |
| 确认(Validation) | 检查产品是否满足用户的实际需要 | “构建出来的东西是否正确?” |
发现缺陷不等于测试失败:测试的价值在于尽早暴露风险,让团队能够修复问题并作出有依据的发布判断。
测试层次¶
测试可以按被测对象的范围分层。越靠近底层,通常越容易定位问题;越靠近真实使用场景,越能检查多个组件协作后的整体行为。
| 层次 | 测试对象 | 典型检查内容 |
|---|---|---|
| 单元测试 | 单个函数、类或模块 | 业务规则、边界条件、异常处理 |
| 集成测试 | 多个模块或外部依赖之间的协作 | 接口、数据传递、数据库或服务交互 |
| 系统测试 | 完整的系统 | 端到端功能及性能、安全、兼容性等质量特性 |
| 验收测试 | 面向用户或业务的完整解决方案 | 是否满足约定的业务目标与验收条件 |
这些层次不是彼此替代的关系。合理的测试组合会在快速反馈、问题定位和真实场景覆盖之间取得平衡。
测试方法¶
测试设计可以从不同角度展开。黑盒方法根据需求和外部行为选择用例;白盒方法依据代码结构设计检查路径;基于经验的方法则利用常见错误模式和测试人员的经验补充风险场景。
| 方法 | 依据 | 常见技术 |
|---|---|---|
| 黑盒测试 | 需求、规格和可观察行为 | 等价类划分、边界值分析、决策表、状态转换 |
| 白盒测试 | 程序内部结构与控制流 | 语句覆盖、分支覆盖、条件覆盖、路径分析 |
| 基于经验的测试 | 历史缺陷、领域知识和测试经验 | 错误猜测、探索式测试、检查清单 |
覆盖率可以帮助发现测试遗漏,但覆盖率高并不自动代表测试充分;关键还在于断言是否能识别错误行为,以及用例是否覆盖重要风险。
三类方法通常配合使用:黑盒方法覆盖明确的业务规则,白盒方法检查代码路径,经验方法补充历史缺陷和异常场景。参见黑盒测试、白盒测试和基于经验的测试。
测试过程¶
测试贯穿软件开发过程,不只是开发完成后的最后一步。测试活动通常包括分析测试依据、设计用例、准备环境和数据、执行并记录结果、报告缺陷,以及根据风险决定是否需要补充测试。
测试用例失败时,怎样判断是产品缺陷还是测试问题?
先确认测试环境、输入数据和执行步骤是否符合预期,再独立核对需求与预期结果。如果测试可重复,且实际行为确实违反了有效需求,就应记录为缺陷;如果需求本身含糊,也需要先澄清验收标准。
测试的边界¶
- 测试显示缺陷存在,不能证明缺陷不存在。 未发现问题可能是测试范围不足,也可能是用例没有触发相关条件。
- 测试需要优先关注风险。 时间和资源有限时,应优先检查影响大、发生可能性高或难以恢复的场景。
- 尽早测试通常能降低修复成本。 需求、设计和代码阶段都可以通过评审或自动化检查发现问题。
- 测试质量取决于信息质量。 清晰的需求、可控的环境和可观察的结果有助于得到可信的结论。
创建日期: 2026-10-23 01:34:52
广告
人要恰饭的嘛🤑🤑