# 测试计划

# 模板

下载测试计划(GB8567-88)模板Word版
查看测试计划(GB8567-88)模板Pdf版

# 简介

测试计划Testing plan,描述了要进行的测试活动的范围、方法、资源和进度的文档;是对整个信息系统应用软件组装测试和确认测试。它确定测试项、被测特性、测试任务、谁执行任务、各种可能的风险。测试计划可以有效预防计划的风险,保障计划的顺利实施。

# 测试目的

制定测试计划,要达到的目标如下:

  1. 为测试各项活动制定一个现实可行的、综合的计划,包括每项测试活动的对象、范围、方法、进度和预期结果。
  2. 为项目实施建立一个组织模型,并定义测试项目中每个角色的责任和工作内容。
  3. 开发有效的测试模型,能正确地验证正在开发的软件系统。
  4. 确定测试所需要的时间和资源,以保证其可获得性、有效性。
  5. 确立每个测试阶段测试完成以及测试成功的标准、要实现的目标。
  6. 识别出测试活动中各种风险,并消除可能存在的风险,降低由不可能消除的风险所带来的损失。

# 测试作用

测试计划通常分内部作用和外部作用,内部作用有以下3种:

  1. 作为测试计划的结果,让相关人员和开发人员来评审。
  2. 存储计划执行的细节,让测试人员进行同行评审。
  3. 存储计划进度表、测试环境等更多的信息。
    测试计划的外部作用是为顾客提供一种信心,通常向顾客交代有关测试过程、人员的技能、资源、使用的工具等信息。

# 测试范围

[描述测试的各个阶段(例如,单元测试、集成测试或系统测试),并说明本计划所针对的测试类型(如功能测试或性能测试)。
简要地列出测试对象中将接受测试或将不接受测试的那些性能和功能。
如果在编写此文档的过程中做出的某些假设可能会影响测试设计、开发或实施,则列出所有这些假设。
列出可能会影响测试设计、开发或实施的所有风险或意外事件。
列出可能会影响测试设计、开发或实施的所有约束。

# 编写条件

俗话说:凡事预则立,不预则废!在测试项目之初就要制定相应的测试计划。接下来谈下如何编写测试计划问题。首先了解以下几个问题:

  1. 为什么要编写测试计划?
    1)领导能够根据测试计划做宏观调控,进行相应资源配置等;
    2)测试人员能够了解整个项目测试情况以及项目测试不同阶段的所要进行的工作等;
    3)便于其他人员了解测试人员的工作内容,进行有关配合工作
  2. 什么时间开始编写测试计划?
    (测试需求分析前总体测试计划书/测试需求分析后详细测试计划书)
  3. 由谁来编写测试计划?
    具有丰富经验的项目测试负责人
  4. 测试计划编写6要素?(5W1H)
    1)why——为什么要进行这些测试;
    2)what—测试哪些方面,不同阶段的工作内容;
    3)when—测试不同阶段的起止时间;
    4)where—相应文档,缺陷的存放位置,测试环境等;
    5)who—项目有关人员组成,安排哪些测试人员进行测试
    6)how—如何去做,使用哪些测试工具以及测试方法进行测试。

# 评审总结

  1. 计划评审
    测试计划编写完成后,一般要对测试计划的正确性、全面性以及可行性等进行评审,评审人员的组成包括软件开发人、营销人员、测试负责人以及其他有关项目负责人。
  2. 计划总结
    项目完成后,应该对计划的执行情况进行评审,看有哪些不合理的地方,以便为编写下一个项目测试计划做经验积累。

# 测试策略

提供了对测试对象进行测试的推荐方法。
对于每种测试,都应提供测试说明,并解释其实施的原因。
制定测试策略时所考虑的主要事项有:将要使用的技术以及判断测试何时完成的标准。
下面列出了在进行每项测试时需考虑的事项,除此之外,测试还只应在安全的环境中使用已知的、有控制的数据库来执行。
注意:不实施某种测试,则应该用一句话加以说明,并陈述这样的理由。例如,“将不实施该测试。该测试本项目不适用”。

# 数据和数据库完整性测试

要<项目名称>中,数据库和数据库进程应作为一个子系统来进行测试。在测试这些子系统时,不应将测试对象的用户界面用作数据的接口。对于数据库管理系统(DBMS),还需要进行深入的研究,以确定可以支持以下测试的工具和技术。

  1. 测试目标
    确保数据库访问方法和进程正常运行,数据不会遭到损坏。
  2. 测试范围
    1)技术
    调用各个数据库访问方法和进程,并在其中填充有效的和无效的数据(或对数据的请求)。
    2)检查数据库
    确保数据已按预期的方式填充,并且所有的数据库事件已正常发生;或者检查所返回的数据,确保正当的理由检索到了正确的数据。
    3)完成标准
    所有的数据库访问方法和进程都按照设计的方式运行,数据没有遭到损坏。
  3. 测试重点和优先级
    1)需考虑的特殊事项
    测试可能需要DBMS开发环境或驱动程序在数据库中直接输入或修改数据。
    2)进程应该以手工方式调用
    3)应使用小型或最小的数据库(记录的数量有限)来使所有无法接受的事件具有更大的可视度

# 接口测试

  1. 测试目标:确保接口调用的正确性
  2. 测试范围:所有软件、硬件接口,记录输入输出数据
  3. 技术
  4. 开始标准
  5. 完成标准
  6. 测试重点和优先级
  7. 需考虑的特殊事项:接口的限制条件

# 集成测试

集成测试―主要目的检测系统是否达到需求对业务流程及数据流的处理是否符合标准,检测系统对业务流处理是否存在逻辑不严谨及错误,检测需求是否存在不合理的标准及要求。此阶段测试基于功能完成的测试。

  1. 测试目标:检测需求中业务流程,数据流的正确性
  2. 测试范围:需求中明确的业务流程,或组合不同功能模块而形成一个大的功能。
  3. 技术:利用有效的和无效的数据来执行各个用例、用例流或功能,以核实以下内容:在使用有效数据时得到预期的结果。在使用无效数据时显示相应的错误消息或警告消息。各业务规则都得到了正确的应用。
  4. 开始标准:在完成某个集成测试时必须达到标准
  5. 完成标准:所计划的测试已全部执行。所发现的缺陷已全部解决
  6. 测试重点和优先级:测试重点指在测试过程中需着重测试的地方,优先级可以根据需求及严重来定
  7. 需考虑的特殊事项:确定或说明那些将对功能测试的实施和执行造成影响的事项或因素(内部的或外部的)

# 功能测试

对测试对象的功能测试应侧重于所有可直接追踪到用例或业务功能和业务规则的测试需求。这种测试的目标是核实数据的接受、处理和检索是否正确,以及业务规则的实施是否恰当。此类测试基于黑盒技术,该技术通过图形用户界面(GUI)与应用程序进行交互,并对交互的输出或结果进行分析,以此来核实应用程序及其内部进程。

  1. 测试目标:确保测试的功能正常,其中包括导航,数据输入,处理和检索等功能。
  2. 测试范围
  3. 技术:利用有效的和无效的数据来执行各个用例、用例流或功能,以核实以下内容:在使用有效数据时得到预期的结果。在使用无效数据时显示相应的错误消息或警告消息。各业务规则都得到了正确的应用。
  4. 开始标准
  5. 完成标准
  6. 测试重点和优先级
  7. 需考虑的特殊事项:确定或说明那些将对功能测试的实施和执行造成影响的事项或因素(内部的或外部的)

# 用户界面测试

用户界面(UI)测试用于核实用户与软件之间的交互。UI测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。另外,UI测试还可确保UI中的对象按照预期的方式运行,并符合公司或行业的标准。

  1. 测试目标
    核实以下内容:通过测试进行的浏览可正确反映业务的功能和需求,这种浏览包括窗口与窗口之间、字段与字段之间的浏览,以及各种访问方法(Tab键、鼠标移动、和快捷键)的使用窗口的对象和特征(例如,菜单、大小、位置、状态和中心)都符合标准。
  2. 测试范围
  3. 技术:为每个窗口创建或修改测试,以核实各个应用程序窗口和对象都可正确地进行浏览,并处于正常的对象状态。
  4. 开始标准
  5. 完成标准:成功地核实出各个窗口都与基准版本保持一致,或符合可接受标准
  6. 测试重点和优先级
  7. 需考虑的特殊事项:并不是所有定制或第三方对象的特征都可访问

# 性能评测

性能评测是一种性能测试,它对响应时间、事务处理速率和其他与时间相关的需求进行评测和评估。性能评测的目标是核实性能需求是否都已满足。实施和执行性能评测的目的是将测试对象的性能行为当作条件(例如工作量或硬件配置)的一种函数来进行评测和微调。

提示

以下所说的事务是指“逻辑业务事务”。这种事务被定义为将由系统的某个Actor通过使用测试对象来执行的特定用例,添加或修改给定的合同。]

  1. 测试目标:核实所指定的事务或业务功能在以下情况下的性能行为:正常的预期工作量预期的最繁重工作量
  2. 测试范围
  3. 技术:使用为功能或业务周期测试制定的测试过程。通过修改数据文件来增加事务数量,或通过修改脚本来增加每项事务的迭代数量。脚本应该在一台计算机上运行(最好是以单个用户、单个事务为基准),并在多个客户机(虚拟的或实际的客户机,请参见下面的“需要考虑的特殊事项”)上重复。
  4. 开始标准
  5. 完成标准:单个事务或单个用户:在每个事务所预期时间范围内成功地完成测试脚本,没有发生任何故障。多个事务或多个用户:在可接受的时间范围内成功地完成测试脚本,没有发生任何故障。
  6. 测试重点和优先级
  7. 需考虑的特殊事项:综合的性能测试还包括在服务器上添加后台工作量。可采用多种方法来执行此操作,其中包括:直接将“事务强行分配到”服务器上,这通常以“结构化语言”(SQL)调用的形式来实现。通过创建“虚拟的”用户负载来模拟许多个(通常为数百个)客户机。此负载可通过“远程终端仿真(Remote Terminal Emulation)工具来实现。此技术还可用于在网络中加载“流量”。使用多台实际客户机(每台客户机都运行测试脚本)在系统上添加负载。性能测试应该在专用的计算机上或在专用的机时内执行,以便实现完全的控制和精确的评测。性能测试所用的数据库应该是实际大小或相同缩放比例的数据库。

# 负载测试

负载测试是一种性能测试。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载 测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关 的方面。

提示

以下所说的事务是指“逻辑业务事务”。这各事务被定义为将由系统的某个最终用户通过使用应用程序来执行的特定功能,例如,添加或修改给定的合同。

  1. 测试目标:核实所指定的事务或商业理由在不同的工作量条件下的性能行为时间。
  2. 测试范围
  3. 技术:使用为功能或业务周期测试制定的测试。通过修改数据文件来增加事务数量,或通过修改脚本来增加每项事务发生的次数。
  4. 开始标准
  5. 完成标准:多个事务或多个用户:在可接受的时间范围内成功地完成测试,没有发生任何故障。
  6. 测试重点和优先级
  7. 需考虑的特殊事项:负载测试应该在专用的计算机上或在专用的机时内执行,以便实现完全的控制和精确的评测。负载测试所用的数据库应该是实际大小或相同缩放比例的数据库。

# 强度测试

强度测试是一种性能测试,实施和执行此类测试的目的是找出因资源不足或资源争用而导致的错误。如果内存或磁盘空间不足,测试对象就可能会表现出一些在正常条 件下并不明显的缺陷。而其他缺陷则可能由于争用共享资源(如数据库锁或网络带宽)而造成的。强度测试还可用于确定测试对象能够处理的最大工作量。

提示

以下提到的事务都是指逻辑业务事务。

  1. 测试目标:核实测试对象能够在以下强度条件下正常运行,不会出现任何错误:服务器上几乎没有或根本没有可用的内存(RAM和DASD)连接或模拟了最大实际(实际允许)数量的客户机多个用户对相同的数据或帐户执行相同的事务最繁重的事务量或最差的事务组合(请参见上面的“性能测试”)。注:强度测试的目标可表述为确定和记录那些使系统无法继续正常运行的情况或条件。
  2. 测试范围
  3. 技术:使用为性能评测或负载测试制定的测试。要对有限的资源进行测试,就应该在一台计算机上运行测试,而且应该减少或限制服务器上的RAM和DASD。对于其他强度测试,应该使用多台客户机来运行相同的测试或互补的测试,以产生最繁重的事务量或最差的事务组合。
  4. 开始标准
  5. 完成标准:所计划的测试已全部执行,并且在达到或超出指定的系统限制时没有出现任何软件故障,或者导致系统出现故障条件的并不在指定的条件范围之内。
  6. 测试重点和优先级
  7. 需考虑的特殊事项:如果要增加网络工作强度,可能会需要使用网络工具来给网络加载消息或信息包。应该暂时减少用于系统的DASD,以限制数据库可用空间的增长。使多个客户机对相同的记录或数据帐户同时进行的访问达到同步。

# 容量测试

容量测试使测试对象处理大量的数据,以确定是否达到了将使软件发生故障的极限。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。例 如,如果测试对象正在为生成一份报表而处理一组数据库记录,那么容量测试就会使用一个大型的测试数据库。检验该软件是否正常运行并生成了正确的报表。

  1. 测试目标:核实测试对象在以下高容量条件下能否正常运行:连接或模拟了最大(实际或实际允许)数量的客户机,所有客户机在长时间内执行相同的、且情况(性能)最坏的业务功能。已达到最大的数据库大小(实际的或按比例缩放的),而且同时执行多个查询或报表事务。
  2. 测试范围
  3. 技术:使用为性能评测或负载测试制定的测试。应该使用多台客户机来运行相同的测试或互补的测试,以便在长时间内产生最繁重的事务量或最差的事务组合(请参见上面的“强度测试”)创建最大的数据库大小(实际的、按比例缩放的、或填充了代表性数据的数据库),并使用多台客户机在长时间内同时运行查询和报表事务。
  4. 开始标准
  5. 完成标准:所计划的测试已全部执行,而且达到或超出指定的系统限制时没有出现任何软件故障。
  6. 测试重点和优先级
  7. 需考虑的特殊事项:对于上述的高容量条件,哪个时间段是可以接受的时间?
  8. 安全性和访问

# 安全性和访问控制测试

访问控制测试侧重于安全性的两个关键方面:
应用程序级别的安全性,包括对数据或业务功能的访问。
系统级别的安全性,包括对系统的登录或远程访问。
应用程序级别的安全性可确保:在预期的安全性情况下,Actor只能访问特定的功能或用例,或者只能访问有限的数据。
例如,可能会允许所有人输入数据,创建新帐户,但只有管理员才能删除这些数据或帐户。
如果具有数据级别的安全性,测试就可确保“用户类型一”能够看到所有客户消息(包括财务数据),而“用户二”看见同一客户的统计数据。
系统级别的安全性可确保只有具备系统访问权限的用户才能访问应用程序,而且只能通过相应的网关来访问。

  1. 测试目标
  2. 应用程序级别的安全性:核实Actor只能访问其所属用户类型已被授权访问的那些功能或数据。
  3. 系统级别的安全性:核实只有具备系统和应用程序访问权限的Actor才能访问系统和应用程序。
  4. 测试范围
  5. 技术
  6. 应用程序级别的安全性:确定并列出各用户类型及其被授权访问的功能或数据。为各用户类型创建测试,并通过创建各用户类型所特有的事务来核实其权限。修改用户类型并为相同的用户重新运行测试。对于每种用户类型,确保正确地提供或拒绝了这些附加的功能或数据。
  7. 系统级别的访问:请参见以下的“需考虑的特殊事项”。
  8. 开始标准
  9. 完成标准:各种已知的Actor类型都可访问相应的功能或数据,而且所有事务都按照预期的方式运行,并在先前的应用程序功能测试中运行了所有的事务。
  10. 测试重点和优先级
  11. 需考虑的特殊事项:必须与相应的网络或系统管理员一直对系统访问权进行检查和讨论。由于此测试可能是网络管理可系统管理的职能,可能会不需要执行此测试。

# 故障转移和恢复测试

故障转移和恢复测试可可确保测试对象能成功完成转移,并能从导致意外数据损失或数据完整性破坏的各种硬件、软件可网络故障中恢复。

  1. 故障转移测试可确保:对于必须持续运行的系统,一旦发生故障,备用系统就将不失时机地“顶替”发生故障的系统,以避免丢失任何数据或事务。恢复测试是一种对抗性的测试过程。在这种测试中,将把应用程序或系统置于极端的条件下(或者是模拟的极端条件下),以产生故障(例如设备输入/输出(I/O)故障或无效的数据库指针和关键字)。然后调用恢复进程并监测和检查应用程序和系统,核实应用程序或系统和数据已得到了正确的恢复。
  2. 测试目标:确保恢复进程(手工或自动)将数据库、应用程序和系统正确地恢复到预期的已知状态。
  3. 测试中将包括以下各种情况:客户机断电、服务器断电、通过网络服务器产生的通信中断DASD和/或DASD控制器被中断、断电或与DASD和/或DASD控制器的通信中断、周期未完成(数据过滤进程被中断,数据同步进程被中断)、数据库指针或关键字无效、数据库中的数据元素无效或遭到破坏。
  4. 测试范围
  5. 技术:应该使用为功能和业务周期测试创建的测试来创建一系列的事务。一旦达到预期的测试起点,就应该分别执行或模拟以下操作: 1)客户机断电:关闭PC机的电源。
    2)服务器断电:模拟或启动服务器的断电过程。
    3)通过网络服务器产生的中断:模拟或启动网络的通信中断(实际断开通信线路的连接或关闭网络服务器或路由器的电源)。
    4)DASD和DASD控制器被中断、断电或与DASD和DASD控制器的通信中断:模拟与一个或多个DASD控制器或设备的通信,或实际取消这种通信。
    5)一旦实现了上述情况(或模拟情况),就应该执行其他事务。而且一旦达到第二个测试点状态,就应调用恢复过程。
    6)在测试不完整的周期时,所使用的技术与上述技术相同,只不过应异常终止或提前终止数据库进程本身。
    7)对以下情况的测试需要达到一个已知的数据库状态。当破坏若干个数据库字段、指针和关键字时,应该以手工方式在数据库中(通过数据库工具)直接进行。其他事务应该通过使用“应用程序功能测试”和“业务周期测试”中的测试来执行,并且应执行完整的周期。
  6. 开始标准
  7. 完成标准:在所有上述情况中,应用程序、数据库和系统应该在恢复过程完成时立即返回到一个已知的预期状态。此状态包括仅限于已知损坏的字段、指针或关键字范围内的数据损坏,以及表明进程或事务因中断面未被完成的报表。
  8. 测试重点和优先级
  9. 需考虑的特殊事项:恢复测试会给其他操作带来许多的麻烦。断开缆线连接的方法(模拟断电或通信中断)可能并不可取或不可行。所以,可能会需要采用其他方法,例如诊断性软件工具。
    1)需要系统(或计算机操作)、数据库和网络组中的资源。
    2)这些测试应该在工作时间之外或在一台独立的计算机上运行。

# 配置测试

配置测试核实测试对象在不同的软件和硬件配置中的运行情况。在大多数生产环境中,客户机工作站、网络连接和数据库服务器的具体硬件规格会有所不同。客户机工 作站可能会安装不同的软件 例如,应用程序、驱动程序等 而且在任何时候,都可能运行许多不同的软件组合,从而占用不同的资源。

  1. 测试目标:核实测试可在所需的硬件和软件配置中正常运行。
  2. 测试范围
  3. 技术:使用功能测试脚本。
    1)在测试过程中或在测试开始之前,打开各种与非测试对象相关的软件(例如Microsoft应用程序:Excel和Word),然后将其关闭。
    2)执行所选的事务,以模拟Actor与测试对象软件和非测试对象软件之间的交互。
    3)重复上述步骤,尽量减少客户机工作站上的常规可用内存。
  4. 开始标准
  5. 完成标准:对于测试对象软件和非测试对象软件的各种组合,所有事务都成功完成,没有出现任何故障。
  6. 测试重点和优先级
  7. 需考虑的特殊事项:需要、可以使用并可以通过桌面访问哪种非测试对象软件?
    1)通常使用的是哪些应用程序?
    2)应用程序正在运行什么数据?例如,在Excel中打开的大型电子表格,或是在Word中打开的100页文档。
    3)作为此测试的一部分,应将整修系统、Netware、网络服务器、数据库等都记录下来。

# 安装测试

安装测试有两个目的。
第一个目的是确保该软件在正常情况和异常情况的不同条件下 例如,进行首次安装、升级、完整的或自定义的安装 都能进行安装。异常情况 包括磁盘空间不足、缺少目录创建权限等。
第二个目的是核实软件在安装后可立即正常运行。这通常是指运行大量为功能测试制定的测试。

  1. 测试目标:核实在以下情况下,测试对象可正确地安装到各种所需的硬件配置中:
    1)首次安装。以前从未安装过<项目名称>的新计算机
    2)更新。以前安装过相同版本的<项目名称>的计算机
    3)更新。以前安装过从未安装过;<项目名称>安装过相同或较早的版本。
    4)启动或执行安装。
    5)使用预先确定的功能测试脚本子集来运行事务。
  2. 开始标准
  3. 完成标准:<项目名称>事务成功执行,没有出现任何故障。
  4. 测试重点和优先级
  5. 需考虑的特殊事项:应该选择<项目名称>的哪些事务才能准确地测试出<项目名称>应用程序已经成功安装,而且没有遗漏主要的软件构。