软件测试的组织和管理
组织形式-SMT组
• 通常作为企业的内部顾问组的方式存在。 主要负责方法及标准的知识交流、编制开 发和测试指南、开发测试方法、测试工具 评估与培训,其同不同的项目组进行协作, 对其进行指导。通常不负责具体测试工作 的执行。由软件专家组成。
组织形式-企业或项目组织结构样例
• 微软的项目组织
产品组经理
软件测试的组织和管理
山东省软件评测中心 韩庆良
目标
• 与软件企业项目管理人员、测试管理人员 对测试管理进行交流。 • 提高对测试工作、测试管理的重要性的认 识,以改进我们的测试过程。 • 从理论角度来认识软件测试和测试管理。
主要内容
• 团队建设(组织结构、人员组成、规模、 人员培训) • 过程规划(软件过程、测试过程、测试的 阶段、规划自己的过程) • 测试过程实施(计划、设计、实施、执行、 评估、缺陷跟踪) • 过程改进(成熟度模型、改进) • 测试工具
• 适用的就是最好的。
组织形式-常见测试组组织结构
• • • • • 烟囱测试组(小型) 烟囱测试组(大型) 集中测试组 IV&V(独立验证与确认)测试组 SMT(系统方法与测试)组
组织形式-烟囱测试组
• 测试人员由临时人员组成,通常有2-5人组 成,直接向项目经理负责。大型的组可以 划分为几个小组,设测试经理。项目经理 负责制定测试计划文档。企业没有正规的 方法将测试程序、方法、相关的知识经验 传递下去,测试质量难以保证。优点是成 本低,不需要对测试人员提供培训、生活 保障等服务。
计算因子
6.16 6.16
人小时
5300 6900
完成周期
9个月 12个月
测试组 规模
3.4 3.3
测试组规模-确定方法(四)
• 任务计划法:根据历史记录中类似项目工作量,比 较新项目同历史项目的工作量,历史项目乘以相应 的因子。 • 步骤:先将任务分解,根据历史记录乘以一个因子, 计算出新项目的所以任务工作量。再根据该工作量 和完成周期计算测试组规模。
制订测试计划-步骤(一)
• 确定测试需求:确定测试对象以及测试工 作的范围和内容。测试需求应是可核实的。 测试需求可来源于软件需求列表、用例、 用例模型、用例实现、补充规约、设计需 求、商业理由、法规、标准、最终用户访 谈以及对现有系统的复审。 • 被确定的测试需求项必须是可核实的。即, 它们必须有一个可观察、可评测的结果。 无法核实的需求不是测试需求。
测试组规模-确定方法(一)
• 开发比例法:根据开发人员数量按照一定比例来确 定测试工程师的数量。开发人员指进行设计、开发、 编译以及进行单元测试的人员。
开发类型 商业产品(大型市场) 商业产品(小型市场) 单个客户端的应用开发 政府部门应用开发(内部) 公司应用开发(内部) 开发人员 30人 30人 30人 30人 30人 比例 3:2 3:1 6:1 4:1 5:1 4:1 测试组规模 20 10 5 7 6 7
6.4 验证过程
6.5 确认过程
系统需 求分析
系统结 构设计
系统 集成
系统鉴 定测试
6.6 联合评审过程 5.5 维护过程
过程 实施 修改 实施 移植 问题和修 改分析 维护评审 /验收 软件退役
软件需 求分析
软件结 构设计
软件详 细设计
软件 集成
软件鉴 定测试
6.7 审核过程
软件编码和测试
6.8 问题解决过程
• 业务知识:测试工程师应具备业务知识,并和用户紧密接 触。 • 技术知识:熟悉所测试的产品用到的技术,并掌握测试工 具、方法等相关技术。 • 任务划分:将业务任务和技术任务相互独立。 • 资源管理:业务资源和技术资源相互结合。 • 与开发组的关系:同开发人员协同工作。 • 生存周期早期介入:测试应在开发周期的早期介入。 • 测试过程:有成熟的测试过程管理规范。 • 灵活性/适应性:能够适应不同的测试项目。 • 度量:掌握度量的方法,以改进工作。 • 过程改进:应致力于工作的不断改进。
人员培养-人员要求
• • • • • • • • • • • 适应各种环境的知识背景 学习速度快 组织能力 解决问题的能力 创造性 分析/编程能力 业务领域的知识 交流与协调能力 测试经验 关注细节 书写与语法技能
一个好的测试人员 更难得
人员培养-成长的路径
• 初级测试工程师-测试工程师-高级测试工程师 -测试组负责人-测试负责人-测试经理-产品/ 业务经理。
• 技术技能:测试工具\测试自动化编程\编程语言\操作系统\ 网络、数据库\测试生存周期 (1-2年) • 测试过程:评审、制订和改进过程,指导初级工程师工作, 了解业务领域。 (3-4年) • 测试组工作:任务安排、跟踪和报告,监管测试工程师, 掌握测试周期支持工具。(4-6年) • 项目管理:管理项目,与客户交流,管理测试人员。(612年) • 产品管理:项目或产品研发指导、促进产品销售、确定业 务机会、承担盈亏责任。(12年以上)
软件过程-常见软件过程与模型(一)
• 瀑布模型、原型模型、演化模型、增量模 型、螺旋模型、喷泉模型等等。 • 敏捷方法(如XP、功能驱动等) • 统一过程(RUP) • 《GB/T 8566-2001 信息技术 软件生存周 期过程》 • 过程裁减
5.生存周期基本过程 合同视图 5.1 获取过程
启动 招标准备 合同准备和 修订 监督供方 验收和完成
测试阶段-四个阶段
• 清晰直观 • 阶段划分
– 单元测试 – 集成测试 – 系统测试 – 验收测试
• 同开发的对应关系
测试阶段-甄别
• 开发和测试并不是线性关系。 • 测试工作不是开始于代码完成之后。 • 测试具有阶段性,但各阶段之间没有鸿沟。 尤其是单元测试和集成测试。
规划测试过程
• 分析项目总体需求(概览) • 分析项目特点(如类型、规模、人员、客 户、风险、进度、成本等等) • 确定自己的软件过程 • 确定自己的开发方法和模型 • 规划测试阶段 • 构建测试过程
(一)团队建设
• • • • 测试部门的组织形式 测试组的人员组成 测试组的规模 测试人员的培训
组织形式-测试人员的位置
• 一个好的组织结构,可以更好的发挥人员的 能动性,使工作更有效率,也使工作的质量 更高。 • 在一个单位内测试人员处于什么位置?属于 那个部门?
–质量管理? –开发组? –测试组?
制订测试计划-步骤(二)
• 评估风险:测试工作需要平衡资源约束和 风险,以确定测试的优先级。从三个方面 分析:
– 影响:失效后将造成的影响或后果 – 原因:失效所导致的非预期结果 – 可能性:用例失效的可能性
• 根据风险分析情况,确定测试执行的优先 级。通常分为高、中、低三种。进而安排 测试的先后顺序。
7.生存周期组织过程 管理视图 7.1 管理过程
启动和范围定义 执行和控制 评审和评价 规划 结束
7.2 基础设施过程 7.3 改进过程
过程建立
7.4 培训过程
过程评估
过程改进
各项活动的位置顺序并不意味时间顺序。 开发过程中的活动名称并不是开发阶段的名称。
软件过程-常见软件过程与模型(二)
• 敏捷方法中的测试:在极限编程中提出测试驱动 开发。提倡在开发前,先考虑测试,先完成测试 用来和代码。 • 统一过程中的测试:测试是其核心工作流程之一 • GB/T 8566-2001标准中的测试(如下图):
(二)测试过程规划
• • • • 软件过程 测试过程 测试的阶段 规划测试过程
软件过程-定义
• 目的:测试过程是软件过程的组成部分,明确自 己的软件过程,才能明确自己的测试过程。 • 软件生存周期指软件从出现一个构思之日起,直 到最后决定停止使 用之时止。包括可行性与计划 研究、需求分析、设计 、实现 、测试、运行与维 护等阶段。 • 软件过程是指开发和维护软件及相关产品(如项 目计划、文档、代码、手册等)的一套行为、方 法、实践及变换过程。软件过程是软件生存周期 的框架。
测试过程-活动
• • • • • • 计划 设计 准备 执行 评估 缺陷跟踪
测试过程-与开发过程的关系
• • • • 都是软件过程的有机组成部分。 与开发过程同步进行。 与开发过程相互依赖,又相互独立。‘ 开发过程、测试过程、项目管理过程以及 其他支撑过程相互交织共同组成了软件过 程。
测试阶段-V模型
单个客户端开发并与系统集成 50人
政府部门应用开发(内部) 公司应用开发(内部)
50人 50人
11%14%
5 7
测试组规模-确定方法(三)
• 测试程序法:根据测试程序数量,以及每个程序可 能的执行时间,计算出人小时,再根据完成周期计 算测试组规模。
测试过 程数目
历史记录 860 新项目评估 1120
人员组成-测试组组成
• 测试经理:负责测试流程、沟通、测试工 具的引入、人员管理、测试计划/设计/开发 及执行。 • 测试组长:沟通、测试工具引入、人员管 理、费用/过程状态报告、测试计划/设计/开 发及执行。 • 测试工程师:执行测试计划,进行设计/开 发及执行。
测试组规模-影响因素
• • • • • • • 企业文化或测试成熟度 测试需求范围 工程师技能水平 测试工具及应用水平 业务知识 组织形式 测试工作介入时间
– 没有单独的测试过程。 – 测试开始于编码。 – 不足以指导测试工作。
测试过程-测试生命周期
开发生命周期
需求定义 应用定义 应用开发 维护
建立
建立 ...
修订
测试生命周期
测试计划
测试设计
测试开发
执行. 执行 ... 评估
执行.
缺陷跟踪
测试过程-几个亮点
• 测试工作开始于需求分析之后。 • 测试经过评估后,达到了结束的标准后才 能结束。 • 测试也是迭代过程。 • 测试需求来自于软件需求。