1、 测试需求及需求分析测试需求及需求分析讲师:马晓娜测试需求及需求分析 1 测试需求概述 1.1 什么是测试需求 1.2 测试需求的特征 1.3 为什么需要测试需求 2 测试需求分析过程 2.1 需求采集 2.2 测试需求分析 2.3 测试需求评审1.1 什么是测试需求 测试需求主要解决“测什么”的问题,即指明被测对象中什么需要测试。测试需求通常是以软件开发需求为基础进行分析,通过对开发需求的细化和分解,形成可测试的内容。测试需求应全部覆盖已定义的业务流程,以及功能和非功能方面的需求;1.2 测试需求的特征 制定的测试需求项必须是可核实的。即,它们必须有一个可观察、可评测的结果,无法核实的需求不
2、是测试需求;测试需求应指明满足需求的正常的前置条件,同时也要指明不满足需求时的出错条件;测试需求不涉及具体的测试数据,测试数据设计是测试设计环节应解决的内容。1.3 为什么需要测试需求 软件测试需求是开发测试用例的依据。有助于保证测试的质量与进度。测试需求是衡量测试覆盖率的重要指标。2 测试需求分析过程 2.1 需求采集 需求采集的过程是将软件开发需求中的那些具有可测试性的需求或特性提取出来,形成原始测试需求。可测试性是指这些提取的需求或特性必须存在一个可以明确预知的结果,可以用某种方法对这个明确的结果进行判断、验证,验证是否符合文档中的要求。2.1 需求采集 需求采集的提取方法:通过列表的形
3、式对软件开发需求进行梳理,形成原始测试需求列表,列表的内容包括需求标识、原始测试需求描述、信息来源。将每一条软件需求对应的开发文档及章节号作为软件需求标识。使用软件需求的简述作为原始测试需求描述。软件需求获取的来源信息 作为信息来源。2.1 需求采集 提取的原始测试需求中,可能存在重复和冗余,在提取原始测试需求过程中,可以通过以下方法整理原始测试需求:删除:删除原始测试需求表中重复的、冗余的含有包含关系的原始测试需求描述;细化:对太简略的原始测试需求描述进行细化;合并:如果有类似的原测试始需求,在整理时需要对其进行合并。2.1 需求采集-举例 “人力资源管理系统人力资源管理系统”原始测试需求表
4、原始测试需求表序号序号软件需求标识软件需求标识原始测试需求描述原始测试需求描述信息来源信息来源13.1.1基本信息管理增加员工信息人事部门招聘专员对于新招聘的职员信息可以录入到HRMIS系统中,主要职员信息如下:姓名、性别、出生日期、政治面貌、文化水平、婚姻情况、家庭住址、身份证号、办公电话、移动电话、紧急情况下的联系人和联系方式、毕业院校、入职时间、岗位及职责,其中,性别包含男、女两个类别;婚姻情况包括未婚、已婚、离异三种情况。人力资源管理系统业务需求说明书删除员工信息删除需用户确认,可以逐条删除或多条一次删除GB/T 17544-199823.2.2时间特性要求并发15个用户,平均登录时间
5、小于10秒 人力资源管理系统业务需求说明书3隐含需求:在使用中操作错误的易恢复性程序应对关键数据的操作给出警告或在执行前确认GB/T 17544-19982.2 测试需求分析 2.2 测试需求分析 a)对原始测试需求列表中列出的每一条开发需求,形成可测试的分层描述的测试要点;b)对步骤a)形成的每一条测试要点,从GB/T 16260.1-2006软件工程 产品质量 第1部分:质量模型中定义的软件内部/外部质量模型来确定软件产品的质量需求;c)对步骤b)所确定的质量需求,分析测试执行时需要实施的测试类型;d)建立测试需求跟踪矩阵,对测试需求进行管理。2.2.1 测试要点分析 测试要点是对原始测试
6、需求表每一条开发需求的细化和分解,形成的可测试的分层描述的软件需求。对开发需求的细化和分解具体包括:通过分析每条开发需求描述中的输入、输出、处理、限制、约束等,给出对应的验证内容;通过分析各个功能模块之间的业务顺序,和各个功能模块之间传递的信息和数据(功能交互分析),对存在功能交互的功能项,给出对应的验证内容。2.2.1 测试要点分析 功能交互分析 2.2.1 测试要点分析 进行细化和分解还需考虑:需求的完整性,经过分解获得的需求必须能够充分覆盖软件需求的各种特征(包括隐含的特征),每个需求必须可以独立完成有意义的功能或功能组合,可以进行单独测试;需求的规模,每个最低层次的需求能够使用数量相当
7、的测试用例来实现,也即测试的粒度是均匀的 2.1 需求采集-举例 “人力资源管理系统人力资源管理系统”原始测试需求表原始测试需求表序号序号软件需求标识软件需求标识原始测试需求描述原始测试需求描述信息来源信息来源113.6.1培训信息维护录入培训信息一条完整的培训信息包括培训的主题、证书、内容、起止时间、费用、地点、机构,其中培训的主题、内容、起止时间、费用、机构为必填项。培训的起始时间不能晚于截止时间,培训费用精确到元角分。每一个输入项的数据规格在数据字典中可以得到。人力资源管理系统业务需求说明书删除培训信息删除需用户确认,可以逐条删除或多条一次删除GB/T 17544-19982.2.1 测
8、试要点分析-举例 2.2.2 质量特性分析 对每一条测试要点,从GB/T16260.1定义的软件质量子特性角度出发,确定所对应的质量子特性。2.2.2 质量特性定义 功能性 适合性:软件产品为指定的任务和用户目标提供一组合适的功能的能力。准确性:软件产品提供具有所需精度的正确或相符的结果或效果的能力。可靠性 容错性:在软件出现故障或违反其指定接口的情况下,软件产品维持规定的性能级别的能力。易用性 易理解性:软件产品使用户能理解软件是否合适以及如何能将软件用于特定的任务和使用条件的能力。易操作性:软件产品使用户能理解和操作它的能力。2.2.2 分析质量特性-举例 2.2.2 分析质量特性-举例
9、2.2.3 分析测试类型 不同的质量子特性可以确定出不同的测试内容,这些测试内容可以通过不同的测试类型来实施。软件测试可以划分为以下测试类型:功能测试、安全性测试、接口测试、容量测试、完整性测试、结构测试、用户界面测试、负载测试、压力测试、疲劳强度测试、恢复性测试、配置测试、兼容性测试、安装测试等。根据质量子特性的定义,以及各测试类型的测试内容,可以分析出质量子特性与测试类型的对应关系。2.2.3 分析测试类型 质量子特性和测试类型的对应关系基准表 2.2.2 质量特性定义 功能测试:侧重于验证测试目标预期功能,确保满足提供所需的服务、方法或用例。针对不同测试目标(包括单元、集成单元、应用程序
10、和系统)实施和执行此测试。完整性测试:侧重于评估测试目标的健壮性(防止故障)和语言、语法和资源用途的技术一致性。针对不同测试目标(包括单元和集成单元)实施并执行此测试。容量测试:侧重于验证测试目标处理大量数据的能力,可以是输入和输出或数据库中驻留的数据。2.2.2 质量特性定义 安全性测试:侧重于确保测试目标数据只供预订好的那些参与者访问。针对各种测试目标实施并执行此测试。接口测试:侧重于验证测试目标的数据接口的正确性和对其设计的遵循性。结构测试:侧重于评估测试目标对其设计和形式的遵循性。通常,对支持web的应用程序执行此测试,以确保连接所有链接,显示合适的内容和未孤立任何内容。用户界面测试:
11、侧重于验证用户与软件的交互,确保用户界面向用户提供对应用程序功能的相应访问和浏览。2.2.2 质量特性定义 用户界面测试:侧重于验证测试目标预期功能,确保满足提供所需的服务、方法或用例。针对不同测试目标(包括单元、集成单元、应用程序和系统)实施和执行此测试。完整性测试:侧重于评估测试目标的健壮性(防止故障)和语言、语法和资源用途的技术一致性。针对不同测试目标(包括单元和集成单元)实施并执行此测试。容量测试:侧重于验证测试目标处理大量数据的能力,可以是输入和输出或数据库中驻留的数据。安全性测试:侧重于确保测试目标数据只供预订好的那些参与者访问。针对各种测试目标实施并执行此测试。接口测试:侧重于验
12、证测试目标的数据接口的正确性和对其设计的遵循性。结构测试:侧重于评估测试目标对其设计和形式的遵循性。通常,对支持web的应用程序执行此测试,以确保连接所有链接,显示合适的内容和未孤立任何内容。2.2.3 分析测试类型-举例2.2.3 分析测试类型-举例2.2.3 分析测试类型 为了避免遗漏,在确定测试类型时,还需考虑:文档中是否包含测试类型相对应的情况的说明;列出的常见测试类型是否已完全覆盖了被测软件;被测软件的某些特殊情况是否已包含在所列出的测试类型中。2.2.4 测试需求跟踪矩阵 建立测试需求跟踪矩阵,对测试需求进行管理。将上述步骤分析、确定的开发需求、测试需求、测试类型填入测试跟踪需求矩
13、阵。测试需求跟踪矩阵为原始测试需求与测试要点的对应关系表,格式如下:2.2.4 测试需求跟踪矩阵 建立测试需求跟踪矩阵,对测试需求进行管理。将上述步骤分析、确定的开发需求、测试需求、测试类型填入测试跟踪需求矩阵。通过测试需求跟踪矩阵的方式对需求变更实施管理。软件需求一旦发生变化,就要对需求跟踪表进行维护,启动配置管理过程,将与软件需求变更相关的内容进行同步变更。2.2.4 测试需求跟踪矩阵-举例 增加培训信息2.2.4 测试需求跟踪矩阵-举例 增加培训信息2.2.4 测试需求跟踪矩阵 测试需求跟踪矩阵需要不断的维护。一方面,软件需求一旦发生变化,应启动配置管理过程,将与软件需求变更相关的内容进
14、行同步变更;另一方面,随着测试工作的进行,会不断添加新的跟踪内容,对跟踪表进行扩展。例如,测试设计阶段的测试用例、测试执行阶段的测试记录和测试缺陷都可以添加到跟踪矩阵中。2.3 测试需求评审 评审的内容:完整性审查:应保证测试需求能充分覆盖软件需求的各种特征,重点关注功能要求、数据定义、接口定义、性能要求、安全性要求、可靠性要求、系统约束等方面,同时还应关注是否覆盖开发人员遗漏的、系统隐含的需求;准确性审查:应保证所描述的内容能够得到相关各方的一致理解,各项测试需求之间没有矛盾和冲突,各项测试需求在详尽程度上保持一致,每一项测试需求都可以作为测试用例设计的依据。2.2.3 测试需求评审 评审的
15、形式 相互评审、交叉评审:甲和乙在一个项目组,处在一个领域,但工作内容不同,甲的工作成果交给乙审查,乙的工作成果交给甲审查。相互评审是最不正式的一种评审形式,但应用方便、有效。轮查:又称分配审查方法,是一种异步评审方式。作者将需要评审的内容发送给各位评审员,并收集他们的反馈意见。2.2.3 测试需求评审 评审的形式 走查:作者将测试需求在现场向一组同事介绍,以收集大家的意见。希望参与评审的其他同事可以发现其中的错误,并能进行现场讨论。这种形式介于正式和非正式之间。小组评审:通过正式的小组会议完成评审工作,是有计划的和结构化的评审方式。评审定义了评审会议中的各种角色和相应的责任,所有参与者在评审会议的前几天就拿到了评审材料,并对该材料进行了独立研究。2.2.3 测试需求评审 评审的形式 审查:审查和小组评审很相似,但更为严格,是最系统化、最严密的评审形式,包含了制定计划、准备和组织会议、跟踪和分析审查结果等。2.2.3 测试需求评审 评审的人员组成:正式评审小组中,一般存在多种角色,包括协调人、作者、评审员等。评审员需要精心挑选,保证不同类型的人员都要参与进行来,通常包括开发经理、项目经理、测试经理、系统分析人员、相关开发人员和测试人员等。