4.软件工程——软件测试与维护.md 4.2 KB

软件工程考研复试——软件测试与维护终极整理版


一、核心概念

1.1 软件测试定义与目标

  • 定义:通过执行程序发现错误的过程,验证软件是否满足需求。
  • 目标
    • 发现代码缺陷(黑盒测试、白盒测试)
    • 验证功能/性能指标(如并发处理能力)
    • 提升软件质量(通过回归测试保障稳定性)

1.2 软件维护定义与特点

  • 定义:软件交付后为修复错误或适应新需求进行的修改。
  • 特点
    • 维护成本高(占生命周期总成本的60%-70%)
    • 维护类型多样(改正性/适应性/完善性/预防性)
    • 文档与代码同等重要(结构化维护依赖完整配置)

二、软件测试分类与方法

2.1 测试阶段分类

测试类型 目标 方法/工具 执行者
单元测试 验证模块功能正确性 白盒测试(JUnit) 开发人员
集成测试 检查模块间接口协作 自顶向下/自底向上集成 测试工程师
系统测试 验证整体系统性能与稳定性 黑盒测试(JMeter) 第三方测试机构
验收测试 用户确认需求符合性 α测试(内部)、β测试(外部) 用户与开发团队

2.2 测试方法对比

方法 关注点 典型工具 适用场景
黑盒测试 输入输出行为(功能验证) Postman、Selenium 需求明确的功能测试
白盒测试 代码逻辑覆盖(路径/条件) JUnit、PyTest 开发阶段的代码验证
灰盒测试 部分代码结构+功能验证 SoapUI、Rest-Assured 接口测试与集成测试

三、测试工具与覆盖率

3.1 主流测试工具

工具类别 代表工具 核心功能 适用场景
单元测试 JUnit(Java)、PyTest(Python) 验证函数逻辑 开发阶段的代码验证
UI自动化 Selenium、Appium 模拟用户操作(点击/输入) Web/移动端界面测试
性能测试 JMeter、LoadRunner 模拟高并发负载,评估响应时间 电商/金融系统压力测试
安全测试 OWASP ZAP、Burp Suite 检测SQL注入/XSS漏洞 金融/政务系统安全验证

3.2 测试覆盖率指标

  • 语句覆盖:执行所有代码语句(基础覆盖率)
  • 路径覆盖:覆盖所有可能的执行路径(高严格性)
  • 条件覆盖:验证布尔表达式的真/假分支(复杂逻辑验证)

四、软件维护类型与策略

4.1 维护类型与占比

类型 描述 占比 典型案例
改正性维护 修复运行中发现的缺陷 20% 支付接口超时问题修复
适应性维护 适配新硬件/软件环境 25% 迁移至云服务器
完善性维护 新增功能或优化性能 50% 增加用户积分系统
预防性维护 提升可维护性(重构/文档更新) 5% 核心模块代码重构

4.2 维护优化策略

  • 模块化设计:降低耦合度(数据耦合优于控制耦合)
  • 文档管理:维护API手册与数据字典(如使用Swagger生成接口文档)
  • 自动化回归测试:通过Jenkins实现持续集成(每次修改后自动验证核心功能)

五、高频考点与答题策略

5.1 高频问题示例

  1. 黑盒测试与白盒测试的区别
    • 黑盒关注功能(输入→输出),白盒关注代码逻辑(路径覆盖)
  2. 解释完善性维护占比最高的原因
    • 用户需求动态变化(如电商系统新增促销功能)
  3. 如何设计等价类划分测试用例
    • 有效类(合法输入)与无效类(非法输入)各选代表值(如年龄范围0-150)

5.2 案例分析技巧

  • 结合项目经验:例如描述在毕业设计中如何用Selenium实现登录功能自动化测试
  • 图形工具辅助:绘制数据流图说明图书馆管理系统借书流程(标注处理节点与数据存储)
  • 对比模型优劣:瀑布模型(文档驱动) vs 敏捷模型(快速响应变化)