跳到主要内容

软件测试相关名词解释

核心概念

  • 软件测试:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

开发与测试模型

  • 软件开发生命周期(Software Development Life Cycle,简称 SDLC):从需求分析到维护的软件开发全过程结构化流程,包括需求收集、系统设计、实现、测试、部署以及维护。这个周期确保了软件的质量和精确性,同时也帮助项目团队有效地管理时间和资源。常见的 SDLC 模型有瀑布模型、螺旋模型、V 模型、敏捷模型等。
  • 瀑布模型:一种线性开发模型,按顺序依次完成需求、设计、开发、测试和部署,每个阶段完成后进入下一个阶段。
  • 迭代模型:一种逐步完善软件的开发方法,将复杂的软件开发过程分解为多个小的开发周期(迭代)。每个迭代都包含需求分析、设计、开发、测试和部署等完整阶段,逐步交付功能模块,直到最终完成整个软件。
  • 螺旋模型:结合瀑布模型和迭代模型,强调风险评估和迭代开发,适合复杂项目。
  • V 模型:一种测试驱动的开发模型,强调开发和测试并行进行,测试活动与开发阶段一一对应。
  • 原型模型:通过快速开发一个可运行的原型,收集用户反馈后逐步完善,适合需求不确定的项目。
  • 混合模型:结合多种开发模型(如瀑布+敏捷)的优点,根据项目需求灵活调整开发流程。
  • 敏捷模型:一种以人为核心、迭代、循序渐进的开发方法,强调协作与快速交付。其核心原则包括快速响应变化、持续交付有价值的软件、紧密合作和及时反馈。常见的敏捷方法论包括 Scrum、Kanban 和极限编程(XP)。
    • Scrum:一种敏捷框架,通过短周期的迭代(Sprint)来交付软件功能。每个 Sprint 通常持续 2-4 周,包括计划、开发、测试和评审。
    • Kanban:一种可视化工作流程的敏捷方法,通过限制在制品(WIP)数量,优化团队的工作效率和交付速度。
    • 极限编程(Extreme programming,缩写为 XP):一种强调工程实践和持续改进的敏捷方法,包括结对编程、持续集成、重构和测试驱动开发(TDD)。

测试方法与技术

  • 人工测试:测试人员手动执行用例,适用于探索性及用户体验测试。
  • 自动化测试:利用工具/脚本自动执行测试,可提高测试效率、覆盖率和重复性。
  • 白盒测试:基于代码结构和逻辑的测试方法,测试人员需要了解代码实现细节。
  • 黑盒测试:不关心代码实现,仅从用户角度测试软件功能是否符合需求。
  • 灰盒测试:介于白盒和黑盒之间,部分了解代码结构,同时关注功能表现。
  • 静态测试:不运行程序,通过代码审查、文档检查等方式发现缺陷。
  • 动态测试:通过运行程序,验证其在实际运行中的行为和性能。
  • 探索性测试:无预设脚本,依赖测试者经验实时设计并执行测试。
  • 基于风险的测试:优先测试高风险区域,优化资源分配。
  • 关键字驱动测试:用关键字描述操作,实现脚本与数据的分离。
  • 数据驱动测试:通过多组数据驱动同一测试逻辑,验证不同场景。

测试类型

  • 功能测试:验证软件是否满足需求文档中定义的功能。
  • 非功能测试:评估性能、安全等非功能属性(如负载测试)。
  • 性能测试:测量系统在特定条件下的响应速度、稳定性等。
  • 兼容性测试:检查系统在不同硬件、软件或网络环境中的运行情况,例如不同的操作系统、浏览器、设备。
  • 安全测试:识别漏洞,确保数据保密性、完整性和可用性。
  • 可用性测试:评估软件的易用性,是否符合用户操作习惯。
  • 可访问性测试:验证系统对残障用户的包容性(如屏幕阅读器兼容)。
  • 完整性测试:验证软件是否满足所有需求,功能是否完整。
  • 回归测试:验证软件在修改或更新后,原有功能是否仍然正常。
  • 冒烟测试:初步验证核心功能是否可用,决定是否进行深入测试。
  • 健全性测试:快速检查特定功能或缺陷修复后的基本表现。
  • 恢复测试:验证系统从故障(如断电)中恢复的能力。
  • 配置测试:在不同软硬件配置下测试系统兼容性。
  • 安装测试:确保软件安装/卸载过程无误且不影响系统。

测试阶段

  • 单元测试:针对代码最小单元(如函数)的测试,通常由开发者完成。
  • 集成测试:验证模块间接口和数据交互的正确性。
  • 系统测试:测试完整系统是否符合需求,覆盖功能与非功能。
  • 验收测试:用户或客户验证系统是否满足合同要求,含 Alpha/Beta 测试。
    • Alpha 测试:内部测试阶段,通常由开发团队或内部用户进行。
    • Beta 测试:外部测试阶段,由最终用户在实际环境中进行测试。
  • 端到端测试:模拟真实用户流程,验证系统整体行为。

性能测试子类

  • 负载测试:评估软件在高负载下的性能表现。
  • 压力测试:测试软件在极端条件下的稳定性和恢复能力。
  • 容量测试:确定系统最大处理能力(如数据库存储极限)。
  • 耐久性测试:长时间运行系统,检查内存泄漏或性能下降。

测试文档与元素

  • 测试文档:记录测试过程和结果的文档,包括测试计划、测试用例、测试报告等。
  • 测试计划:定义测试目标、范围、策略、资源和时间安排的文档。
  • 测试场景:描述测试的具体场景或业务流程,用于设计测试用例。
  • 测试用例:详细描述测试步骤、输入数据和预期结果的条目。
  • 测试策略:高层指导方针,明确测试重点和方法论。
  • 测试报告:总结测试结果、缺陷统计及系统质量评估。
  • 缺陷报告:记录缺陷详情、重现步骤及修复状态的文档。

测试管理相关

  • 测试覆盖率:衡量测试用例对需求或代码的覆盖程度。
  • 测试环境:包含硬件、软件及配置的测试执行平台。
  • 测试出口准则:定义测试阶段结束的条件(如缺陷率阈值)。
  • 缺陷生命周期:从发现到关闭的缺陷状态流转过程。

开发与测试模型

  • 测试驱动开发(TDD):开发方法,先编写测试用例,再编写代码满足测试,通过迭代确保代码质量与功能符合性。
  • 行为驱动开发(BDD):扩展 TDD,以自然语言描述用户行为,促进开发、测试与业务人员的协作。

开发与协作工具

  • 版本管理:通过工具(如 Git、SVN)追踪和管理代码变更历史,支持团队协作与版本回溯。
  • 持续集成(CI):自动构建和测试代码变更,确保频繁提交的代码与主干版本兼容。
  • 持续交付(CD):自动化部署流程,确保代码通过测试后可快速、安全地发布到生产环境。

测试方法与技术

  • Mock 对象:模拟依赖组件的行为,隔离被测单元以实现精准测试。
  • 代码审查:通过人工检查代码逻辑、风格和潜在缺陷,提升代码质量。

其他关键术语

  • Mock 测试:用模拟对象替代依赖组件,隔离测试单元。
  • 桩模块(Stub):简化版组件,用于模拟未完成模块的行为。
  • 等价类划分:将输入数据划分为有效/无效类,减少用例数量。
  • 边界值分析:针对输入边界值设计测试用例,发现潜在错误。
  • 主干开发(Trunk-Based Development):团队成员频繁向主干分支提交代码,减少长期分支的合并冲突风险。
  • 特性开关(Feature Toggle):通过配置动态启用/禁用功能,支持渐进式发布与测试。
  • 代码覆盖率:量化测试用例对代码行、分支或条件的覆盖比例,辅助评估测试充分性。
  • 测试成熟度模型(TMM):一种评估和改进软件测试能力的模型,定义了不同成熟度级别的测试实践和标准。
  • 能力成熟度模型集成(CMMI):一种综合的软件过程改进模型,包含测试成熟度的评估和改进。