第2章 软件测试基本概念

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1软件测试方法和技术-Ch.2软件测试的基本概念和方法计算机工程系杨晓花2第1章回顾1.1软件的含义1.2软件开发过程模型1.3UML代表着软件建模的发展趋势1.4软件测试的重要性3第2章软件测试的基本概念2.1软件缺陷2.2验证和确认2.3软件测试的分类2.4测试模型2.5软件测试的工作范畴4缺陷是质量的对立面要了解什么是缺陷(defect),就必须清楚“质量(Quality)”概念,因为缺陷是相对质量而存在的,违背了质量、违背了客户的意愿,不能满足客户的要求,就会引起缺陷或产生缺陷。52.1软件缺陷2.1.1软件质量的内涵2.1.2软件缺陷的定义2.1.3软件缺陷的产生2.1.4软件缺陷的构成2.1.5修复软件缺陷的代价6软件质量的内涵1质量(Quality)的概念在RUP(“Rational标准过程”理论)中,质量被定义为:满足或超出认定的一组需求,并使用经过认可的评测方法和标准来评估,还使用认定的流程来生产。RUP:RationalUnifiedProcess7软件质量的内涵2软件质量的内涵总结说来,高品质软件应该是相对的无产品缺陷(bugfree)或只有极少量的缺陷,它能够及时递交给客户,所花费用都在预算内,并且满足客户需求,是可维护的。但是,有关质量好坏的最终评价依赖于用户的反馈。8高质量软件标准体系产品质量是人们实践产物的属性和行为,是可以认识,可以科学地描述的。并且可以通过一些方法和人类活动,来改进质量.质量模型:McCall模型,Boehm模型,ISO9126模型过程质量:软件能力成熟度模型CMM(CapabilityMaturityModel).国际标准过程模型ISO9000软件过程改进和能力决断SPICE(SoftwareProcessImprovementandCapabilitydEtermination)在商业过程中有关的质量内容:培训、成品制作、宣传、发布日起、客户、风险、成本等9产品质量的标准-功能性Functionality-可用性Usability(简单安装;轻松使用;友好界面)-可靠性Reliability(用户使用的根本)-性能Performance-容量Capacity-可测量性Scalability-可维护性Servicemanageability-兼容性Compatibility-可扩展性Extensibility10软件质量特征(ISO9126)功能:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能。可靠:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性。可用:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性。效率:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性。可维护:与进行指定的修改所需的努力有关的一组属性。可移植:与软件从一个环境转移到另一个环境的能力有关的一组属性。其中每一个质量特征都分别与若干子特征相对应。11ISO9126软件质量三层模型-SQRC软件质量需求评价准则(高层)-SQDC软件质量设计评价准则(中层)-SQMC软件质量度量评价准则(低层)12McCall软件质量模型互用性正确性可靠性效率完整性可用性可维护性可测试性灵活性可移植性重复性阐述性数据公开性连贯性容错性执行效率/储存效率存取控制/存取检查可训练沟通良好简单性易操作的工具自我操作性扩展性一般性模块性软件系统独立性机器独立性通讯公开性正确性可操作性产品操作产品修改产品转换13什么是Bug?2.1.2软件缺陷的定义Anyproblem/disfigurement/limitationinproductdesign&developmentFeatureorfunctioncan’tworkUnreasonabledesignPartlyrealizationinfunctionDataerrorRunerrorLimitationinfeaturesDifferencebetweenactualresultsandexpectedresultsUnfriendlyUI,LowperformanceOthers任何程序、系统中的问题,和产品设计书的不一致性,不能满足用户的需求14软件缺陷IEEE(1983)729软件缺陷一个标准的定义:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。15软件开发描述图16软件缺陷软件错误产生的可能原因是:需求规格说明书包含错误的需求、或漏掉一些需求,或没有准确表达客户所需要的内容需求规格说明书中有些功能不可能或无法实现系统设计(systemdesign)中的不合理性程序设计中的错误程序代码中的问题,包括错误的算法、复杂的逻辑等17软件缺陷软件缺陷的主要类型/现象:功能、特性没有实现或部分实现设计不合理,存在缺陷实际结果和预期结果不一致运行出错,包括运行中断、系统崩溃、界面混乱数据结果不正确、精度不够用户不能接受的其他问题,如存取时间过长、界面不美观18软件缺陷的种类:按照严重性级别的定义不尽相同,但一般可以概括为4种类型:致命的(fatal):致命的错误,造成系统或应用程序崩溃(crash)、死机、系统悬挂,或造成数据丢失、主要功能完全丧失等。严重的(critical):严重错误,指功能或特性没有实现,主要功能部分丧失,次要功能完全丧失,提示信息不太准确,或致命的错误声明一般的(major):不太严重的错误,这样的软件缺陷虽然不影响系统的基本使用,但没有很好地实现功能,没有达到预期效果。如次要功能丧失,提示信息不太准确,或用户界面差,操作时间长微小的(minor):一些小问题,对功能几乎没有影响,产品或属性仍可使用,如有个别错别字、文字排列不整齐等。此外,有时还需要“建议(Suggestion)”级别来处理测试人员所提出的建议或质疑。软件缺陷19软件缺陷的状态软件缺陷除了严重性以外,还存在反映软件缺陷处于一种什么样的状态,便于跟踪和管理某个产品的缺陷,可以定义不同的bug状态:激活状态(Active或Open):问题没有解决,测试人员新报的bug,或验证后bug依然存在已修正状态(Fixed或Resolved):开发人员针对所存在的缺陷,修改程序,认为已解决问题,或通过单元测试关闭或非激活状态(Close或Inactive):测试人员验证fixedbug后,确认bug不存在之后的状态。此外,还有下面一些中间状态:保留(Hold):bug目前无法解决或是由第三方软件产品引起的延期(Differed):bug暂时不需要解决或在下一版本中解决更彻底一些软件缺陷20造成软件缺陷产生的主要原因有:1.技术问题主要包括:算法错误、语法错误、计算和精度问题、系统结构不合理、算法不科学,造成系统性能低下、接口参数传递不匹配,导致模块集成出现问题2.团队工作对客户的需求不是十分清楚,或者和用户的沟通存在一些困难;开发人员相互理解不一致;设计或编程上的一些假定或依赖性,没有得到充分的沟通3.软件本身文档错误、用户使用场合(userscenario),时间上不协调、或不一致性所带来的问题。系统的自我恢复或数据的异地备份、灾难性恢复等问题软件缺陷的产生21软件缺陷构成设计,25%规格说明书,54%其他,6%代码,15%22软件缺陷在不同阶段的分布在真正的程序测试之前,通过审查、评审会可以发现更多的缺陷。规格说明书的缺陷会在需求分析审查、设计、编码、测试等过程中会逐步发现,而不能在需求分析一个阶段发现23缺陷成本软件缺陷的发现随着时间的推移带来的成本越来越大。242.2验证和确认2.2.1验证和确认2.2.2评审2.2.3质量保证和测试的关系25验证和确认(V&V)Verification:Arewebuildingtheproductright?是否正确地构造了软件?即是否正确地做事,验证开发过程是否遵守已定义好的内容。验证产品满足规格设计说明书的一致性Validation:Arewebuildingtherightproduct?是否构造了正是用户所需要的软件?即是否正在做正确的事。验证产品所实现的功能是否满足用户的需求26评审通过软件评审,可以更早地发现需求工程、软件设计等各个方面的问题,大大减少大量的后期返工,将质量成本从昂贵的后期返工转化为前期的缺陷发现。评审是对软件元素或者项目状态的一种评估手段,以确定其是否与计划的结果保持一致,并使其得到改进。检验工作产品是否正确地满足了以往工作产品中建立的规范。软件评审是软件测试的组成部分。27评审分类管理评审技术评审文档评审流程评审28什么是SQA?软件质量保证是通过对软件产品和活动有计划的进行评审和审计来验证软件是否合乎标准的系统工程活动.确保SQA活动要自始至有计划的进行审查软件产品和活动是否遵守适用的标准、规程和要求并得到客观验证。SQA的活动和结果要保证全员参与,沟通顺畅。逐级解决不符合问题29SQA与软件测试有什么关系和区别?30SQA与软件测试的关系SQA是管理工作、审查对象是流程、强调以预防为主测试是技术工作、测试对象是产品、主要是以事后检查SQA指导测试、监控测试测试为SQA提供依据312.3软件测试的分类方法目标/特性单元测试系统测试验收测试性能测试强壮性测试功能测试白盒测试黑盒测试测试阶段或层次适用性测试可靠性测试集成测试安全性测试32不同的分类•按测试的对象或范围分类,如单元测试、文档测试、系统测试等)•按测试目的分类,如功能测试、回归测试、性能测试、可靠性测试、安全性测试和兼容性测试等•根据测试过程中被测软件是否被执行,分为静态测试和动态测试•根据是否针对系统的内部结构和具体实现算法来完成测试,可分为白盒测试和黑盒测试332.4.1软件测试模型:V模型342.4.2软件测试模型:X模型352.5软件测试的工作范畴软件测试工作的组织与管理:制定测试策略、测试计划,确认所采用的测试方法与规范,控制测试进度,管理测试资源。测试工作的实施:编制符合标准的测试文档,搭建测试环境,开发测试脚本、与开发组织协作实现各阶段的测试活动。36测试工作流程372.5.1测试计划制定在测试计划中,主要包括以下内容:1.制定测试策略制定测试策略主要分析测试的目标和指标,确定测试的对象和依据,明确测试的重点和采用的方法2.确定测试范围测试主要依据“产品设计规格说明书”,根据产品的新特性或功能修改需求所做的代码变化,以及这种变化可能引起的问题或给其他模块造成的影响。3.所需资源和日程安排资源包括计算机硬件、软件和人力资源。在进行资源安排时,更重要的是设置不同的角色,清楚地定义每个人的工作内容和责任。对于日程安排,主要是设置整个测试周期的项目进程。为了合理、准确地安排日程,对测试工作量要进行正确的估计。382.5.2设计测试用例在单元测试阶段,主要用白盒测试方法设计测试用例;在功能测试阶段,主要用黑盒测试方法来设计测试用例。测试用例定义了为执行测试所需要的条件或环境、输入或操作步骤,以及所期望的结果。测试环境是测试的基础。要尽量模拟软件系统实际应用的环境。输入值。除了正常的输入值,关键是需要寻找哪些是属于边界条件的输入值和正常输入值。期望结果或标准。是根据系统设计规格说明书来确定的输出结果、标准。有时是由经验作出正确判断、理解所确定。392.5.3执行测试执行测试主要有下列一些活动:建立必要的测试环境按照所写的测试用例,编写测试脚本根据测试对象和目的,构造测试用例的集合运行测试脚本或手工按测试用例进行记录测试结果结果比较分析,找出软件缺陷将软件缺陷记录到缺陷数据库中,清楚地描述该缺陷跟踪和管理软件缺陷验证被处理的软件缺陷,并进行回归测试对测试过程进行管理,保证测试工作执行的正确性,实现资源调拨和相关合作方的协调。对测试中的问题进

1 / 46
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功