软件质量保证、测试与评价——陈泰宇从计算机诞生至今,计算机无疑成为当代发展最为迅猛的科学技术。今天,计算机已渗透到人们生活的各个方面。工业农业金融科教卫生国防百姓生活随着对计算机需求和依赖的与日俱增其软件开发成本以及由于软件故障而造成的经济损失也正在增加软件质量问题已成为人们共同关注的焦点。计算机系统的规模和复杂性急剧增加软件测试软件开发商为了占有市场,把软件质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局。用户为了保证自己业务的顺利完成,当然也希望选用优质的软件。一些关键应用,如民航订票系统、银行结算系统、证券交易系统、自动飞行控制软件、军事防御、核电站安全控制系统对软件质量提出了更高的要求。使用质量欠佳的软件,还可能造成灾难性的后果。2003年,软件问题造成美国东北部及加拿大停电,导致5000万人受影响,3人丧生,各种损失估计约为60亿美元2004年,北美银行由于一个新安装的软件的缺陷,使得数以百万计的客户受到影响,该缺陷的修复花费了整整两个星期的时间,造成的损失以亿元计2000年美国海军飞机坠落,导致4人丧生(控制软件问题)1997年韩国空难,导致225人丧生(雷达控制软件问题)2003年4月,美国一个专门为学生提供贷款的公司由于软件出错,错误计算80万宗学生贷款利率,导致了800万美元的利率损失千年虫问题Intel芯片浮点除法软件故障等。因此,许多科学家在展望21世纪计算机科学发展方向和策略时,把软件质量放在优先于提高软件功能和性能的地位。软件测试软件测试是对软件需求分析、设计规格说明和编码的最终复审是软件质量保证的关键步骤是为了发现故障而执行程序的过程。随着软件系统规模和复杂性的增加,软件测试职业的价值逐步得到了认可,进行专业化高效软件测试的要求越来越严格,软件测试从业人员急剧增加,软件测试评测中心如雨后春笋般成长起来。软件测试无疑是面向未来信息化社会的热门专业之一在未来3~5年内,软件测试技术将作为一门新兴产业而快速发展起来。2008年软件测试从业人员调查数据•软件测试从业人员所在公司的行业,主要分布在应用软件行业、软件外包行业、电信/互联网服务行业,其比例分别为33%、20%、13%。软件测试从业人员所在公司性质•多为私营或集体所有制企业,其比例为44%;其次是外资企业(含合资)和股份制企业,其比例分别为30%和16%。软件测试从业人员所在公司成立时间•成立时间主要集中在5-10年,其比例为31%;成立时间10年以上的公司所占比例27%;此外成立时间不超过5年的的公司所占比例为42%。软件测试从业人员所在公司的人员规模•主要为100-500人,其比例为31%;其次是规模达50-100人的,所占比例为19%;50人以下的所占比例为17%。软件测试从业人员所在公司专职测试人员的规模•主要在1-10人,其比例为45%,同比2007年下降4%;其次是人员规模50人以上的,比例为27%,同比增长2%;专职测试人员规模为10-50人的占整体的22%,同比下降1%;6%的公司没有专职测试人员,该比例同比2007年增长3%。软件测试从业人员所在公司中,测试人员与开发人员人数的比例测试工作在公司的重视程度•“测试工作在公司的重视程度”这一项目的调研数据显示,•比较重视和非常重视所占比例和为50%•一般重视占44%,•认为测试工作可有可无的比例为6%。•与以前调查数据相比,软件测试工作在公司的受重视程度略有下降,比较重视的比例下降4%,非常重视的比例下降1%。软件业:以35﹪的增速迅跑•长春软件从业人数年均增长31﹪。2006年7210人2009年16200人•长春软件服务业的营业收入年均增长35﹪2006年26亿元2009年65亿元品牌凸显产业壮大•“吉大正元”为代表的35户企业:信息安全软件领域;•“鸿达”为代表的16户企业:基于指纹、虹膜、人像、掌纹、手写签名等技术的身份认证系统;•“一汽启明”为代表的90户企业:企业资源计划管理软件领域;技术创新提升能力•“东师理想”:教育软件为主体的基础上,将教育资源与动漫软件技术相结合,推出系列动漫软件产品;•“启明公司”:概括抽象出适合国内大多数企业的管理模,企业ERP系统;•“金鹰集团”:煤矿检测救援系统一、为什么开这门课1、软件测试是软件行业的朝阳产业2、软件测试的费用要占到项目总经费的30﹪3、微软中开发人员与测试人员的比例为1:1.5Exchange2000Windows2000项目经理25250开发人员1401700测试人员3503200比例2.51.9一、为什么开这门课4、卖方市场——买方市场5、国内测试行业的3种形式•为欧美和日韩的知名软件公司提供测试外包和人力外包服务。有博彦科技(微软、惠普、NEC等),文思创新(微软、IBM等)。专业化的测试公司•为国内大型IT公司(华为、忆阳等)提供测试外包和人力外包服务。•国内软件公司下设软件测试部或质量保证部为公司自己服务。一、为什么开这门课6、软件测试工程师缺口20万。7、普遍重视不够,机会!三大误区•软件测试是软件开发完成之后才进行的。•软件测试无需具备很高的技能,是没有前途的工作。•软件发布后发现缺陷或bug,那是测试人员的责任。主要工作内容列举如下•检视代码、评审开发文档;•进行测试设计、写测试文档(测试计划、测试方案、测试用例等);•通过人工或自动化手段执行测试,发现软件缺陷,提交缺陷报告,并确认缺陷最终得到了修正;•通过测试度量软件的质量。二、测试人员的现状•基础知识不够扎实•专业技术不够精通•没有建立相对完整的测试体系概念,忽视理论知识三、几点迎接测试未来挑战的建议•积极的不满于现状•抛开人与人之间的隔阂•学习更多关于测试的知识•学习更多关于开发的东西四、机遇与挑战并存•机遇•挑战一般外企的测试人员的发展途径实习测试员测试员测试工程师测试设计工程师测试组长测试主管测试架构师高级测试设计工程师测试经理首席测试架构师道路是曲折的、前途是光明的•软件测试是为软件质量服务的•软件产品的竞争关于这门课•软件质量•软件测试软件质量通过前半段的学习,我们可以了解并掌握:•质量的内涵和软件质量特性•如何创建软件质量文化、实施全面质量管理的模式•如何建立有效的软件质量工程体系、基础设施•软件质量保证和管理团队的组织、培训和认证•如何正确运用各种质量控制方法和工具•软件缺陷预防性措施,做好各类软件评审,降低劣质成本•在整个软件生命周期的软件质量保证活动•软件服务模式的新的质量需求质量•与质量相关的概念•什么是质量•质量属性相关的概念•组织(Organization)是指“职责、权限和相互关系得到安排的一组人员及设施”。组织是由两个或两个以上的个人为了实现共同的目标组合而成的有机整体•过程(Procedure)是指“一组将输入转化为输出的相互关联或相互作用的活动”。过程由输入、实施活动和输出三个环节组成,过程一般伴随着时间先后次序的、不同的事件发生。•产品(Product)是指“过程的结果或过程的中间结果”。产品有四种通用的类别:硬件、软件、服务和流程性材料等。依产品的存在形式,又可将产品分为有形的和无形的。相关的概念-2•服务(Service)是向客户提供相应的技术支持、帮助和关心等的行为。服务也是一种无形的产品,是对有形产品的补充。•客户(Customer)不仅包括接受产品或服务的组织或个人,而且包括潜在的客户,所以更广义的含义,客户是公司为实现目标所需要的产品和过程而影响到的人。•体系(System)是指相互关联、或相互作用、或相互依存的一组要素构成的有机整体。体系一般拥有一定的组织形式,其相互作用受某些规则或规律所控制,其变化的过程有一定的秩序,趋于和谐的状态什么是质量?•“质量”是由“质”和“量”构成的,就是物质在质和量上的集合或程度•“量”代表数量,即物质的数量多少,是和物理学相关联的•“质”可以理解为事物的素质、本质或禀性•质量就是产品或工作的优劣程度,换句话说,质量就是衡量产品的或工作的好坏。那么,什么是好的产品?什么是劣的产品?质量的含义?质量是客户满意度的体现客户+质+量?质量的定义1986年ISO8492的定义:质量是产品或服务所满足明示或暗示需求能力的特性和特征的集合。ISO9000(2000版)的定义:质量是一组固有特性满足要求的程度。IEEE的定义:即质量是系统、部件或过程满足明确需求,且客户或用户需要或期望的程度不同RUP的定义:满足或超出认定的一组需求,并使用经过认可的评测方法和标准来评估,还使用认定的流程来生产充分理解质量定义•特性指“可区分的特征”,可以有各种类别的特性,如物理、化学和生理特性等。•固有特性是指某事物中本来就有的,尤其是那种永久的特性,如木材的硬度等技术特性。赋予特性不是某事物中本来就有的,而是完成产品后因不同的要求而对产品所增加的特性,如产品的价格、供货时间和运输方式等。固有特性与赋予特性是相对的,某些产品的赋予特性可能是另一些产品的固有特性。•明示或暗示的特性。明示的特性,是规定的要求,一般在国家标准、行业规范、产品说明书中进行描述或客户明确提出的要求。对于暗示或隐含的用户需求,一般没有文档说明,而是由社会习俗约定、行为惯例所要求的一种潜规则,所考虑的需求或期望是不言而喻的。•必须履行的是指法律法规要求的或有强制性标准要求的。•要求可以是多方面的。质量属性•质量的内涵是由一组满足客户及其他相关方所要求的固有特性组成,包括内在特性和外在特性•质量的客户属性,质量是相对客户而存在,也是质量相对性的一种体现。•质量的成本属性,也可以称为质量的经济性,质量越好的产品,带给社会的损失就越小。•社会属性,质量很多时候体现的是一种理念,是哲学而不仅仅是方法,它与社会的价值观有直接的关系。•可测性。产品的质量好坏将取决对相应特征的衡量,质量的可测性决定了质量的可控特性。•质量的可预见性:可以预测质量在不同过程中的结果。广义质量概念和狭义质量概念的对比主题狭义质量概念广义质量概念产品有形制成品(硬件)硬件、软件、服务和研发流程过程直接与产批制造有关过程包括制造核心过程、销售支持性过程等的所有过程产业制造业各行各业:制造、服务、政府等,赢利或非赢利质量被看成技术问题经营问题客户购买产品的客户所有有关人员,无论内部还是外部如何认识质量基于职能部门基于普遍适用的朱兰三部曲原理质量目标体现在工厂的各项指标中公司经营计划承诺和社会责任劣质成本与不合格的制造品有关无缺陷使成本总和最低质量的评价主要基于符合规范、程序和标准满足客户的需求改进是用于提高部门业绩公司业绩质量管理培训集中在质量部门全公司范围内负责协调质量工作中层质量管理人员高层管理者组成的质量委员会质量形成过程设计环境建立生产工序控制检验测试服务制定工艺采购开发制定产品规格市场研究市场研究供应单位销售适用性(质量)零售批发维护支持朱兰质量螺旋曲线ISO9000质量环营销和市场调研产品设计和开发过程策划和开发采购技术支持和服务售后生产或服务提供包装和储存验证使用寿命结束时的处置或再生利用质量硬件产品的寿命周期安装和投入运行销售和分发质量管理的发展历程1900手工操作者专职检验员1920过程统计技术1931全面质量管理1960以顾客为中心阶段时间客户•内部客户和外部客户•客户的确定•客户与质量的关系内部客户和外部客户•外部客户,不是组织内部的组成部分,但是受本组织活动影响的个人和组织。外部客户是在传统意义上大家所认知的客户•内部客户,指组织内部的部门和员工,组织内部某一方向对方提供产品或服务,“对方”就被视为内部客户•内部客户又分为4种,即职级客户、职能客户、工序客户和流程客户客户的确定实际的客户和潜在的客户直接的客户和间接的客户关键的少数客户和次要的多数客户客户洞察“每个人都有客户,如果他不知道自己的客户是谁,也不知道客户需要的是什么,那么他还没有了解自己的工作”客户与质量的关系•质量是相对客户而存在的,客户与质量的基本关系是相互依赖的关系,质量服务于客户,因客户存在而存在,而且质量由客户判定。