学习目标
完成本单元后,你将能够:
- 定义软件测试生命周期(Software Testing Lifecycle)的各个阶段。
- 解释测试管理的过程和功能。
本模块与 Provar 合作制作。
软件测试生命周期
你已经学过软件开发生命周期(SDLC),现在是时候讨论软件测试生命周期(STLC)了。STLC 是一系列旨在让测试过程更有效的测试活动。与整个团队(开发、业务、运营)都参与的 SDLC 不同,STLC 主要由测试团队主导。它分六个阶段:
- Requirements(需求)——需要测试什么?
- Test Plan(测试计划)——如何测试?
- Test Design(测试设计)——创建测试用例和脚本。
- Environments(环境)——搭建测试基础设施。
- Test Execution(测试执行)——运行测试。
- Data Analysis(数据分析)——评估结果、识别差距。
测试管理
测试管理(test management)是管理 STLC 各阶段的过程,目标是提高可见性和降低风险。这个过程往往受团队开发方式的影响。STLC 可用于多种软件开发模型,其中最主要的是瀑布(waterfall)和敏捷(agile)。
对测试管理而言,瀑布和敏捷的差异归结为文档和速度:
- 瀑布:强调文档,进行详细规划和整个测试过程的测试策略,把测试执行放在最后。
- 敏捷:放弃重文档、优先速度,专注于较短的开发块(称为 sprint)进行测试和发布。
在两种模型中,STLC 和测试管理都很重要。虽然团队趋势偏向敏捷,但每个团队都必须考虑自身情况,确定文档和速度的适当平衡。
质量指标
无论团队如何做测试管理,都有一个关键问题:如何衡量质量?每个项目和团队都不同,但有几个通用因素需要考虑。
一个常见指标是测试覆盖率(test coverage),衡量某项目被测试覆盖的百分比。包括:代码覆盖率、功能覆盖率、需求覆盖率、风险覆盖率、元数据覆盖率。团队为指标设定目标后,可以定期衡量以追踪进度。例如,某团队可能设定 70% 代码覆盖率的目标——即希望 70% 的代码被测试。有时覆盖率目标由所用应用设定,例如 Salesforce 把单元测试覆盖率目标设为 75%。
为什么要设覆盖率目标?团队可以用覆盖率数据识别差距、判断差距是否需要填补以及如何填补,还能帮团队判断是否需要投入更多时间或资源、估算未来工作。但注意,测试覆盖率只是一个指标:它能告诉你测了多少,却不能说明测试的质量,最好与其他测试类型结合使用。
团队还需要追踪 bug。缺陷相关指标可能包括:bug 数量、生产环境 bug 数量、bug escape 比率(生产与非生产环境 bug 的比值)。最终,有意义的数据分析依赖全面的数据——只用单一指标,只能从单一角度看测试;组合使用多个指标,才能得到更完整的图景。
测试计划
团队在解决关键问题时,常用测试计划(test plans)来记录决策。测试计划可包含多种元素,以下是大多数计划都有的:
- Objectives(目标):用目标保持专注。识别目标时,要考虑所有要测试的软件功能以及基于这些功能的测试目的。
- Scope(范围):涵盖测试的程度,定义什么在范围内、什么在范围外。定义范围很重要,因为范围很容易超出团队可及范围,即「scope creep(范围蔓延)」。
- Risks(风险):识别风险、其概率及对项目的潜在影响,是确定测试内容的重要因素。
- Assumptions(假设):在测试计划中识别假设,确保所有团队成员对工作有共同理解。
- Approach(方法):定义测试类型、频率和整体测试方法论。
如你所见,测试管理需要大量协作和决策,且不只发生在一处,而是贯穿 STLC 的全部六个阶段。下一个模块将探讨团队用于协调和沟通这些工作的测试管理工具。
找到你的工具
本单元介绍为什么团队需要集中化的测试管理工具、工具的四个核心功能,以及如何根据团队成熟度选择合适的工具。
学习目标
完成本单元后,你将能够:
- 解释测试工具的目的。
- 描述测试工具的功能。
- 描述适合不同成熟度水平的测试工具。
测试管理工具的必要性
团队在规划、实施和衡量测试工作时,需要一个工具来追踪它们。测试管理工具最基础的作用是组织测试数据——随着测试成为共同责任并扩展到 SDLC 更多阶段,这一点尤为重要。
把活动分散存储的团队面临重复劳动、丢失文档、制造混乱、限制增长的风险。而用工具集中化工作,团队能更好地精简流程、管理资源、增强凝聚力、最大化潜力。
没有集中化工具的分散数据风险:重复劳动(同一测试写两遍)、文档丢失、混乱(哪些结果是最新的?)、增长受限。集中化工具则带来流程精简、资源管理、团队凝聚力、潜力最大化。测试管理工具是所有测试活动、产物和结果的单一事实来源。
测试管理工具的功能
测试管理工具需提供多项功能:
- Documentation(文档):规划是测试管理的重要部分。无论是瀑布还是敏捷,多数团队都会用一定程度的文档。测试计划、测试脚本等产物最好存储在集中位置,供任何团队成员访问。
- Data Storage, Tracking, and Visualization(数据存储、追踪与可视化):执行测试时,团队需要工具让结果可访问、易理解。报表、图表和仪表板帮助团队快速、有依据地了解测试用例和系统。
- Customization(定制):工具还应像指南针一样,为团队的质量之旅指明方向。因为每个人的路径都独一无二,工具应适应其特定需求——报表和仪表板不仅要可用,还要可定制。
测试编排与流水线集成
第四个功能是测试编排与流水线集成(Test Orchestration and Pipeline Integration):
- 强大的测试管理工具能把持续测试编排为自动化过程。
- 与其他工具通信,触发测试和部署,并接收其他测试应用的结果。
- 管理完整的端到端测试生命周期,收集执行次数、通过、失败、测试用例、运行时间、错误等数据。
这让团队每个成员都能轻松访问整个开发周期中的任何问题。从手动测试到自动化 CI/CD 集成——工具随你的测试成熟度一起成长。
不同成熟度的测试工具
正如背景帮助团队决定所需的测试管理和文档级别,它也有助于确定合适的工具。这通常取决于团队的成熟度:
- 早期成熟度(Early maturity):用工具存储基本信息和流程。可能不选测试管理专用工具,而是在其他领域已在用的项目管理工具(如 Jira、Trello)中记录测试活动。
- 中期成熟度(Mid-maturity):常在专门的测试管理工具中存储和分析数据,可能先用文字处理或电子表格记录活动,再升级到更复杂的工具。
- 成熟团队(Mature teams):需要一个充当质量中心(quality hub)的工具,提供对测试及其周边情况的视图,与其他工具和流程集成,作为测试真相的唯一来源。
虽然质量中心工具的完整能力未必适合低成熟度团队,但值得所有级别考虑,因为它能随团队成长。与其每次超出后换新工具,不如一开始就用可扩展的工具。最终,无论什么工具,定制都很重要,让团队能在任何阶段按需调整。
利用你的数据
本单元介绍如何把测试数据转化为行动:优化测试、提升可见性、改进协作,并向领导层倡导测试的价值。
学习目标
完成本单元后,你将能够:
- 解释如何使用测试管理数据。
- 沟通数据以推进测试工作。
测试的目标是发现问题,但团队需要合适的测试管理工具才能对其做点什么——即组织、分析和优化测试。测试管理是让整个团队受益的过程。
优化你的测试
强大的测试管理流程能帮助团队更好地利用资源。当团队识别出高优先级的测试领域,就能放弃低影响的测试活动,把这些资源重新分配到能超越开发变更、使测试框架成熟的活动上。
团队要利用从测试数据中学到的内容,识别如何随代码一起改进系统。随着测试管理推进,测试容量也会增长。目标是测试得更聪明,而不只是更多——把精力集中在最能影响质量的地方。
提升可见性
道理很简单:眼不见,心不念。当测试及其数据只对测试者可见时,其他人可能难以理解其目的和价值。测试的核心是预防问题,所以团队要主动分享工作证据。
利益相关者通常会在出现重大 bug 时才注意到,却往往不会想到为避免它发生而做的预防工作。为了照亮这些隐藏的努力,团队要确保清楚地沟通其结果——展示被预防了什么,而不只是发现了什么。
改进协作
工具应打开一个关于测试活动和结果的沟通网络。随着团队成长和测试规模化,孤立的数据存储系统只会制造问题。团队需要一个清晰、统一的流程来组织活动和数据分析——即用合适的工具充当单一事实来源,促进团队协作。
测试者、开发者、业务分析师、管理者——每个人都看到相同的数据、相同的状态、相同的真相。
为测试发声
与领导层分享这些进展至关重要。为测试发声能让它被纳入更大的项目报表,并成为组织项目管理的关键指标之一。以下是有效向领导层沟通测试价值的几点技巧:
- 频繁沟通(Communicate frequently):经常与所有利益相关者分享。
- 制定时间表(Create a schedule):为内部和外部报告设定固定的节奏。
- 使用易读指标(Use digestible metrics):用易读的报表和仪表板帮助利益相关者可视化数据。
- 提供上下文(Give context):没有单一数据点能讲清完整故事。分享测试数据时,同时分享其背后代码的信息。
测试不是成本中心,而是质量投资——要用这种方式去沟通。
总结
测试管理是一个既需要能管理软件测试周期各阶段的团队、又需要组织和优化这项工作的工具的过程。它不仅帮助各级团队监控当前表现,还提供机会改进测试、最大化潜力。一个被充分利用的测试管理工具,会对团队内外的工作都产生积极影响。
从流程定义到工具选择再到数据驱动的倡导——测试管理是软件质量的基础。

















