一.团队组织
1.常见问题
- 没有人愿意做测试
- 觉得养不起那么多测试人员
- 开发人员不遵循规范,随心所欲
- 项目经理事必躬亲,分身乏术
2.微软团队模型
各角色的职责
角色 |
职责 |
项目经理 |
编写功能规范,协调各角色关系 |
产品经理 |
客户联系的桥梁,进行需求分析 |
用户教育 |
让产品容易使用 |
发布经理 |
保证产品顺利发布 |
二.项目管理
1.常见问题
- 无法决定项目所需的资源(人力和预算)
- 无法决定项目的进度表
- 无法控制外包项目的进度和质量
2.微软项目管理-- 多里程碑式流程
- 每个里程碑完成部分功能
- 便于团队集中力量完成一个又一个功能
- 提供多个机会以适应需求的更改
如何完成一个里程碑
- 基本完成需求调研和分析 (产品经理负责)
- 确定大方向和长中短期目标
- 所有角色都参与讨论并真正认同结论
- 产生的文档:
- 常见用户情景:覆盖80%以上功能
- Vision:言简意赅地说明大方向,并有激励团队的作用
- 步骤二: 完成项目计划
- 编写详细的功能规范(项目经理负责)
- 在编程前想清楚所有功能流程,并引导用户明确需求
- 所有角色都参与审阅功能规范
- 制订开发计划和进度表(开发团队)
- 制订测试计划和进度表(测试团队)
- 分配资源(人力和预算)
- 形成项目综合计划和综合进度表
- 产生的文档:
功能规范,开发计划,测试计划(用例),项目综合计划 开发进度表,测试进度表,综合进度表
- 开发人员分别完成自己的功能
- 使用版本控制工具
- 使程序员及时check out和check in,避免积累大量代码
- 及时进行模块间的整合,及时发现问题(daily build)
- 对每一项可测试的功能进行测试,无需等待
- 使用测试用例工具,对功能进行完整和重复的检验
- 使用BMS进行缺陷跟踪
- 记录所有程序问题
- 实现解决Bug的自动流程
- 按照综合进度表不断检查进度
- 使用的工具:
- 版本控制工具 VSS
- 缺陷跟踪工具 Raid/BMS
- 测试用例管理工具
- 测试组全面地测试功能,包括性能和稳定性
- 开发组全力配合解决Bug
- 使用BMS进行
- 专家会诊机制:
- 决定Bug的优先度
- 决定哪些Bug可以等到下个里程碑或版本中解决
- 决定由谁解决某个Bug
- 使用的工具:
- 版本控制工具 VSS
- 缺陷跟踪工具 BMS
- 测试用例管理工具
三. 微软的开发管理经验:100%以Bug为核心
1.Bug 及常见类型
- 功能未实现,和规格说明书不一致
- 不能工作:死机,没反应
- 不兼容
- 边界条件
- 界面、消息、提示不够准确,不友好
- 把尚未完成的工作也作为一个Bug
- 文档与帮助信息中的缺陷也是Bug
2.RAID/BMS的基本功能
- 完整的Bug数据库
- 整个产品组的中央记录和控制
- 强大的查询功能,有效地跟踪项目的状态
- 所有的记录无法删除,对于每个记录只能一直添加内容
- 丰富的报表功能,为产品发布提供判断标准
3.Bug 记录中的有效信息
- 状态
- 负责人
- 问题种类
- 严重级
- 优先级
- 修改时间
- 登记时间
|
- 缺陷来源
- 解决方案
- 运行环境
- 缺陷关联
- 附件
- 附图
- 缺陷细节
|
4.Bug 的严重程度
- 死机,数据丢失,主要功能组完全丧失,系统悬挂
- 主要功能丧失,导致严重的问题,或致命的错误声明
- 次要功能丧失, 不太严重,如提示信息不太准确
- 微小的问题,对功能几乎没有影响,产品及属性仍可使用. 如有个错别字
5.激活的Bug数量的趋势
- 代码完成前:很少
- 代码完成后:增长很快
- 接近Beta: 下降
- 接近RC: 奔向零
- 产品质量和里程碑的信号
- 每天新建的Bug 与 修正的 Bug 相比较
- Active 状态 Bug 的总数
四.微软的一天
1. 让我们看看项目中每个角色的一天是如何度过的
注:里程碑的每个阶段每个角色的工作有不同侧重点,我们以“完成功能”阶段为例
微软的一天从几点开始?
答案:半夜
为什么?
因为Daily Build是所有工作的核心,而且是在半夜自动启动。
每日构造Daily Build
- 你知道自己所用Windows的版本号吗?
- Daily Build的意义:
- 模块得以及时整合
- 要求程序员及时把最新代码放入代码库
- 用脚本语言和编译/链接工具实现
- BVT Build Verification Test
- Blocking Bug
2.程序员每天上班前最担心什么?
答案:因为自己昨天的代码check-in,造成Blocking Bug.
为什么?
因为每天的Build是所有人当天工作的基础: 程序员需要Build验证与其他模块的接口 测试需要Build发现新Bug,并验证新Build中已解决的Bug
有Blocking Bug怎么办?
解决问题,并对今天的Build打Patch。
开发人员的正事
经历对Build的提心吊胆和争分夺秒之后,第一件事做什么 答案:打开缺陷跟踪工具,查看指定给自己的Bug,解决高优先度的Bug。因为质量重于新功能。
接下来,开发人员会…
从版本控制工具中Check out代码 修改代码(解决Bug或实现新功能) 取得版本工具中最新变化,在本机Build和单元测试 请开发组同事作Code Review Check in代码
3.测试人员第一件事做什么?
答案:打开Raid/BMS,查看指定给自己的Bug,验证已解决的Bug。
接下来,测试人员会…
- 根据测试用例检验今天的Build
- 在Raid/BMS中记录新发现的Bug
4.专家会诊
- 参加者:项目经理和开发组长、测试组长
- 通过Raid/BMS评估每个未解决的Bug
- 决定Bug优先度
- 可否等到下个里程碑或版本解决?
- 谁来解决
- 预测项目实际进度和发布时间
缺陷走势图
5.回顾微软的一天
- 构造: daily build
- 开发: 解决blocking bugs, 实现功能, check-out, code review, check-in
- 测试: BVT, 使用测试用例进行测试
- 项目经理/组长: 专家会诊
6.微软的做法解决了那些常见问题?
质量问题
- 以前解决过的问题发布时又出现了,需要返工
- 无法预估发布时间 过早发布,带来质量和维护问题
- 测试发现的问题被忘却或不了了之
- 无法衡量测试员和开发员的工作
- 程序中的问题往往在发布后才发现
文档管理问题
- 文档与程序脱节,文档成为程序结果的描述
- 项目组把写文档看成负担
团队协调问题
- 开发人员各自为战,进行整合时发现模块衔接中的严重问题 需要作大的改动
- 没有保管好公司以往的版本和代码,无法满足用户对旧版本的更改要求
- 开发人员离职对项目带来很大冲击,没有人知道代码在哪,或无法读懂
五.提高软件管理的步骤
1. 使用Raid/BMS,将流程管理自动化 2. 使用测试用例管理工具 3. 使用文档管理工具 4. 使用版本控制工具,进行Daily Build 5. 建立代码标准 6. 建立Code Review机制 7. 建立专家会诊机制 8. 建立团队沟通机制 9. 根据需要调整团队结构
|
相关推荐
微软Bug管理是保证产品质量的关键环节,它涉及到团队组织、项目管理和具体的开发管理实践。在团队组织方面,微软提出了一系列角色及其职责,以确保产品的高效开发和测试。项目经理负责编写功能规范,协调团队;产品...
逐浪CMS2 x3.9.6,依托微软平台,不断深化产品研发, 未来,我们将推出全新基于dotNET Core的逐浪CMS V8产品, 精彩已经上演,未来更加出彩! 让我们相信: 中国站长选逐浪, 中国开发者选逐浪, 建站用...
本论文旨在探讨如何利用ASP.NET技术构建一个实用、高效的酒店信息管理系统,以提升酒店的服务质量和管理水平。 ASP.NET是微软公司推出的一种Web应用程序框架,它提供了丰富的功能和强大的性能,支持多种编程语言,...
对宿舍管理系统进行单元测试、集成测试和系统测试,检查功能是否正常,性能是否满足要求,是否存在bug。测试结果将指导我们进行必要的修改和完善,直至系统稳定运行。 总结,VB语言和SQL Server的结合为宿舍管理...
- **重要性**:测试确保了软件产品的质量。 - **核心知识点**: - 单元测试的原则与方法。 - 集成测试与系统测试的区别。 - 自动化测试工具的选择与使用。 - 实际应用场景:持续集成环境下的测试策略等。 #####...
微软的SDL(Security Development Lifecycle)模型就是一个典型的安全开发生命周期管理框架,旨在从软件开发的各个阶段融入安全原则,以降低安全风险,提高产品的整体安全性。 SDL的核心理念是在开发的每个阶段都...
总的来说,每日构建是现代软件开发过程中的一个基石,它促进了代码质量的提升,减少了调试时间,使得开发团队能够更快地响应变化,更有效地交付软件产品。在.NET环境下,通过使用Nant、Nunit、FxCop和CruiseControl...
在微软看来,清洁代码是开发高质量软件的基础,它能够减少bug的产生,提高开发效率,同时也便于团队协作和未来的维护。 **2. 断言的合理使用** 断言是一种用于确保程序在运行过程中状态正确的编程技巧。通过在代码...
Team Foundation Server(TFS)是微软提供的一款强大的版本控制系统,集成了项目管理、代码版本控制、测试管理、工作项跟踪和持续集成等多种功能,为企业级软件开发提供了全面的协作平台。在本文中,我们将深入探讨...
11. 维护与更新:系统应预留接口,方便后期添加新功能、修复bug或进行性能优化。 这个项目不仅涵盖了ASP编程基础,还涉及到数据库设计、用户体验、安全性等多个方面,对于学习和实践Web开发的初学者来说,是一个很...
- **错误修复**:修复了一些已知的bug,提高了整体的软件质量。 四、开发实践与应用 使用MRTK 2.7.2进行Hololens开发时,开发者可以按照以下步骤进行: 1. 导入对应的unitypackage到Unity项目中。 2. 配置MRTK的...
1. **经典ASP(Active Server Pages)**:标签中提到的“ClassicASP”是微软在Web开发中早期使用的一种脚本语言,主要用于构建动态网页。在这个项目中,ClassicASP可能被用来处理用户交互、数据库连接、游戏逻辑等...
在计算机科学领域,算法与数据结构是至关重要的基础知识,它们构成了软件工程的基石。本项目是作者在学习过程中进行的一次课程设计实践,旨在通过实际操作来深入理解和掌握这两方面的核心概念。 【描述】:“自己的...
MSVCR71D.DLL,全称Microsoft Visual C++ Runtime Library Version 7.1 Debug,是微软Visual Studio 2003开发环境下的调试版本运行库。它包含了C++运行时库的一些关键组件,比如内存分配、异常处理、输入输出操作等...
7. **错误处理和调试**:程序中的bug可能包括逻辑错误、资源管理问题、数据溢出等。对于这些问题,MFC提供了一些辅助类,如CErrorRecord和TRACE宏,帮助调试和记录错误信息。此外,使用Visual Studio的调试工具也是...
通过TDD,开发者可以在编码阶段发现并修复潜在的bug,确保代码的质量与稳定性。 #### TDD与极限编程(Extreme Programming) TDD是极限编程实践之一,它与极限编程中的其他原则如持续集成、重构、简单设计等共同...
在编程世界中,Visual C++是一款强大的开发工具,由微软公司推出,主要用于Windows平台上的应用程序开发,特别是桌面应用和游戏。这款IDE集成了编译器、调试器和丰富的库支持,使得C++开发者能够高效地编写和调试...
读者将了解到如何使用Windows API来创建窗口、处理消息以及绘制图形元素,这些都是构建任何Windows应用的基石。 其次,书中会详细阐述C++与Windows编程的结合,如MFC(Microsoft Foundation Classes)库的使用。MFC...
游戏源代码是游戏开发的基石,它揭示了游戏背后的运行机制。对于开发者而言,源代码的价值在于可学习性和可扩展性。通过阅读源代码,可以深入理解游戏的设计理念,学习如何利用C++来实现复杂的算法和数据结构。对于...