编号:SYD/CMM-STP软件CMM规范之――软件测试规程V1.0.0前言软件测试是保证软件质量的重要手段,软件测试规程规范了公司软件测试及测试管理流程,结合公司在测试过程中所采用的方法、工具等,检查、验证开发工作产品,确保公司的产品:1.满足用户对软件产品定义的需求;2.产品文档满足软件CMM规范及用户需求;3.产品中软件代码的错误降到最少;4.产品运行的稳定性、可用性良好。
修订页目录1.目的 (1)2.适用范围 (1)3.定义 (1)4.职责 (1)5.测试分类 (2)6.使用工具 (3)7.流程图 (4)8.测试过程管理 (5)8.1 测试计划制订及管理 (6)8.1.1任务描述 (6)8.1.2工作内容 (6)8.1.3工作产品 (6)8.1.4裁剪指南 (6)8.2 测试用例设计及管理 (7)8.2.1任务描述 (7)8.2.2工作内容 (7)8.2.3工作产品 (8)8.2.4裁剪指南 (8)8.3 测试程序设计和管理 (8)8.3.1任务描述 (8)8.3.2工作内容 (8)8.3.3工作产品 (9)8.3.4裁剪指南 (9)8.4 BUG管理 (9)8.4.1任务描述 (9)8.4.2工作内容 (9)8.4.3工作产品 (11)8.1.5裁剪指南 (11)8.5 测试分析报告编写及管理 (11)8.5.1任务描述 (11)8.5.2工作内容 (12)8.5.3工作产品 (12)8.5.4裁剪指南 (12)8.6 单元测试 (12)8.6.1任务描述 (12)8.6.2工作内容 (12)8.6.3工作产品 (13)8.6.4裁剪指南 (13)8.7 集成测试 (13)8.7.1任务描述 (13)8.7.2工作内容 (13)8.7.3工作产品 (14)8.7.4裁剪指南 (14)8.8 系统测试 (14)8.8.1任务描述 (14)8.8.2工作内容 (14)8.8.3工作产品 (15)8.8.4裁剪指南 (15)9.附录 (16)附录A缺陷(BUG)分类 (16)1.目的规范测试工作,为软件测试工作提供详细的指引。
以发现错误为目的,提高公司软件测试的管理水平,确保公司开发产品的质量。
2.适用范围适用于公司所有研发性项目,而维护项目、客户定制应用开发项目、未提交测试部测试项目可参照本流程执行。
3.定义➢驱动程序(Driver):在单元测试和集成测试中,协调输入和输出的测试程序。
➢桩程序(Stub):在单元测试和集成测试中,模拟被调用单元的测试程序。
➢冒烟测试(Smoking test):对通过创建的程序代码进行的通过性验证,以确定该版本是否具有可测性。
4.职责➢测试部经理:组织公司测试部的日常工作,指定测试负责人,提供项目测试资源;在项目组与测试组对BUG处理过程中的意见不一致时,充分参考高级经理和产品部总经理的意见,进行最后仲裁;调整提交BUG的严重级别和状态等内容;对最终测试结果(测试分析报告)进行审批。
➢高级经理:在项目组与测试组对BUG处理过程中的意见不一致时,给测试部经理提供自己的参考意见。
➢项目经理:与测试部经理一起批准测试计划与测试用例;进行BUG的分配工作,督促开发人员对BUG的修改。
➢产品部总经理:对产品部测试项目的优先级进行排序;当高级经理无法协调项目经理与测试部门经理的争议时,由产品部总经理进行协调;批准例外放行。
➢总工:审批测试部的测试范围、测试资源、测试方法和测试工具;对提交测试部测试的项目进行批准;对研发部测试项目的优先级进行排序,在测试部经理与研发部项目经理意见不一致时进行协调。
➢测试负责人:全面负责组织测试的计划、设计、实施、执行、评估过程;检查项目测试工作完成和遗漏情况;对提交的BUG进行有效性验证;负责对项目组的沟通工作;即时汇报测试进展情况和存在的问题;负责对测试计划、测试用例、测试分析报告进行组织分层编写、修订等工作,并参与以上工作内容的评审;单元测试与集成测试中测试负责人可以是项目经理或项目经理指定的负责人;➢版本创建人员:按集成或创建计划、从配置库中获得相应版本的源代码进行编译、联接等版本创建活动,提交创建结果给测试人员,并对创建版本进行管理。
(在没有固定版本创建人员时,版本创建由测试组兼任)➢测试人员:执行测试、BUG提交、跟踪验证、回归关闭;完成测试负责人分配的相关工作。
单元测试与集成测试中测试人员即为开发人员;➢SQA人员:参与测试相关工作产品的审查,统计缺陷,并参与计划、设计及执行结果评审。
➢SCM人员:参与测试过程中工作产品的配置工作,按公司配置管理过程执行。
5.测试分类根据面向过程软件测试所实施的操作类型可划分如下:单元测试:单元测试是对最小的可测试软件元素(单元)实施的测试,它所测试的内容包括单元的内部结构(如逻辑和数据流)以及单元的功能和可观测的行为。
使用白盒测试方法测试单元的内部结构,使用黑盒测试方法测试单元的功能和可观测的行为。
单元测试由开发人员执行,需要编写驱动程序和桩程序来完成。
集成测试:集成测试的目的是确保经过单元测试的各模块组合在一起后能够按既定意图协作运行,并确保增量的行为正确。
它所测试的内容包括单元间的接口以及集成后的功能。
集成测试由项目组完成,测试组使用黑盒测试方法重新测试集成的功能,并且对以前的集成进行回归测试。
系统测试:在实际(或模拟)使用环境下,针对系统需求规格说明规定的所有功能和非功能需求的全面验证工作,测试整个系统,以证实它满足要求所规定的功能、质量和性能等方面的特性。
(公司外包项目的验收测试应参照系统测试方法进行)用户测试:在用户的实际环境中,以用户使用手册为依据,测试整个系统,以保证其达到可以交付使用的状态,一般由用户进行测试设计和执行。
6.使用工具目前公司的使用工具如下:➢配置管理工具:ClearCase5.0,Visual SourceSafe 6.0;➢测试BUG管理工具:ClearQuest;➢功能测试工具:WinRunner7.5;➢单元测试工具:JUnit,Jtest 4.5,(Java, Jsp),C++test 2.1(C,C++);7.流程图测试管理总流程图软件测试开发、管理流程贯穿了项目的整个开发和测试生命周期,与整个软件开发过程基本上是并行进行并相互协调的。
结合公司现推荐采用的日创建开发模式,描述测试流程如下:1、测试人员参与需求分析和设计评审,确定需求的可测性,并贯穿到开发的整个过程;2、项目组编写开发计划书(含集成计划),测试人员据此产生创建计划书(或直接采用集成计划);3、测试人员细化测试计划和测试用例,产生测试计划书和测试用例说明书;4、由项目组、SQA人员、测试人员一起对测试计划书和测试用例说明书进行评审;5、开发人员完成单元模块编码,然后对单元模块经过一系列静态检查和动态测试;6、项目组执行集成测试,验证各通过单元测试的模块组合在一起的功能及其接口、数据传输的正确性,满足系统设计所规定的特性;7、版本创建人员按集成或创建计划、从配置库中获得相应版本的源代码进行版本创建活动,并对创建版本进行管理;8、测试人员对通过创建的工作产品执行冒烟测试,冒烟测试通过准则由测试人员和项目组事先在测试计划中约定,对冒烟测试未通过的系统,原则上由项目组当天解决问题,再次提交测试版本;9、测试人员对完成集成的模块执行功能测试,即流程图所示功能集成测试;执行该过程实际上是对项目组集成测试的回归测试,它是增量式的;10、重复步骤5-9,直至该版本所有功能都完成开发和经过功能集成测试;11、测试人员根据测试计划中定义的系统测试策略,完成其它约定内容的测试如性能测试、可使用性测试、安全性测试、安装/反安装测试等;12、完成全部测试工作或根据时间驱动,测试负责人撰写测试分析报告;13、测试分析报告由SQA人员负责组织评审,并由测试部经理批准;14、对没达到测试出口准则的项目,由产品部总经理进行审批后,可作例外放行;15、通过测试部测试的项目,在公司范围内进行产品版本发布并移交产品库。
8.测试过程管理测试过程管理的目的是在软件开发的生命周期中规范软件单元测试、集成测试、系统测试阶段的测试和测试管理活动,通过建立有序科学的管理体系,保证软件测试活动高效有序的开展。
8.1.1任务描述根据批准的需求规格说明书和相关设计文档,确定项目测试阶段的目标和策略,确保测试工作有序、有效进行。
8.1.2工作内容1.确定系统的测试需求,如功能需求、性能需求、安全性要求、可使用性需求等需求说明书中说明的和潜在的需求;2.测试负责人与项目经理协商,逐步确定测试项目的测试范围、测试粒度(覆盖标准)以及测试方案、测试阶段的出入口准则;3.根据项目的复杂度和以往的测试数据初步估计测试项目工作量,制定测试计划的进度安排。
逐步细化测试方案及测试规模估计;测试进度安排中要留有合理的测试BUG、用例管理时间;4.形成测试计划书(可包括单元、集成、系统阶段)并提交测试负责人、项目经理或测试部门经理审核。
批准人为项目经理。
同时测试负责人可发起测试计划的评审;审核批准通过则放入开发配置库;5.当项目开发计划或测试需求发生变更时,测试计划应考虑是否需要变更;8.1.3工作产品测试计划书、项目评审表、项目评审问题追踪表;8.1.4裁剪指南8.2.1任务描述根据批准的需求规格说明书和相关设计文档,策划测试过程执行依据,确保测试范围有效并正确。
8.2.2工作内容用例设计:1、测试人员参与需求评审,正确理解系统需求并确认需求的可测性,获取测试项目需求;2、根据批准的测试项目需求(在测试计划中有测试需求的详细描述),测试目标的逻辑实现和约束,测试工具及其测试环境等限制条件,设计测试用例;并确定系统测试中自动测试和手工测试的范围,对于有操作界面的模块,设计功能测试用例时应尽量采用Winrunner测试工具,性能测试则要考虑相应的性能测试工具)。
用Winrunner编写测试脚本时,可参考Winrunner编码规范。
3、测试负责人发起组织相关人员进行测试用例评审,从而提高测试用例的质量;系统测试用例审核人可以是测试负责人、项目经理、测试部门经理,批准人为项目经理;4、测试负责人负责基于系统的详细设计,确定单元测试范围和粒度,有效路径和值域等,组织开发人员进行单元测试中自动和手动测试用例的编写;并组织相关人员进行评审;5、测试负责人组织开发人员编写集成测试用例,并组织相关人员进行正式或非正式评审;6、当第一个创建版本提交后,测试负责人组织设计编写录制测试脚本,并在测试用例文档自动测试脚本一栏填写测试脚本的路径。
如果没有使用BUG管理工具和自动化测试工具,则必须在测试用例相应栏目填写测试结果。
自动化功能测试脚本主要应用于冒烟测试和回归测试;用例管理:1、测试负责人负责进行阶段测试用例的实施、跟踪及用例统计分析工作、改进测试用例等管理活动;2、当软件需求或设计变更引起测试需求变更时,将变更测试用例文档;3、测试负责人实时或定期根据Bug数据、状态和测试用例执行情况进行分析,以确定是否需要对目前测试的模块设计新的测试用例,对不稳定的模块,测试负责人负责与项目经理讨论确定测试范围、粒度和执行方案等,并指定相关人员完成新增测试用例的编写;4、新增测试用例批准后由测试人员执行;8.2.3工作产品软件测试用例(包括单元、冒烟、集成、系统测试用例)、项目评审表、项目评审问题追踪表8.2.4裁剪指南8.3测试程序设计和管理8.3.1任务描述设计、编写和管理测试程序、自动化测试脚本和其它辅助测试程序和脚本,以提高测试效率和测试质量。