参加对象
企业总工、技术总监、系统架构师、研发经理、测试经理、质量/品质经理、研发测试骨干,以及研发测试技术人员。
课程背景
如何保证软件项目/产品的质量一直是困扰软件企业、监理方和甲方的一个重要问题,如何预防、发现、治理软件项目/产品质量问题,是目前我国IT发展面临巨大的挑战,这也是IT发展过程中关注的主要问题。质量保证人员,如何控制软件生产环节相关质量?项目管理者如何协调进度和质量的矛盾?如何评估软件文档来减少未来质量问题?如何从缺陷与问题管理中预防质量问题?如何集成各种管理工具完成软件质量控制与度量?...这些关于软件和IT产品质量的疑问,成为困扰软件企业、监理方和甲方的重要问题。
本课程全面讲述软件质量管理与度量的工作内容、工作方法和使用工具,同时与您分享国内外知名企业在软件质量管理、质量改进及度量等方面的宝贵经验。
培训收益
速度和质量越来越成为软件开发制胜的关键,然而管理人员和开发人员长期为以下问题所困扰,**本课程的学习,将发现问题产生的根源以及行之有效的解决措施。
l 项目延期**本质的原因是什么?
项目进度紧张,开发人员常常没日没夜地加班,然而项目进度总是一延再延期。
l 如何有限的工期交付高质量的产品?
客户对软件产品质量要求高,而开发工期却很短,很多项目在面临这种情况,往往采用“先做完再说”的策略,其代价是客户对质量的抱怨和大量的研发人力陷于救火之中。那么正确的策略又是什么呢?
l 如何做好需求分析并写出高质量的需求文档?
软件需求规格的质量极大程度上影响了**终软件产品的质量和项目开发效率,然而国内的工程师很少掌握需求分析方法,更不会写需求文档。
l 设计文档该写什么?怎样写?
开发人员通常也不知设计文档该写什么,分不清哪些内容属于需求哪些内容属于设计,设计文档细化到什么程度?良好的设计文档提升开发效率,劣质的设计文档浪费开发时间。
l 如何有效开展评审?
评审是提升文档和代码质量的有效手段,然而为何评审效果总是不佳呢?没人愿意参加评审,评审发现的往往是文字错误这样肤浅的问题,评审活动流于形式。
l 如何有效测试?
某些项目要求做单元测试,结果花费不少精力,可是没有发现多少问题。问题出在哪里?单元测试到底值不值得做?测试工作给测试人员带来的挑战是如何在有限的时间内尽可能多的发现软件缺陷,如何面对这样的挑战?
l 如何解决QA和项目经理的冲突问题?
QA总是抱怨项目经理不走流程,项目经理总是抱怨QA不为项目做实事,反倒常常“骚扰”。有没有方法扭转这样的局面?
培训课时
12小时
课程大纲
1. 案例分析
某软件企业产品问题存在大量变更,导致产品迟迟不能发布,发布后遗留缺陷很多,导致客户满意度下降。
2. 软件质量管理的概述
本单元学习目标:掌握质量管理的一些重要的理念和主要概念,认识到**有效的质量管理才能获得开发的高效率
2.1. 质量管理发展里程
2.1.1. 研讨:质量与效率关系
2.1.2. 介绍质量管理发展历程
2.1.3. 案例分析:质量管理对日本工业和印度软件业发展所起到的推动作用
实例来说明质量管理给企业带来的是高效率,而不是效率的阻碍
2.2. 从质量成本要效率、要质量
2.2.1. 质量成本的定义COQ
2.2.2. 质量成本分类:预防成本、评估成本和失效成本
2.2.3. 加强预防成本的投入,可从过程重用和技术重用两方面提升效率和质量,变失效成本为利润
2.2.4. 从救火文化到预防文化的转变
2.2.5. “一次把事情做对”的对提升开发效率的重要作用
2.2.6. 十乘十乘十法则介绍,说明缺陷预防和把缺陷消灭在前期才能使项目获得高效率
2.2.7. 从软件开发的缺陷分布来说明需求分析的质量如何影响整体开发效率的
2.2.8. 案例分析:A公司有一个紧急项目,应该怎样做?
面对紧急项目,多数管理者都会自乱阵脚,需求还没有讨论清楚,开发人员匆匆编码,结果是返工、不断地大量返工,项目进度被大大拖延了。
3. 质量控制和质量保证
本单元学习目标:了解过程的重要性,剖析流程不被执行的原因,如何**QA保证流程有效在项目中实施
3.1. 质量控制和质量保证
3.1.1. 区分质量保证和质量控制
——质量控制关注产品,被动的,去发现缺陷
——质量保证关注过程,主动的,去预防缺陷
3.1.2. 从质量铁三角看过程的重要性,仅仅是牛人和工具是无法保证项目成功的
3.1.3. 流程本质是什么
——流程是**实践的固化,不应是降低效率的官僚体系
——关注过程的项目和不关注过程的项目效率对比
3.2. 产品质量和过程质量
3.2.1. 软件产品质量的定义
——开发者的质量观:满足规格
——客户的质量观:适用
3.2.2. McCall软件质量模型,从三个方面对软件质量进行系统全面地分类说明
——产品运行方面:正确性、可靠性、可使用性、效率、完整性
——产品修正方面:可维护性、测试性、灵活性
——产品转移方面:互联性、可移植性、复用性
3.2.3. 什么是过程质量,从三个方面说明
——组织级流程定义质量
研讨:从“不拉马的士兵”看到什么?
剖析为何许多项目不愿意走流程,或者走了流程效率反而会下降。
CMMI模型和敏捷方法的介绍与对比。
——项目级流程裁剪质量
——过程执行的质量
3.2.4. 过程质量定义以及过程质量和产品质量的关系
——好的过程体现了产品质量要求
——过程质量决定了产品质量
3.2.5. 演练:如何在项目计划中体现质量要素
4. 有针对性的质量策划
本单元学习目标:根据不同软件项目的特点,确定不同的软件质量目标,并设置相应的质量控制点
4.1. 产品开发流程介绍
4.1.1. 研发质量策划的内涵
4.1.2. 什么时候开始进行研发质量策划活动?
4.1.3. 在产品研发过程中的质量策划活动点有哪些?;
ü 概念阶段:做那些质量策划活动、如何做;
ü 计划阶段:做那些质量策划活动、如何做
4.2. 谁是研发质量策划的责任主体
4.3. 研发质量策划的包括哪些内容
4.3.1. 研发质量策划样例讲解
4.3.2. 研发质量目标如何确定
ü Benchmark
ü QPM
4.3.3. 在质量策划时,如何进行QCT平衡
ü 案例讲解
4.3.4. 研讨:各小组选择一个项目,制定研发质量计划
4.4. 贵公司质量管理活动在何时介入?都包括哪些内容?
5. 高质量的软件工程化方法
本单元学习目标:掌握需求分析方法和需求文档的写作方法,从源头上把控好项目的质量,减少返工,提高效率;掌握设计中质量管理的技巧;剖析软件设计常犯的错误,如何避免这些错误,写出高质量的设计文档
5.1. 需求的重要性
5.1.1. 需求对项目的进度和质量影响
5.1.2. 需求对测试活动和其它相关组的影响
5.2. 需求开发典型问题
5.3. 案例分析:请分析某项目的需求文档有什么问题,如何改进
**案例,说明什么是好的需求文档,进一步体会需求问题为项目带来的后果。
5.4. 造成需求开发典型问题的原因
5.5. 软件需求过程介绍,需求开发介绍,包括需求挖掘、分析、文档化、评审确认等
5.6. 软件需求挖掘和分析过程
5.6.1. 需求层次:needs,feature和requirement
5.6.2. 需求来源和获取方法,如客户访谈、竞争对手产品分析等
5.6.3. 需求分析方法和工具,如用例图
5.7. 高质量需求文档的标准
5.7.1. 好的需求文档特点
5.7.2. 需求文档中避免出现的一些词汇
5.7.3. 演练:写出一功能需求的输出部分
5.8. 总结:如何制定出高质量的需求文档
5.9. 设计过程
5.10. 设计基本原理和基本概念
5.11. 模块分解
5.11.1. 从开发总成本看模块分解
5.11.2. 模块数据的合适数量
5.11.3. 模块分解的基本原则
5.12. 概要设计要点
5.13. 详细设计要点
5.14. 问题1:需求和设计界限不清
5.15. 问题2:设计的层次和详细程度问题
5.16. 问题3:设计文档的内容冗余问题
5.17. 设计要考虑的其它因素
6. 有效评审
本单元学习目标:技术评审是质量控制非常高效的手段,**本单元学习掌握技术评审有效过程和方法
6.1. 评审的意义
6.2. 案例分析:剖析某项目的技术评审
6.3. 评审的过程
6.3.1. 计划评审活动,正确地选择评审专家
6.3.2. 介绍会议,为有效评审做好准备
6.3.3. 预评审是发现问题的关键阶段
6.3.4. 评审会议的目的确认问题而不是做技术交流
6.3.5. 评审问题解决跟踪确保问题全部得到正确解决
6.3.6. 评审结果分析
6.4. 评审检查单的制定
6.5. 提升技术评审的有效手段
6.5.1. 作者不愿意别人提出问题,评审人员为了顾及面子不愿意提出问题怎么办?
6.5.2. 评审人员把评审当成额外的工作,不愿意参加评审怎么?
6.5.3. 评审人员的技能不足怎么办?
——交叉工作模式介绍
——简介敏捷开发的结对编程方法
6.5.4. 评审人员只与评审对象部分内容部分相关,对他的评审又什么要求?
6.5.5. 评审对象充满了低级错误,或者有些技术问题作者还没有考虑清楚,如何面对这种情况?
6.5.6. 如何使评审检查表效能**大化?什么时机使用?
7. 高效测试
本单元学习目标:软件测试工作在许多企业中都比较薄弱,存在众多问题,**本单元学习掌握克服这些问题方法,有效开展测试活动
7.1. 研讨:阻碍项目进行有效测试有哪些因素?
7.2. 测试概述
7.2.1. 测试的常见误区
7.2.2. 测试的心理学问题:测试的目的为了发现问题,不是为了证明程序是对的
7.2.3. 测试的经济学问题:如何在有限的时间尽可能发现更多的缺陷
7.3. 测试分类
7.3.1. 静态测试 vs 动态测试
7.3.2. 黑盒测试 vs 白盒测试
7.3.3. 手工测试 vs 自动化测试
7.3.4. 按阶段分类:UT/IT/ST/Alpha测试/AT/Beta测试
7.4. 测试过程
7.4.1. 测试过程介绍,包括制定测试策划和计划、设计测试用例和测试环境准备、测试执行、测试分析
7.4.2. 测试活动在开发活动中的位置
7.4.3. 如何制定测试策略
7.4.4. 演练:分别为两个项目制定测试策略
7.5. 测试用例设计方法
7.5.1. 什么是测试用例,用例的输入和输出通常有哪些
7.5.2. 什么是黑盒方法
7.5.3. 介绍等价类划分方法
7.5.4. 演练:用等价类划分方法设计测试用例
7.5.5. 介绍边界值分析方法
7.5.6. 演练:用边界值分析方法设计测试用例
7.5.7. 介绍判定表方法
7.5.8. 介绍因果图方法
7.5.9. 介绍正交阵列方法
7.5.10. 什么是白盒方法
7.5.11. 介绍各逻辑覆盖,如语句覆盖、分支覆盖、条件覆盖、路径覆盖等
7.6. 单元测试和集成测试
7.6.1. 什么是单元测试
7.6.2. 单元测试的投入产出比高吗?剖析是否值得做单元测试
7.6.3. 演练:如何针对给定的函数进行单元测试
7.6.4. 单元测试基本概念(桩、驱动)介绍
7.6.5. 高效单元测试过程
——用例如何写
——怎样打桩
——怎样利用单元测试工具
——有效单元有哪些原则和注意事项
7.6.6. 集成测试介绍
7.7. 系统测试
7.7.1. 功能测试介绍
7.7.2. 性能测试介绍
7.7.3. 安全性测试介绍
7.7.4. 兼容性测试介绍
7.7.5. 界面测试介绍
7.8. 测试自动化
7.8.1. 为何要自动化测试,自动化测试能带来哪些价值
7.8.2. 三种不同级别的自动化
——静态脚本录制
——哑猴测试,随机的自动化测试
——智能测试自动化,**建模动态生成测试用例
7.8.3. 测试自动化工作建设的一些建议
7.9. 测试工具介绍
7.9.1. 白盒测试工具介绍,包括静态白盒工具和动态白盒工具
7.9.2. 黑盒测试工具介绍
7.9.3. 性能测试工具介绍
7.9.4. 测试管理工具介绍
8. 度量分析与缺陷预防
本单元学习目标:掌握软件缺陷管理过程和方法,**缺陷管理、质量的度量评估和和改进项目开发过程
8.1. 缺陷管理
8.1.1. 缺陷管理的三个层次
——单个缺陷的生命周期管理
——项目级缺陷管理
——组织级缺陷管理
8.1.2. 缺陷管理意义
——确保每个缺陷被有效解决
——从缺陷数据来看,如何改进开发和测试过程
——利用缺陷库有效地预防缺陷和解决缺陷
8.2. 缺陷度量和分析工具
8.2.1. ODC分类法介绍
——ODC背景介绍
——ODC分类简介
——举例说明如何用ODC缺陷分类分析改进开发和测试工作
8.2.2. 缺陷密度介绍
——缺陷密度的定义
——如何用缺陷密度评估质量控制效果和交付产品交的质量
——如何用缺陷密度改进开发过程
8.2.3. 缺陷剔除率介绍
——缺陷剔除率的定义
——如何用缺陷剔除率评估质量控制效果,并改善高质量控制方法
——如何用缺陷剔除率改进开发和测试过程
8.2.4. 缺陷分析工具:柏拉图、控制图
——使用柏拉图找重要问题
——使用控制图找异因,从过程着手做改进
8.2.5. 缺陷动态预测模型:Rayleigh曲线
8.2.6. 缺陷预防
8.2.7. 利用缺陷模型预测缺陷数量
9. 质量保证和质量控制人员的培养
9.0.1. 研讨:在项目中,QA的目标和项目经理的目标是否相同?
——剖析QA和项目经理常常发生冲突的根源
——国内QA普遍的角色错位
9.0.2. QA的律师角色
9.0.3. QA的教练角色
9.0.4. QA的医生角色
9.0.5. QA的警察角色
9.0.6. QA的牧师角色
9.1. 过程引导
9.1.1. 过程引导的必要性:仅有培训不足以让流程执行者具备执行流程的能力
9.1.2. QA进行过程引导的方法
9.1.3. 演练:针对项目的某些场景如何进行流程的引导
9.2. 审计工作
9.2.1. 过程审计的必要性:发现过程问题,及时纠正
9.2.2. 几种错误的审计方式介绍
9.2.3. 正确的审计方式和过程
9.2.4. 如何正确地写审计报告
9.3. 测试人员的培养
9.3.1. 测试人员技能规划
9.3.2. 测试人员职业发展规划
9.3.3. 测试过程资产库和测试用例库建设
10. 研讨与总结
10.1. 学员提出有针对性的问题,进行研讨
10.2. 学员对课程的收获进行总结
10.3. 讲师对课程做总结
一、
""