软件测试第二讲软件质量班文武2015年8月内容简介第1节软件质量定义第2节软件质量管理体系第3节软件质量模型第4节软件质量活动第1节软件质量定义1.1什么是软件质量?ISO关于质量的定义表示如下:一个实体的所有特性,基于这些特性可以满足明显的或隐含的需求。而质量就是实体基于这些特性满足需求的程度。质量定义包含三个要素:实体、特性集合、需求。第1节软件质量定义实体:手机、豆浆机、软件系统等实体特性集合:如豆浆机:功能:能够榨豆浆、水果汁(苹果、梨、西瓜……)性能:榨一公斤黄豆需要多长时间?耗能:榨一公斤黄豆耗电量多少?安全性:榨汁过程中有无人体安全防护措施?有无漏电防护?可靠性:豆浆机能够持续运行多长时间?易用性:豆浆机的操作是否简单、方便?第1节软件质量定义评价实体的质量不能只是从一个角度来说它的质量好还是不好,需要从所有的角度上来综合进行评价。如何评价一个软件的质量?软件有那些特性组成(功能性、可靠性、易用性、效率、维护性等)评价的标准时什么?是需求。显式需求:需求说明书上列出的功能需求。隐式需求:需求说明书上没有列出但在程序运行中不得不处理的需求。•如编制系统中控制价字符控制、系统的退出功能等第1节软件质量定义1.2什么决定软件质量流程、技术、组织是影响软件质量的铁三角,提高软件质量需要从每个方面进行改进,同时还需要兼顾成本和进度。流程:从计划到策略的实现,流程就是按照这种思维方式指导软件开发的,并且流程来源于成功的经验,可以指导项目少走弯路,从而提高软件质量,不仅如此,流程还对项目的成本和进度控制有很大的帮助。技术:包括分析技术、设计技术、编码技术、测试技术等,需求是项目的灵魂,良好的需求分析便是项目成功的关键所在,若是需求分析做不好不可避免的要出现返工;设计,软件的质量是设计出来的,良好的设计基本上决定了软件产品的最终质量;编码技术产生正确高效的代码;测试是保证软件的一道防线。所以各种技术对质量来说都是很重要的。组织:好的组织可以有效的促进流程的实施,同时提供员工的发展通道以吸引更多的人(技术的载体)。第1节软件质量定义第2节软件质量管理体系ISO9000:2000版标准ISO9000不是指一个标准,而是一族标准的统称。“ISO9000族标准”指由ISO/TC176制定的所有国际标准。TC176即ISO中第176个技术委员会,全称是“质量保证技术委员会”,成立于1979年。1987年更名为“质量管理和质量保证技术委员会”。TC176专门负责制定质量管理和质量保证技术的标准。ISO9000是ISO/TC176制定的第9000号标准文件。ISO9000标准即是当前国际国内贸易往来及合作中,被作为相互认可的技术基础和确认质量保证能力的依据。企业推行ISO9000,可以做到:“人人有职责、事事有程序、作业有标准、体系有监督、不良有纠正”。ISO不具体针对某个行业的质量标准,是普遍适用的质量管理体系。第2节软件质量管理体系CMM认证(精髓在于:过程决定质量)CMM是软件过程能力成熟度模型(CapacityMaturityModel)的简称,是卡内基-梅隆大学软件工程研究院为了满足美国联邦政府评估软件供应商能力的要求,于1986年开始研究的模型,并于1991年正式推出了CMM1.0版。CMM自问世以来备受关注,在一些发达国家和地区得到了广泛应用,成为衡量软件公司软件开发管理水平的重要参考因素和软件过程改进事实上的工业标准。搜索据了解,美国、印度、日本等国家已有数十家公司通过了CMM不同等级的认证。CMMI(CapabilityMaturityModelIntegration)即能力成熟度模型集成,这也是美国国防部的一个设想,他们想把现在所有的以及将被发展出来的各种能力成熟度模型,集成到一个框架中去。这个框架有两个功能,第一,软件获取方法的改革;第二,建立一种从集成产品与过程发展的角度出发、包含健全的系统开发原则的过程改进。过程能力等级:1.初始级(不可控)、2.可重复级(可以重复以前的过程)、3.已定义级(标准化)、4.已管理级(定量)、5.优化级(改进)第2节软件质量管理体系6Sigma(六西格玛)六西格玛(SixSigma,6Sigma)是一种管理策略,它可以改善企业质量流程管理的技术,以”零缺陷”的完美商业追求,带动质量成本的大幅度降低,最终实现财务成效的提升与企业竞争力的突破。它是由摩托罗拉提出的。这种策略主要强调制定极高的目标、收集数据以及分析结果,通过这些来减少产品和服务的缺陷。六西格玛背后的原理就是如果你检测到你的项目中有多少缺陷,你就可以找出如何系统地减少缺陷,使你的项目尽量完美的方法。一个企业要想达到六西格玛标准,那么它的出错率不能超过百万分之3.4。六西格玛计算:(1-缺陷数/1000000)*100%如:某一航班到达时间的5点,一年运营200次,55次超过5点。合格率就是72.5%。约为2sigma,要达到6sigma,那么一百万次飞行仅有3.4次晚点,如果航班每天运行一次,则每805年才出现一次晚点。ISO9126软件质量模型由6个特性,27个子特性组成。这个模型是软件质量标准的核心,今后的测试工作要从这些特性去测试、评价一个软件。第3节软件质量模型第3节软件质量模型软件质量模型中“内部质量”和“外部质量”的含义涉及到软件生命周期的质量有以下几种,相互关系如图所示:过程质量:过程设计的完善程度和过程执行的力度。(测量活动:SQA)内部质量:软件开发过程中,中间过程产品的质量。(测量活动:需求分析、概要设计、详细设计、代码评审;单元测试、粒度小的集成测试)外部质量:软件系统作为完整的整体运行时所表现出来的各方面质量特征。(测量活动:系统测试)使用质量:最终用户在真实环境中运行系统所感受到软件各方面特性与其目标的符合程度。(测量活动:验收测试)3.1功能性功能性——当软件在指定条件下使用时,软件产品提供满足明确和隐含需求的功能的能力。适合性——软件产品为指定的任务和用户目标提供一组适合的功能的能力。即所提供的功能是用户需要的,用户需要的功能软件系统已提供。(阐述“有没有”)准确性——软件产品提供具有所需精确度的正确或相符的结果或效果的能力。即软件除了所要求的功能外,还要求能正确实现所要求的功能。(阐述“对不对”)(如计算器加法测试)互操作性——软件产品与一个或更多的规定系统进行交换的能力。(例如:PC机中WORD和打印机完成打印互通;接口调用——网上招标系统与开标系统互操作、标书查看工具)保密安全性——软件产品保护信息和数据的能力。主要两个方面:A、防止未得到授权的人或系统访问相关的信息或数据;B、保证得到授权的人或系统能正常访问相关信息或数据。功能性的依从性——软件产品遵循与功能性相关的标准、约定或法规以及类似规定发能力。这些标准要考虑国际标准、国家标准、行业标准、企业内部规范等。第3节软件质量模型3.2可靠性可靠性——在指定条件下使用时,软件产品维持规定的性能级别的能力。可靠性的性能指标:平均无故障时间(MTTF)、平均恢复时间(MTTR)、平均失效间隔时间(MTBF)。成熟性——软件产品为避免软件内部的错误扩散而导至系统失效的能力(主要是对内错误的隔离,即内部接口防范),即软件避免自身的错误、自身模块间的错误而导致整个软件的失效。如对导入招投标文件及接口文件进行非空检查。容错性——软件防止外部接口错误扩散而导致系统失效的能力(主要是对外错误的隔离,即外部接口防范)故意更改登陆用户名及密码易恢复性——系统失效后,重新恢复原有的功能和性能的能力。包含两个方面:A、原有能力恢复程度;B、原有能力恢复速度。系统未响应时恢复的能力可靠性的依从性——软件产品遵循与可靠性相关的标准、约定或法规的能力。第3节软件质量模型3.3易用性易用性——在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。易理解性——用户在使用软件时,系统交互给用户的信息是否准确、清晰、易懂,能帮助用户准确理解系统当前真实状态,指导用户进一步操作。(例如宜宾编制不选招标方式和评标方法时,不能切换到招标文件界面;系统必填项不填时不能生成标书)易学性——软件使用户能学习其应用的能力。(例如用户手册是否有中文、帮助文档是否齐全、控件或图标是否有回显功能等)易操作性——软件产品使用户能易于操作和控制它的能力。(快捷键,默认操作,系统安装)吸引性——软件产品吸引用户的能力。这主要考虑的是产品的界面等外在美观因素,这也是一个产品质量很重要的组成部分。(GUI界面测试)可靠性的依从性——软件产品遵循与易用性相关的标准、约定、风格指南或法规的能力。第3节软件质量模型3.4效率效率——在特定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。时间特性——在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力。即完成用户的某个功能需要的响应时间。文件下载上传、标书导入时长资源利用性——在规定条件下,软件产品执行其功能时,使用合适的资源数量和类别的能力。例如完成某个功能需要的CPU占有率、内存占有率、通信宽带等。具体的资源类别和软件产品相关,一般要考虑CPU、内存、通信宽带、系统内部的队列资源、消息包等资源。性能场景设计:1、单用户单业务测试2、多用户单业务测试3、多用户多业务测试•1用户注册请求响应时间、消耗资源50个用户……50个用户注册……•100个用户…….50个用户登录……效率的依从性——软件产品遵循与效率相关的标准或约定的能力。第3节软件质量模型3.5可维护性可维护性——软件产品可被修改的能力。修改可以包括修正、改进或软件对环境、需求和功能规格说明变化的适应。易分析性——软件提供辅助手段帮助开发人员定位缺陷产生的原因,判断出修改的地方。(降低定位缺陷的成本)易改变性——软件产品使得指定的修改容易实现的能力。(降低修复问题的成本)要求在设计上封装性好、高内聚、低耦合,为未来可能的变化留有扩充的余地稳定性——软件产品避免由于软件修改而造成意外结果的能力。上面这三个特性主要是针对开发需要考虑的特性,主要影响软件的内部质量。易测试性——软件提供辅助性手段帮助测试人员实现其测试意图。(软件发现故障并隔离、定位其故障的能力特性,以及在一定时间和成本前提下进行测试设计、测试执行的能力。)可维护性的依从性——软件产品遵循与可维护性相关的标准或约定的能力。第3节软件质量模型3.6可移植性可移植性——软件产品从一种环境迁移到另外一种环境的能力。适应性——软件产品无需作相应变动就能适应不同环境的能力。即软件无需做任何变动就能适应不同运行环境(操作系统平台、数据库平台、硬件平台)的能力。易安装性——尽可能少的提供选择,方便用户直接安装。如果软件由最终用户安装,那么易安装性就可能导致对适合性与易操作性的影响。(安装文本界面、图形向导)共存性——软件产品在公共环境中与其它软件分享公共资源共存的能力。(杀毒软件测试)易替换性——软件产品在同样的环境下,替代另一个相同用途的软件产品的能力。(新旧软件的替换)可移植性的依从性——软件产品遵循与可移植性相关的标准或约定的能力。第3节软件质量模型第4节软件质量活动软件质量活动有:软件质量保证、度量和测试。SQA(软件质量保证)和测试的关系:SQA从流程方面保证软件的质量;测试从技术方面保证软件的质量;只进行SQA活动或只进行测试活动不一定产生好的软件质量。SQA工作范围:1.保证制度体系;2.使用过程改进;3.指导项目实施;4.增加透明度;5.评审项目活动;6.审核工作产品;7.协助问题解决;8.提供决策参考;9.进行缺陷预防;10.实现质量目标。第4节软件质量活动度量度量的概念:度量:对事物属性量化表示。软件度量:对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程。度量的目的:提高软件生产率,缩短产