
# 有的放矢制定测试计划
本文介绍如何确定测试目的、划定测试范围、制订测试策略、组建测试团队、准备测试工具和环境、制订测试计划。
凡事预则立，不预则废。在团队开展测试活动之初，需要制定相应的测试计划，指导整个测试周期中测试人员的测试活动。测试计划描述了测试目的、测试对象、测试范围、测试策略、测试活动、测试方法、测试资源和进度等，确定测试项、被测特性、测试任务、谁执行任务、各种可能的风险。测试计划可以有效预防计划的风险，保障计划的顺利实施。
#### 为什么要制定测试计划
- 确保测试活动围绕测试目的开展工作，服务于明确的测试目标。
- 确定测试对象的被测特性和需求清单，框定测试范围。
- 选取适合于团队技术能力和工具组合的测试策略和方法。
- 尽早识别测试活动开展中可能面临的风险因素，并及时解决。
- 合理预估测试工作量和人员、资源需求，编制测试项目计划。
- 帮助测试人员分解测试活动和任务，编排个人工作计划。
- 指导测试执行活动、及时纠正和补救执行偏差。
- 作为相关文档，与利益干系人汇报沟通。
 
#### 什么时间做测试计划
测试活动包含测试计划、测试设计、测试执行等。一般而言，测试计划排在首位，在测试周期的早期阶段开展。实际上根据不同的项目使用的开发模式、团队组织形式等，测试计划可能在多个时间节点中开展，例如：
- 某企业面向客户的移动APP产品，在第一个版本发布前，测试部门在接收到产品的测试申请后，接收测试需求做上线前系统测试计划。
- 某内部软件项目，产品立项完成需求确认后，架构师已经设计出产品架构方案和设计方案，产品未进入实质开发阶段，开发组织制定开发计划，测试组长制定测试计划。
- 某对外商用产品，例行提交做专项安全测试，安全测试部门根据历史安全测试计划和测试报告，评估新增产品特性变更，制定新版本的安全专项测试计划。
- 某软件测试团队有明确的功能测试、性能测试、安全测试等分工，测试团队主管制定主测试计划后，各类型测试专家制定类型的测试计划。
整体来讲，建议尽早开始测试计划相关工作，因为测试计划制定时间越早，越容易在早期阶段指导、规范产品的质量活动，提高产品的可测试性，测试人员从攻击者的视角指导产品架构和设计中的质量要素，符合测试左移的思想。
但越在产品的早期阶段，测试计划的粒度越粗，缺少细节可执行层面的测试用例、可供使用的测试环境等，需要随着项目的推进不断细化。测试计划不是一成不变的，随着测试项目的开展，测试计划逐步详细，包含越来越多的信息。测试计划的细化和完善过程中需要注意审视初始的测试目的、测试范围和测试设计和策略等。
#### 谁来制定测试计划
- 测试项目、测试团队负责人。
- 安全、性能、可靠性等专项测试负责人。
- 经验丰富的测试工程师、测试架构师。
 
#### 测试计划需要包含哪些内容
根据ISO、IEEE等有关于测试文档的相关标准，在项目实践中可以选择在测试计划中包含哪些内容，内容多少与项目、团队规模相关，小团队测试可以精简测试计划。
- 测试目的 概述为什么要做这个测试，需要实现什么样的测试目标。测试目的是测试计划的源头，测试需要聚焦产品的业务价值。如果是产品整体测试计划，需要结合产品的业务属性，将质量的功能、安全、性能、易用性、兼容性、扩展性等维度融入测试目的，例如金融类产品对安全性要求很高。
  

- 测试范围 详述被测系统（测试对象）的名称、版本、特性、需求、环境、测试项，明确需要测试什么、不测试什么。
  

- 测试策略 明确测试类型、测试场景、测试方法，策略性说明如何测试。
  

- 测试方案 详述测试使用的方案，例如集成步骤和顺序、测试步骤和顺序、测试方法、测试工具、测试用例设计和执行方法等。
  

- 测试环境 描述测试所需要的硬件、软件、测试工具的名称、规格、数量、版本、账号等信息，以及测试环境的准备、预定、还原、释放等管理策略。
  

- 测试人员 详述测试人员数目、分工、职责，如测试架构师、测试开发工程师、性能测试工程师、测试环境管理人员等。
  

- 测试进度计划 说明测试的计划开始和结束时间，测试总体进度安排，关键的阶段性进度检查点。测试进度计划结合开发计划，需要综合考虑测试方案、环境、人员等资源和任务的约束依赖关系。
  

- 测试准入条件 明确接纳启动测试的准入条件，如产品规格说明书中的功能已经实现、基本流程和准入测试用例通过等，以避免由于测试基础条件不具备影响测试计划实施。
  

- 测试发布标准和交付件 明确测试完成需要满足的条件、测试通过/不通过的标准、测试完成后需要产出的交付件，例如测试报告，说明测试报告需要包含的内容。
  

- 风险 分析当前项目运作中可能存在的风险，以及应对风险的规避、解决等措施。风险举例：人力到位风险、人员技能和领域知识风险、开发转测试时间风险。
  
 
#### 测试计划评审
测试计划编写完成后，邀请关键干系人，如项目经理，测试经理，产品经理，架构师，运维经理等对测试计划的正确性、全面性以及可行性等进行评审。
