1、如何提升软件产品质量产品技术部 杨学明 2008年6月26日,决定一个软件项目成败的关键三要素,不同角色,传统的瀑布模型,收集需求,传统的V 模型,收集需求,传统的增量开发 迭代模型,收集需求,敏捷软件开发(Agile Development),20世纪90年代逐渐引起广泛关注的新型软件开发方法 它们的具体名称、理念、过程、术语都不尽相同,但是都强调 程序设计师团队与业务专家之间的紧密协作 面对面的沟通(认为比书面的文档更有效) 频繁交付新的软件版本 紧凑而自我组织型的团队 能够很好地适应需求变化的代码编写和团队组织,敏捷软件开发宣言,敏捷开发模式的最佳表述:人和交互 重于 过程和工具。 可以
2、工作的软件 重于 求全责备的文档。 客户协作 重于 合同谈判。 随时应对变化 重于 循规蹈矩。 注:其中位于右边的内容虽然也有其价值,但是左边的内容最为重要。,敏捷软件开发新挑战,越来越多的企业希望采用,但没有把握 习惯于传统的瀑布式产品开发流程已不满足快速发展需要,但大规模改动不现实 缺少敏捷软件开发专家和人才 技术人员需要观念的转变和方法培训 缺乏相应的质量控制方法 需要经常的和及时的质量度量、测试、决策,传统的QA方法程序怎样适应敏捷软件开发?,问题的提出,需求分析 与用户存在语义分歧 对问题域缺乏全面的认识 多变的需求导致效率低下,开发设计 无法预知和降低风险 没有清晰的架构思路 与实
3、现难以平滑衔接,功能实现 周期过长 与分析设计脱节 版本之间管理混乱,软件测试 测试成本过高 无法做到回归测试 维护成本过高,产品 质量不可靠 BUG太多 重用性低 可维护性差 兼容性差 文档混乱,因软件质量而导致的重大事故,1961年,一个简单的软件错误导致美国大力神洲际导弹助推器的毁灭 2007年月,某软件缺陷导致某地铁系统的火灾 2007年月,成千上万台某种型号的医疗设备被召回,只是为了修正一个软件错误 2007年某天,深圳某银行软件出错,柜员机吐出倍的金额给客户,客户排队取款。,妈妈网站质量的挑战,每天线上都有问题产生 经常有用户投诉,交易出现异常 代码可维护性差 缺乏统一架构设计,对
4、将来的扩展是一个很大挑战 缺乏业务文档,很多业务流程只有少数人知道 流程刚刚建立,存在质量控制方面的漏洞 需求、开发和测试缺乏共识,需要培训 传统的QA方法程序怎样适应敏捷软件开发?,We care you!,Question: 谁应对产品质量负责?,QA人员 测试人员 开发人员 项目管理人员 需求人员 All above,什么是软件质量,用户对软件质量的评价 没有功能(功能) 运行速度太慢(性能) 有太多的错误(故障) 软件不好改动(维护) 界面不美观(人机界面) 这个软件不好使用(易用性) ,从哪些方面关注软件质量(1/3),文档,程序代码,软件产品,需求分析,软件设计,编码,标准和规范,
5、开发活动,测试,从哪些方面关注软件质量(2/3),软件产品 软件需求基线文档 软件设计文档 源程序代码,. 开发活动 需求分析 软件设计 编码 标准和规范,从哪些方面关注软件质量(3/3),组织内部或者在项目开始之时要制定软件开发的标准和规范 软件产品 文档类:审核,产生评审报告(Review) 代码类:测试,产生测试报告(Test Report) 开发活动 审查,产生审查报告 (Review),构架是软件的蓝图,谁来执行和实施软件质量保证,软件项目质量保证小组(SQA小组) 独立于项目开发小组 具有比较大的权限,如何保证软件质量,项目一开始测试人员应该进入 正确理解用户的要求 制定标准和规范
6、,Team统一执行 审查软件开发活动 测试源程序代码 记录开发活动和软件产品的偏差 记录所有不符合项,报告高级管理者,正确理解用户的要求,理解客户的要求和需要 让客户参与开发,随时和客户交流,验证客户的需求 形成文字 软件原型 用不同的形式表达需求,成本,产品化,测试,设计,需求,在产品化阶段, 修复软件错误的成本 将高出100到1000倍!,修复软件的代价 高成本 失去机会的代价 低营业额 失去客户的代价 低营业额,需求质量是软件质量的基础,制定标准和规范,在组织内部或者项目组内部制定标准和规范,限制和约束软件开发活动,有助于得到规范化的软件产品,从而提高软件质量 软件开发过程规范 需求管理
7、 变更管理 Java编码规范, 测试用例编写规范,审查软件开发活动,审查每个活动是否遵循软件开发过程规范 审查每个活动的输入条件是否都得到满足 审查活动的执行是否遵循规范 审查每个活动的输出是否都已经产生,测试源程序代码,制定测试计划对软件进行测试 单元测试 集成测试 确认测试 系统测试,记录开发活动和软件产品的偏差,形成报告 记录软件开发活动的偏差 记录软件产品的偏差软件测试报告 目的 发现问题,纠正偏差,提高质量,报告高级管理者,目的 为管理者管理了解软件的质量提供可视性,Web测试工具,Win Runner Mercury Interactive Company 功能测试工具 Quick
8、 Test Professional (QTP) Mercury Interactive Company 功能测试工具 Rational Robot IBM Rational 功能测试工具 Xrunner Mercury Interactive Company 功能测试工具 QARun Compuware Company 功能测试工具 E-Tester Empirix Company 功能测试工具 Silk Test Segue Software Inc.,Web测试工具,Load Runner Mercury Interactive Company 性能测试工具 Web Load RadVi
9、ew Company 性能压力测试工具 WAPT Web Application Load, Stress and Performance Testing Soft Logical Company 性能压力测试工具 Load Driver InforSolution Company 性能压力测试工具 (Not via web browsers),测试管理工具,Test Director Mercury Interactive公司 可以实现对测试用例/项目/计划/结果/报告的有效管理, 同时还是一个很好的自动化测试管理执行系统 Test Manager IBM Rational公司 可以实现队测
10、试计划/项目/用例/结果/报告的管理系统 QA Director Compuware公司 分布式应用的高级测试管理系统 BugFree 自主研发,Java Visual Basic, VB.Net C# C, C+ Perl, PHP, Python,App. Servers,Weblogic JBoss IBM Websphere,RDBMS,Oracle MS SQL Server MySQL DB2 Sybase,Graphic User Interface,Java Script ASP, ASP.Net and JSP XML, XSLT HTML,Operating Systems
11、,Windows XP Linux UNIX,Management,PMP,Development Technologies,Web Services OLAP Data Mining Business Intelligence,Languages,Technologies,J2EE .NET,Processes,CMMI Rational Unified Process (RUP) Extreme Programming (XP),开发工具和管理工具,通用汽车的质量观: “质量创造客户的满意、热情、忠诚。(Quality create customer enthusiasm.)” 张瑞敏 海
12、尔集团,“质量是产品的生命,信誉是企业的灵魂,产品合格不是标准,用户满意 才是目的。”,华正非 华为CEO,“质量就是自尊心!”,“如果没有质量,一切都是负数!”,蒙牛乳业 牛根生,听,用口去听,用耳朵听;用眼睛看用心聆听,聽,Be a good Listener,How to say NO to the customer?,戴明,(PDCA),朱兰,全过程管理 朱兰三步曲 质量计划 质量控制 质量改时 排列图,克劳斯比,零缺陷管理,“第一次把事情做对!”,“质量是免费的,但它不 是礼物。”,杰克 韦尔奇,六西格玛管理,以顾客为导向, 以业界最佳为目标, 以数据为基础, 以事实为依据, 以财务评价为结果, 持续改进企业经营管理的 思想方法、实践活动和文化理念。,打造高质量软件:人人把关,人人负责 !,测试,需求,开发,管理,QA,