第二章软件测试的基本概念主要内容:2.1软件质量2.2软件缺陷2.3质量保证与测试的关系2.4软件测试的工作范畴缺陷是质量的对立面图2-1客户、质量、缺陷和测试的关系2.1软件质量一、质量基本概念质量术语质量quality:实体特性的总和,满足明确或隐含要求的能力。软件质量:软件特性的总和,软件满足规定或潜在用户需求的能力隐含的要求impliedneeds:当实体用在特定条件下时,尚未说明但又是实际需要的要求。(注:隐含的要求是未形成文档的真实要求)软件质量特性softwarequalitycharacteristics:用以描述和评价软件产品质量的一组属性。一个软件质量特性可被细化成多级子特性。属性attribute:实体的可以测量的物理或理论上的性质。质量模型qualitymodel:一组特性及特性间的关系,提供规定质量需求和评测基础。2.1软件质量二、软件质量特点优秀软件特征满足用户的需求合理进度、成本、功能关系具备扩展性和灵活性,能够适应一定程度的需求变化能够有效的处理例外的情况保持成本和性能的平衡能够可持续的发展2.1软件质量二、软件质量特点软件质量特点软件质量不以时间为依赖无公认准确的度量评估准则产品性质不同,很难有通用的度量涉及不定因素和人为因素最佳实践实际上是经验积累总结软件工程界喜欢用质量要素(qualityfactor)概括软件质量特性、并进行特性的度量2.1软件质量三、软件质量模型从测量的角度看,影响软件质量的因素可以分为两大类:可直接测量(如每个功能点的错误)和间接度量(如可用性、可维护性)1、McCall模型图2-2McCall软件质量模型2.1软件质量三、软件质量模型2、ISO9126软件质量三层模型图2-32.1软件质量三、软件质量模型2、ISO9126软件质量三层模型根据ISO9126,软件产品质量可以归纳为以下特性:(1)功能性(functionlity):在指定条件下,软件产品满足明确和隐含要求功能的能力•适应性:软件为指定的任务和用户目标提供一组合适功能的能力•准确性:软件提供所需精确度的正确或相符结果及效果的能力•互操作性、互用性:软件产品与一个或更多规定系统进行交互的能力•保密安全性:软件产品保护信息和数据的能力2.1软件质量三、软件质量模型2、ISO9126软件质量三层模型(2)可靠性(reliability):在指定条件使用时,软件产品维持规定的性能级别的能力•成熟性:软件产品为避免由软件中错误而导致失效的能力•容错性:在软件失效或者违反规定的接口的情况下,软件产品维持规定的性能级别的能力•易恢复性:在发生故障的情况下,软件重建规定的性能级别并恢复受直接影响的数据的能力2.1软件质量三、软件质量模型2、ISO9126软件质量三层模型(3)易用性(usability):在指定条件使用时,软件产品被理解、学习、使用和吸引用户的能力•易理解性:完成特定任务的功能明显性和适用性•易学性:软件产品使用户能学习它的应用的能力•易操作性:软件产品使用户能操作和控制它的能力•吸引性:软件产品吸引用户的能力2.1软件质量三、软件质量模型2、ISO9126软件质量三层模型(4)效率(efficiency):在规定条件下,相对于所用资源数量,软件产品提供适当性能的能力•时间特性:在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐量的能力•资源特性:在规定条件下,软件产品执行其功能时,使用合适的数量和类型的资源的能力2.1软件质量三、软件质量模型2、ISO9126软件质量三层模型(5)可维护性(maintainability):软件产品可被修改的能力,包括修正、改进或软件适应环境、需求和功能规格说明中的变化•易分析性:软件诊断缺陷或失效原因以及判定修改部分的能力•易改变性:软件产品使指定的修改可以被实现的能力•稳定性:软件产品避免由于软件修改而造成意外结果的能力•易测试性:软件产品使已修改软件能被确认的能力2.1软件质量三、软件质量模型2、ISO9126软件质量三层模型(6)可移植性(portability):软件产品从一种环境迁移到另外一种环境的能力•适应性:软件产品无需采用手段就可能适应不同的指定环境的能力•易安装性:软件产品在指定环境中被安装的能力•共存性:软件在公共环境中分享资源与其它独立软件共存的能力•易替换性:在环境、目的相同的情况下替代另一个指定软件的能力2.1软件质量四、软件质量分类1、软件质量的功能需求软件质量的功能需求一般会在需求规格说明书等文档中给相应的描述。2、软件质量的非功能需求一般用下列特性描述:性能、有效性、可靠性、可维护性、兼容性、可扩展性、可移植性2.1软件质量四、软件质量分类3、软件质量的用户需求能正常使用全部所需的功能,符合需求规格;功能强大,而且界面美观,易用;内容健康、有益于生活和工作。用户数据的安全、受保护和兼容;能及时得到新的产品或更完美的软件服务;软件可靠性很高,使用软件服务没有时间障碍2.1软件质量四、软件质量分类4、软件质量的企业需求开发成本可维护性可扩展性可移植性兼容性2.1软件质量四、软件质量分类5、软件质量的社会和宗教需求游戏软件不应该包含有暴力等内容,而且须不断提醒用户长时间玩游戏有害健康;产品颜色的设置要和国家或地区的喜好、禁忌一致;在有特定宗教信仰的国家或地区、要尽量尊重宗教的意愿或旨意。2.2软件缺陷一、软件缺陷的定义软件缺陷(Bug):任何程序、系统中的问题,和产品设计说明书的不一致性,不能满足用户的需求。IEEE(1983)729软件缺陷一个标准的定义:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。2.2软件缺陷二、软件缺陷的表现功能、特性没有实现或部分实现设计不合理,存在缺陷实际结果和预期结果不一致运行出错,包括运行中断、系统崩溃、界面混乱数据结果不正确、精度不够用户不能接受的其它问题,如存取时间过长、界面不美观2.2软件缺陷三、软件缺陷产生的原因《微软开发者成功之路(之一)》概括了以下7项主要原因:(1)项目期限的压力;(2)产品的复杂度;(3)沟通不良;(4)开发人员疲劳,压力过大或受到干扰;(5)缺乏足够的知识、技能和经验;(6)不了解客户的需求;(7)缺乏动力。2.2软件缺陷四、软件缺陷的构成其他6%软件产品说明书(需求)54%编写代码15%设计25%图2-4软件缺陷构成示意图2.2软件缺陷五、修复软件缺陷的代价020406080100编制说明书设计阶段编写代码测试发布图2-6软件缺陷随时间的推移带来的成本越来越大2.3软件质量保证与测试的关系一、软件质量保证(SoftwareQualityAssurance)质量保证:通过预防、检查与改进来保证软件质量,是软件生命周期的管理以及验证软件是否满足规定的质量和用户的需求质量保证软件测试2.3软件质量保证与测试的关系二、SQA的职责检查开发和管理活动是否与已定的过程策略、标准和流程一致检查工作产品是否遵循模板规定的内容和格式收集度量数据,确定和管理风险,促进和协助流程改进向管理者提供正确的信息,以使软件开发正确的执行充当测试工作的监督者,测试工作是否按照既定的流程(测试计划、测试方案、测试案例、测试执行)进行2.3软件质量保证与测试的关系三、SQA的工作内容提出软件质量要求;确定开发方案;阶段评审;测试管理文档化管理验证产品与相应文档和标准的一致性建立测量机制记录并生成报告2.3软件质量保证与测试的关系四、SQA与测试的关系共同点:二者贯穿整个软件开发生命周期的流程。区别:SQA是管理工作、审查对象是流程、强调以预防为主测试是技术工作、测试对象是产品、主要是以事后检查关系:SQA指导测试、监控测试测试为SQA提供依据2.4软件测试的工作范畴软件测试工作的组织与管理:制定测试策略、测试计划,确认所采用的测试方法与规范,控制测试进度,管理测试资源。测试工作的实施:编制符合标准的测试文档,搭建测试环境,开发测试脚本、与开发组织协作实现各阶段的测试活动测试工作流程