微软的一天
1.每日构造Daily BuildDaily Build是所有工作的核心,而且是在半夜自动启动。
Daily Build的意义: 模块得以及时整合; 要求程序员及时把最新代码放入代码库 用脚本语言和编译/链接工具实现 BVT Build Verification Test :对Build进行验证 [*]Blocking Bug :让Build无法完成的问题; BVT中发现的问题 2.程序员每天上班前最担心什么?
答案:因为自己昨天的代码check-in,造成Blocking Bug.每天的Build是所有人当天工作的基础,程序员需要Build验证与其他模块的接口;测试需要Build发现新Bug,并验证新Build中已解决的Bug。
有Blocking Bug怎么办? 解决问题,并对今天的Build打Patch。
答案:打开缺陷跟踪工具,查看指定给自己的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.微软的做法解决了那些常见问题?
质量问题
以前解决过的问题发布时又出现了,需要返工 ;无法预估发布时间 过早发布,带来质量和维护问题
测试发现的问题被忘却或不了了之;无法衡量测试员和开发员的工作;程序中的问题往往在发布后才发现
文档管理问题
文档与程序脱节,文档成为程序结果的描述; 项目组把写文档看成负担
团队协调问题
开发人员各自为战,进行整合时发现模块衔接中的严重问题 需要作大的改动
没有保管好公司以往的版本和代码,无法满足用户对旧版本的更改要求; 开发人员离职对项目带来很大冲击,没有人知道代码在哪,或无法读懂
微软团队模型
项目经理,开发,测试人员比例为5%,31%,64%。产品团队中,权威仅仅来自于知识,而不是来自于职位。
People are most productive working in small teams with tight budgets, time deadlines, and the freedom to solve their own problems. – Bill Gates
通过有效的风险管理,使不确定因素达到最小
使用小团队并行工作,达到最多的同步点
定期编译与快速测试,使产品的稳定性和可用性达到最佳
各角色的职责
1)Product Management Team 让客户满意Target:确定产品远景,获取并确定用户需求,开发并维护商业安全,满足用户需求。
Role: 部门负责人为 Product General Manager,下设Product Unit Manger,Product Planning,Market and Research,Evangelism与Public Relation的部门负责人;evangelism:说服别人,产品推销,原意为“战斗似的热情”
Task:进行Group Program Management,清楚地知道用户的需求,并给出详细定义,即用专业术语描述;确保新产品带来利润;控制用户的期望值;设计大概的产品特性和进度表;管理市场,推销及公共关系。
2) Program Management 在项目约束条件下交付
Target:制定开发功能规范,在团队内沟通与协商,维持产品进度并报告产品状态,保证在产品约束条件下按时发布产品。
Role :project coordination, product architecture, release management
Task:管理产品细节,如feature的详细设计;促进团队沟通与交流,如plan following up;控制全局,保证项目按时完成,生产过程中的trade off。
3) Software Development Management 按产品规格交付
Target:开发出满足设计规范和用户要求的产品。
Team Role :软件架构师(Software Architect) 与 软件开发工程师(Software Development Engineer )
Task:进行Software Development Management,包括database,system service,user interface。
4)Software Testing 解决所有问题后发布
Target:开发测试策略和计划,保证解决了所有已知问题后,再发布产品。
Team Role :测试工具软件开发工程师(Software Development Engineer in Test , SDE/T)与 软件测试工程师(STE) 。
Task:进行test management,compliance testing,configuration testing,integration testing,stress testing 测试工具的编写 - 开始于,Test Case 确定之后,并根据Test Case来设计。
通过使用来发现bug不是真正的测试,只能发现一般用户问题,属于最基本测试范畴;
测试要考虑所有出错的可能性,错误的承受力,运行的性能问题,软件的兼容性;
一流的测试人员,不仅要找出bug,还要定位引起bug 的代码行;对设计缺陷,测试人员应提出一个更合理的设计,并确保此设计易于开发人员实现。 Active Bug 指 当前必须修改的defect。
5)User Enducation Team 提高用户胜任力
文档编写,用户培训;保证使用文档要全部清除地写出来,提高用户使用产品的技能,保证大多数用户能够充分利用产品的功能。
6) Logistic management 平滑产品部署
产品实施与维护。
3. 开发过程特点
1) 文档齐备:每人清楚了解自己需要做的工作;功能规范由一个3-5人的小组负责完成。
2) 相互阅读代码:实现目标为同一个feature,代码间可能相互依赖,有助于整体提高效率;避免核心代码由一人完全控制。
3) 代码注释:包含详尽的调试信息,便于理解与问题解决。 不错啊,有收获,继续努力 sdlkfj5 sdlkfj5 。。。。sdlkfj2 我们也想搞每日构建,不过一直没有摸清楚怎么搞自动集成测试,头大呀
学习一下
学习一下学习一下学习一下长见识了
呵呵。长见识了 长见识长见识 顶了 厉害,学习
页:
[1]