# 软件工程考研复试——软件测试与维护终极整理版 --- ## 一、核心概念 ### 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 敏捷模型(快速响应变化)