系统架构设计师备考第25天——软件测试
一、软件测试概述
软件测试定义:
使用人工或自动化手段运行/测定软件系统,目的是验证其是否满足需求,识别预期与实际结果的差异。
核心目标:
- 确保软件质量,确认软件正确实现用户期望。
- 发现错误、验证技术指标、支持软件组装、为质量模型提供依据。
- 贯穿开发生命周期,辅助风险评估。
二、测试方法分类
根据不同标准,测试方法可分为以下六类:
1. 静态测试(Static Testing, ST)
- 特点:不运行程序,通过分析源码结构、流程、文档找出错误(如参数不匹配、未定义变量)。
- 适用场景:需求评审、代码审查、设计文档检查。
- 典型方法:代码走查、静态分析工具(如SonarQube)。
2. 动态测试(Dynamic Testing, DT)
- 特点:运行程序,对比实际结果与预期值,分析效率与健壮性。
- 步骤:构造测试用例 → 执行程序 → 分析结果。
- 适用场景:功能验证、性能测试。
3. 黑盒测试
- 特点:视程序为“黑盒”,仅关注输入输出,不涉及内部逻辑。
- 重点:验证界面与功能是否符合需求规格书。
- 量化要求:测试行为需量化以保证质量。
- 典型方法:等价类划分、边界值分析。
4. 白盒测试
- 特点:基于程序内部逻辑设计用例,检查路径、控制流、数据流。
- 覆盖标准(由低到高):
- 语句覆盖:每条语句至少执行一次。
- 判定覆盖:每个逻辑条件取真/假至少一次。
- 路径覆盖:覆盖所有可能路径(最高强度)。
- 典型方法:控制流分析、数据流测试。
5. 灰盒测试
- 特点:介于黑盒与白盒之间,关注输出正确性及部分内部逻辑。
- 适用场景:内部逻辑错误但输出正确时(效率高于白盒,适用性广于黑盒)。
- 典型场景:接口测试、集成测试。
6. 自动化测试(AT)
- 特点:通过工具自动执行测试用例并分析结果,替代人工驱动。
- 优势:提升重复测试效率,适用于回归测试、性能测试。
- 工具举例:Selenium(Web)、JUnit(单元测试)。
三、 测试阶段划分
按开发阶段,测试分为以下四类:
1. 单元测试
- 目标:验证模块功能与编码正确性。
- 方法:
- 静态测试:代码审查、静态分析。
- 动态测试:黑盒+白盒结合(黑盒设计用例,白盒补充覆盖)。
- 覆盖标准:高可靠性模块需满足路径覆盖或条件组合覆盖。
2. 集成测试
- 目标:检查模块组装正确性,发现接口问题。
- 方法:黑盒与白盒结合,验证需求实现与结构合理性。
- 典型策略:增量式(自顶向下/自底向上)、非增量式(Big Bang)。
3. 系统测试
- 目标:验证整体系统是否符合需求(黑盒主导)。
- 测试类型:
测试类型 目的 功能测试 验证业务功能正确性 性能测试 评估系统响应时间、吞吐量 压力测试 确定系统崩溃点及最大负载能力 可靠性测试 检查系统容错与恢复能力 安全性测试 验证数据加密、权限控制 - 结束标志:需求覆盖率达标,所有缺陷归零。
4. 其他专项测试
- 性能测试:
- 负载测试:逐步增加负载,观察性能变化。
- 压力测试:突破极限负载,定位系统瓶颈。
- 验收测试:
- 用户验收:验证合同/需求符合性(如Alpha测试、Beta测试)。
- Alpha测试:开发环境下模拟用户操作。
- Beta测试:真实环境中多用户测试并反馈。
- 新型测试(Web/App场景):
- AB测试:对比多个版本界面/流程,选择最优方案。
- Web测试:
- 链接测试:验证链接有效性、页面存在性、无孤立页面。
- 表单测试:检查提交功能、数据校验、错误处理(如注册、登录)。
四、重点考点总结
类别 | 核心要点 |
---|---|
测试方法 | 静态vs动态、黑盒(功能)vs白盒(结构)vs灰盒(混合)、自动化测试场景 |
测试阶段 | 单元测试(模块级)、集成测试(接口)、系统测试(整体)、验收测试(用户需求) |
覆盖标准 | 语句覆盖 → 判定覆盖 → 路径覆盖(强度递增) |
新型测试 | AB测试(版本优化)、Web链接/表单测试(功能完整性) |
五、常见考题示例
-
单选题:
白盒测试中,“每条语句至少执行一次”属于哪种覆盖标准?
A. 语句覆盖 B. 判定覆盖 C. 条件覆盖 D. 路径覆盖
答案:A -
判断题:
灰盒测试既关注输出正确性,也分析部分内部逻辑,因此效率始终高于白盒测试。(×)
解析:灰盒在内部错误但输出正确时效率更高,非绝对。 -
简答题:
简述系统测试结束的标志。
答:需求覆盖率达标,且所有已发现缺陷修复归零。 -
案例题:
某电商平台需测试支付功能,应选择哪些测试类型?
答:功能测试(流程正确性)、性能测试(并发支付)、安全性测试(数据加密)、表单测试(输入校验)。