计算机Ch2-软件测试概念-STMT课件_第1页
计算机Ch2-软件测试概念-STMT课件_第2页
计算机Ch2-软件测试概念-STMT课件_第3页
计算机Ch2-软件测试概念-STMT课件_第4页
计算机Ch2-软件测试概念-STMT课件_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件测试方法和技术

-Ch.2软件测试的基本概念和方法Zhu.Kerry@Zhu.Kerry@朱少民KerryZhu软件测试方法和技术

-Ch.2软件测试的基本概念和方法1第一章回顾Zhu.Kerry@软件特点软件开发的模型原型模型改进的V模型增量模型和迭代模型XP模型…测试的重要性第一章回顾Zhu.Kerry@软件特点2第二章软件测试的基本概念和方法Zhu.Kerry@2.1软件质量就是客户的满意度2.2软件缺陷(Bug)是什么2.3软件测试的基本方法2.4软件测试的分类和阶段2.5软件测试的工作范畴第二章软件测试的基本概念和方法Zhu.Kerry@gmai3软件质量的内涵软件质量是客户满意度的体现客户+

质+量?Zhu.Kerry@软件质量的内涵软件质量是客户满意度的体现客户+质+4质量(Quality)质量是系统、部件或过程满足明确需求客户或用户需要或期望的程度不同IEEE<<StandardGlossaryofSoftwareEngineeringTerminology>>软件质量:软件产品具有满足规定的或隐含要求能力要求有关的特征与特征总和(ISO8492)软件质量:软件产品满足 使用要求的程度

Zhu.Kerry@质量(Quality)质量是系统、部件或过程满足Zhu.5软件质量范围-3AAccountability

(可说明性)–用户可以基于产品或服务的描述和定义进行使用.

(例如:

市场需求说明书,功能设计说明书.)Availability(有效性)–产品或服务对于99.999%客户总是有效的(例如:性能测试和恢复测试)Accessibility(易用性)–对于用户,产品或服务非常容易使用并且一定是非常有用的功能.(例如:确认测试和用户可用性测试)

Zhu.Kerry@软件质量范围-3AAccountability(可说明性6高质量的软件应该是相对的无产品缺陷(BugFree)或只有极少量的缺陷,它能够准时递交给用户并且所用的费用都是在预算内的并且满足客户需求,是可维护的。但是,有关质量的好坏最终评价依赖于用户的反馈。“客户”广义定义

:内在的定义:下一个环节/工序的接收者,更广的服务的对象,周围有任何联系或影响的团队、人。 软件的设计者,程序的检测者,项目管理者,品质管理人员…-广泛的定义:最终用户,客户管理,Zhu.Kerry@高质量的软件应该是相对的无产品缺陷(BugFree)或只有7软件质量不同的视点

先验论观点:质量是产品一种可以认识但不可定义的性质

用户观点:质量是产品满足使用目的之程度;

制造者的观点:质量是产品性能和规格要求的符合度

产品观点:质量是联结产品固有性能的纽带;

基于价值观点:质量依赖于顾客愿意付给产品报酬的数量Zhu.Kerry@软件质量不同的视点先验论观点:质量是产品一种可以认识但不可8高质量软件标准体系产品质量是人们实践产物的属性和行为,是可以认识,可以科学地描述的。并且可以通过一些方法和人类活动,来改进质量.质量模型:McCall模型,Boehm模型,ISO9126模型过程质量:

软件能力成熟度模型

CMM(CapabilityMaturityModel).

国际标准过程模型

ISO9000

软件过程改进和能力决断

SPICE(SoftwareProcessImprovementandCapabilitydEtermination)

在商业过程中有关的质量内容:

培训、成品制作、宣传、发布日起、客户、风险、成本、业务等

Zhu.Kerry@高质量软件标准体系产品质量Zhu.Kerry@gmail.c9产品质量的标准-功能性

Functionality-可用性

Usability(简单安装;轻松使用;友好界面)-可靠性

Reliability(用户使用的根本)-性能

Performance-容量

Capacity-可测量性

Scalability-可维护性

Servicemanageability-兼容性

Compatibility-可扩展性

ExtensibilityZhu.Kerry@产品质量的标准-功能性FunctionalityZhu.10软件质量特征(ISO9126)

功能:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能。

可靠:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性。

易用:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性。

效率:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性。

可维护:与进行指定的修改所需的努力有关的一组属性。

可移植:与软件从一个环境转移到另一个环境的能力有关的一组属性。

其中每一个质量特征都分别与若干子特征相对应。Zhu.Kerry@软件质量特征(ISO9126)功能:与一组功能及其指定11Boehm软件质量模型阐述性互用性数据公开性正确性可靠性效率完整性可用性可维护性可测试性灵活性可移植性重复性连贯性容错性执行效率/储存效率存取控制/存取检查可训练沟通良好简单性易操作的工具自我操作性扩展性一般性模块性软件系统独立性机器独立性通讯公开性正确性可操作性Zhu.Kerry@Boehm软件质量模型阐述性互用性数据公开性正确性可靠性效率12McCall模型设备独立性易更改可靠性效率总体效用易用性可维护性可测试性人体工程学可移植性易懂性精确性完整性完全性可说明性

设备功效易操作性沟通良好自我操作性架构性简明性易懂性可维护性模块独立性连续性Zhu.Kerry@McCall模型设备独立性易更改可靠性效率总体效用易用13软件过程质量软件能力成熟度模型CMM(CapabilityMaturityModel).国际标准过程模型ISO9000软件过程改进和能力决断SPICE(SoftwareProcessImprovementandCapabilitydEtermination)Zhu.Kerry@软件过程质量Zhu.Kerry@14质量保证的策略主要分三个阶段:

以检测为重:产品制成之后进行检测,只能判断产品质量,不能提高产品质量。

以过程管理为重:把质量的保证工作重点放在过程管理上,对制造过程中的每一道工序都要进行质量控制。

以新产品开发为重:在新产品的开发设计阶段,采取强有力的措施来消灭由于设计原因而产生的质量隐患。Zhu.Kerry@质量保证的策略主要分三个阶段:Zhu.Kerry@gmail15全面质量管理

(TQM)TQM=TotalQualityManagement全面质量管理

TQM是为了能够在最经济的水平上,并考虑到充分满足用户要求的条件下进行市场研究、设计、生产和服务,把企业内各部门研制质量、维持质量和提高质量的活动构成为一体的一种有效体系

TQM内容:全员参与质量管理全过程质量管理。

TQM的4个关键要素:关注客户过程改进质量的人性化因素度量(即模型的测量和分析)Zhu.Kerry@全面质量管理(TQM)TQM=TotalQualit16质量管理发展五个阶段1900手工操作者专职检验员1920过程统计技术1931全面质量管理1960以顾客为中心阶段时间2000Zhu.Kerry@质量管理发展五个阶段1900手工操作者专职检验员1920过程17什么是Bug?2.2软件缺陷(Bug)是什么Anyproblem/disfigurement/limitationinproductdesign&development

Featureorfunctioncan’tworkUnreasonabledesignPartlyrealizationinfunctionDataerrorRunerrorLimitationinfeaturesDifferencebetweenactualresultsandexpectedresultsUnfriendlyUI,LowperformanceOthers任何程序、系统中的问题,和产品设计书的不一致性,不能满足用户的需求

Zhu.Kerry@什么是Bug?2.2软件缺陷(Bug)是什么Anyp18问题出在哪里?项目没有被很好地理解;计划不周,最终导致进度拖延。没有充分的文档资料。人与人的交流比写程序困难得多。软件可靠性缺少度量的标准,质量无法保证。软件难以维护、不易升级。Zhu.Kerry@问题出在哪里?项目没有被很好地理解;计划不周,最终导致进度拖19解决问题的想法Bettermanagement管理Differentteamorganizations组织Betterlanguages&tools语言和工具Uniformcodingconventions编程惯例必须意识到:“软件”≠编程,它有自己的生命周期(lifecycle)。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。Zhu.Kerry@解决问题的想法Bettermanagement管理Zh20实践证明:对软件进行充分的测试 才能够有效的保证软件质量软件测试对软件产品进行充分测试,找出其中的缺陷(Bug),并进行修复(Fix)。Zhu.Kerry@实践证明:对软件进行充分的测试软件测试对软件产品进行充分测试21缺点(defect)偏差(variance)谬误(fault)失败(failure)问题(problem)矛盾(inconsistency)错误(error)毛病(incident)异常(anomy)缺陷-BugZhu.Kerry@缺点(defect)偏差(v22软件缺陷IEEE(1983)729软件缺陷一个标准的定义:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。

软件缺陷的主要类型/现象:功能、特性没有实现或部分实现设计不合理,存在缺陷实际结果和预期结果不一致运行出错,包括运行中断、系统崩溃、界面混乱数据结果不正确、精度不够用户不能接受的其他问题,如存取时间过长、界面不美观Zhu.Kerry@软件缺陷IEEE(1983)729软件缺陷一个标准的定23Zhu.Kerry@软件缺陷的产生

技术问题算法错误,语法错误,计算和精度问题,接口参数传递不匹配团队工作误解、沟通不充分软件本身文档错误、用户使用场合(userscenario),时间上不协调、或不一致性所带来的问题系统的自我恢复或数据的异地备份、灾难性恢复等问题Zhu.Kerry@软件缺陷的产生技术问24软件缺陷构成Zhu.Kerry@软件缺陷构成Zhu.Kerry@25软件缺陷在不同阶段的分布Zhu.Kerry@在真正的程序测试之前,通过审查、评审会可以发现更多的缺陷。规格说明书的缺陷会在需求分析审查、设计、编码、测试等过程中会逐步发现,而不能在需求分析一个阶段发现软件缺陷在不同阶段的分布Zhu.Kerry@gmail.c26缺陷成本Zhu.Kerry@缺陷成本Zhu.Kerry@272.3软件测试的基本方法Zhu.Kerry@根据G.J.Myers观点--软件测试的目:

软件测试是为了发现错误而执行程序的过程一个好的测试能够在第一时间发现程序中存在的错误一个好的测试是发现了至今尚未发现的错误的测试。软件测试是质量控制的重要手段,保证客户拿到或用户使用高质量的软件产品2.3软件测试的基本方法Zhu.Kerry@gmail.co28软件测试误区误区一:如果发布出去的软件有质量问题,都是软件测试人员的错误区二:软件测试技术要求不高,至少比编程容易多了误区三:有时间就多测试一些,来不及就少测试一些误区四:软件测试是测试人员的事,与开发人员无关误区五:根据软件开发瀑布模型,软件测试是开发后期的一个阶段软件测试误区误区一:如果发布出去的软件有质量问题,都是软件29Zhu.Kerry@软件测试的原则所有测试的标准都是建立在用户需求之上。软件测试必须基于“质量第一”的思想去开展各项工作,当时间和质量冲突时,时间要服从质量。事先定义好产品的质量标准,只有有了质量标准,才能根据测试的结果,对产品的质量进行分析和评估。软件项目一启动,软件测试也就是开始,而不是等程序写完,才开始进行测试。穷举测试是不可能的。甚至一个大小适度的程序,其路径排列的数量也非常大,因此,在测试中不可能运行路径的每一种组合。Zhu.Kerry@软件测试的原则所有测试30Zhu.Kerry@软件测试的原则(2)第三方进行测试会更客观,更有效。软件测试计划是做好软件测试工作的前提。测试用例是设计出来的,不是写出来的,所以要根据测试的目的,采用相应的方法去设计测试用例,从而提高测试的效率,更多地发现错误,提高程序的可靠性。对发现错误较多的程序段,应进行更深入的测试。一般来说,一段程序中已发现的错误数越多,其中存在的错误概率也就越大。重视文档,妥善保存一切测试过程文档(测试计划、测试用例、测试报告等)Zhu.Kerry@软件测试的原则(2)31Zhu.Kerry@软件测试的原则(3)应当把“尽早和不断地测试”作为测试人员的座右铭回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见测试应从“小规模”开始,逐步转向“大规模”。不可将测试用例置之度外,排除随意性。必须彻底检查每一个测试结果。一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系对测试错误结果一定要有一个确认的过程。Zhu.Kerry@软件测试的原则(3)32测试方法黑盒子和白盒子静态的和动态的文档、代码审查数据输入边界条件法等价划分、数据流程图状态变换图逻辑路径法测试方法黑盒子和白盒子33黑盒子和白盒子功能测试数据驱动测试结构测试逻辑驱动测试

客户需求事件驱动输入输出黑盒子和白盒子功能测试结构测试客户需求事件驱动输入输出34静态的和动态的主持人作者记录员列席人员内审员技术专业人员用户代表不正式正式互审

走读审查会议运行程序静态的和动态的主持人作者记录员列席人员内审员技术专业人员用户35自动测试和手工测试手工模拟用户操作自动测试和手工测试手工模拟用户操作36验证和确认(V&V)

Verification:Arewebuildingtheproductright?是否正确地构造了软件?即是否正确地做事,验证开发过程是否遵守已定义好的内容。验证产品满足规格设计说明书的一致性Validation:Arewebuildingtherightproduct?

是否构造了正是用户所需要的软件?即是否正在做正确的事。验证产品所实现的功能是否满足用户的需求验证和确认(V&V)Verification:Are372.4软件测试的分类和阶段开发生命周期...维护需求定义应用定义应用开发修订建立建立测试生命周期...执行.执行执行.测试计划缺陷跟踪测试开发测试设计评估2.4软件测试的分类和阶段开发生命周期...维护需求定38软件测试分类方法目标/特性单元测试系统测试验收测试性能测试强壮性测试功能测试白盒测试黑盒测试测试阶段或层次适用性测试可靠性测试集成测试安全性测试软件测试分类方法目标/特性单元测试系统测试验收测试性能测试强39软件测试阶段阶段输入输出需求分析需求定义,市场分析文档,相关技术文档市场需求分析会议记要,功能设计,技术设计设计审查市场需求文档,技术设计文档

测试计划,测试用例功能验证代码完成文件包,功能详细设计说明书最终技术文档完整测试用例,完备的测试计划,缺陷报告,功能验证测试报告系统测试代码修改后的文件包完整测试用例,完备的测试计划

缺陷报告缺陷状态报告项目阶段报告确认测试代码冻结文件包确认测试用例缺陷状态报告缺陷报告审查版本审查版本发布代码发布文件包测试计划检查清单当前版本已知问题的清单版本发布报告软件测试阶段阶段输入输出需求分析需求定义,市40测试阶段(SDLC)测试阶段(SDLC)41单元测试单元测试的对象是程序系统中的最小单元---模块或组件上,在编码阶段进行,针对每个模块进行测试,主要通过白盒测试方法,从程序的内部结构出发设计测试用例,检查程序模块或组件的已实现的功能与定义的功能是否一致、以及编码中是否存在错误。多个模块可以平行地、对立地测试,通常要编写驱动模块和桩模块单元测试一般由编程人员和测试人员共同完成单元测试单元测试的对象是程序系统中的最小单元---模块或组件42集成测试集成测试,也称组装测试、联合测试、子系统测试,在单元测试的基础上,将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的模块之间问题两种集成方式:一次性集成方式和增殖式集成方式。集成测试集成测试,也称组装测试、联合测试、子系统测试,在单元43功能测试功能测试一般须在完成集成测试后进行,而且是针对应用系统进行测试。功能测试是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用功能测试功能测试一般须在完成集成测试后进行,而且是针对应用系44系统测试系统测试是将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境下进行一系列的测试,包括恢复测试、安全测试、强度测试和性能测试等系统测试系统测试是将软件放在整个计算机环境下,包括软硬件平台45验收测试&安装测试验收测试的目的是向未来的用户表明系统能够像预定要求那样工作,验证软件的功能和性能如同用户所合理期待的那样安装测试是指按照软件产品安装手册或相应的文档,在一个和用户使用该产品完全一样的环境中或相当于用户使用环境中,进行一步一步的安装操作性的测试验收测试&安装测试验收测试的目的是向未来的用户表明系统能够462.5软件测试的工作范畴2.5软件测试的工作范畴47作业Zhu.Kerry@第二章

4、5作业Zhu.Kerry@第二章4、548Q&AZhu.Kerry@Q&AZhu.Kerry@49软件测试方法和技术

-Ch.2软件测试的基本概念和方法Zhu.Kerry@Zhu.Kerry@朱少民KerryZhu软件测试方法和技术

-Ch.2软件测试的基本概念和方法50第一章回顾Zhu.Kerry@软件特点软件开发的模型原型模型改进的V模型增量模型和迭代模型XP模型…测试的重要性第一章回顾Zhu.Kerry@软件特点51第二章软件测试的基本概念和方法Zhu.Kerry@2.1软件质量就是客户的满意度2.2软件缺陷(Bug)是什么2.3软件测试的基本方法2.4软件测试的分类和阶段2.5软件测试的工作范畴第二章软件测试的基本概念和方法Zhu.Kerry@gmai52软件质量的内涵软件质量是客户满意度的体现客户+

质+量?Zhu.Kerry@软件质量的内涵软件质量是客户满意度的体现客户+质+53质量(Quality)质量是系统、部件或过程满足明确需求客户或用户需要或期望的程度不同IEEE<<StandardGlossaryofSoftwareEngineeringTerminology>>软件质量:软件产品具有满足规定的或隐含要求能力要求有关的特征与特征总和(ISO8492)软件质量:软件产品满足 使用要求的程度

Zhu.Kerry@质量(Quality)质量是系统、部件或过程满足Zhu.54软件质量范围-3AAccountability

(可说明性)–用户可以基于产品或服务的描述和定义进行使用.

(例如:

市场需求说明书,功能设计说明书.)Availability(有效性)–产品或服务对于99.999%客户总是有效的(例如:性能测试和恢复测试)Accessibility(易用性)–对于用户,产品或服务非常容易使用并且一定是非常有用的功能.(例如:确认测试和用户可用性测试)

Zhu.Kerry@软件质量范围-3AAccountability(可说明性55高质量的软件应该是相对的无产品缺陷(BugFree)或只有极少量的缺陷,它能够准时递交给用户并且所用的费用都是在预算内的并且满足客户需求,是可维护的。但是,有关质量的好坏最终评价依赖于用户的反馈。“客户”广义定义

:内在的定义:下一个环节/工序的接收者,更广的服务的对象,周围有任何联系或影响的团队、人。 软件的设计者,程序的检测者,项目管理者,品质管理人员…-广泛的定义:最终用户,客户管理,Zhu.Kerry@高质量的软件应该是相对的无产品缺陷(BugFree)或只有56软件质量不同的视点

先验论观点:质量是产品一种可以认识但不可定义的性质

用户观点:质量是产品满足使用目的之程度;

制造者的观点:质量是产品性能和规格要求的符合度

产品观点:质量是联结产品固有性能的纽带;

基于价值观点:质量依赖于顾客愿意付给产品报酬的数量Zhu.Kerry@软件质量不同的视点先验论观点:质量是产品一种可以认识但不可57高质量软件标准体系产品质量是人们实践产物的属性和行为,是可以认识,可以科学地描述的。并且可以通过一些方法和人类活动,来改进质量.质量模型:McCall模型,Boehm模型,ISO9126模型过程质量:

软件能力成熟度模型

CMM(CapabilityMaturityModel).

国际标准过程模型

ISO9000

软件过程改进和能力决断

SPICE(SoftwareProcessImprovementandCapabilitydEtermination)

在商业过程中有关的质量内容:

培训、成品制作、宣传、发布日起、客户、风险、成本、业务等

Zhu.Kerry@高质量软件标准体系产品质量Zhu.Kerry@gmail.c58产品质量的标准-功能性

Functionality-可用性

Usability(简单安装;轻松使用;友好界面)-可靠性

Reliability(用户使用的根本)-性能

Performance-容量

Capacity-可测量性

Scalability-可维护性

Servicemanageability-兼容性

Compatibility-可扩展性

ExtensibilityZhu.Kerry@产品质量的标准-功能性FunctionalityZhu.59软件质量特征(ISO9126)

功能:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能。

可靠:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性。

易用:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性。

效率:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性。

可维护:与进行指定的修改所需的努力有关的一组属性。

可移植:与软件从一个环境转移到另一个环境的能力有关的一组属性。

其中每一个质量特征都分别与若干子特征相对应。Zhu.Kerry@软件质量特征(ISO9126)功能:与一组功能及其指定60Boehm软件质量模型阐述性互用性数据公开性正确性可靠性效率完整性可用性可维护性可测试性灵活性可移植性重复性连贯性容错性执行效率/储存效率存取控制/存取检查可训练沟通良好简单性易操作的工具自我操作性扩展性一般性模块性软件系统独立性机器独立性通讯公开性正确性可操作性Zhu.Kerry@Boehm软件质量模型阐述性互用性数据公开性正确性可靠性效率61McCall模型设备独立性易更改可靠性效率总体效用易用性可维护性可测试性人体工程学可移植性易懂性精确性完整性完全性可说明性

设备功效易操作性沟通良好自我操作性架构性简明性易懂性可维护性模块独立性连续性Zhu.Kerry@McCall模型设备独立性易更改可靠性效率总体效用易用62软件过程质量软件能力成熟度模型CMM(CapabilityMaturityModel).国际标准过程模型ISO9000软件过程改进和能力决断SPICE(SoftwareProcessImprovementandCapabilitydEtermination)Zhu.Kerry@软件过程质量Zhu.Kerry@63质量保证的策略主要分三个阶段:

以检测为重:产品制成之后进行检测,只能判断产品质量,不能提高产品质量。

以过程管理为重:把质量的保证工作重点放在过程管理上,对制造过程中的每一道工序都要进行质量控制。

以新产品开发为重:在新产品的开发设计阶段,采取强有力的措施来消灭由于设计原因而产生的质量隐患。Zhu.Kerry@质量保证的策略主要分三个阶段:Zhu.Kerry@gmail64全面质量管理

(TQM)TQM=TotalQualityManagement全面质量管理

TQM是为了能够在最经济的水平上,并考虑到充分满足用户要求的条件下进行市场研究、设计、生产和服务,把企业内各部门研制质量、维持质量和提高质量的活动构成为一体的一种有效体系

TQM内容:全员参与质量管理全过程质量管理。

TQM的4个关键要素:关注客户过程改进质量的人性化因素度量(即模型的测量和分析)Zhu.Kerry@全面质量管理(TQM)TQM=TotalQualit65质量管理发展五个阶段1900手工操作者专职检验员1920过程统计技术1931全面质量管理1960以顾客为中心阶段时间2000Zhu.Kerry@质量管理发展五个阶段1900手工操作者专职检验员1920过程66什么是Bug?2.2软件缺陷(Bug)是什么Anyproblem/disfigurement/limitationinproductdesign&development

Featureorfunctioncan’tworkUnreasonabledesignPartlyrealizationinfunctionDataerrorRunerrorLimitationinfeaturesDifferencebetweenactualresultsandexpectedresultsUnfriendlyUI,LowperformanceOthers任何程序、系统中的问题,和产品设计书的不一致性,不能满足用户的需求

Zhu.Kerry@什么是Bug?2.2软件缺陷(Bug)是什么Anyp67问题出在哪里?项目没有被很好地理解;计划不周,最终导致进度拖延。没有充分的文档资料。人与人的交流比写程序困难得多。软件可靠性缺少度量的标准,质量无法保证。软件难以维护、不易升级。Zhu.Kerry@问题出在哪里?项目没有被很好地理解;计划不周,最终导致进度拖68解决问题的想法Bettermanagement管理Differentteamorganizations组织Betterlanguages&tools语言和工具Uniformcodingconventions编程惯例必须意识到:“软件”≠编程,它有自己的生命周期(lifecycle)。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。Zhu.Kerry@解决问题的想法Bettermanagement管理Zh69实践证明:对软件进行充分的测试 才能够有效的保证软件质量软件测试对软件产品进行充分测试,找出其中的缺陷(Bug),并进行修复(Fix)。Zhu.Kerry@实践证明:对软件进行充分的测试软件测试对软件产品进行充分测试70缺点(defect)偏差(variance)谬误(fault)失败(failure)问题(problem)矛盾(inconsistency)错误(error)毛病(incident)异常(anomy)缺陷-BugZhu.Kerry@缺点(defect)偏差(v71软件缺陷IEEE(1983)729软件缺陷一个标准的定义:从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。

软件缺陷的主要类型/现象:功能、特性没有实现或部分实现设计不合理,存在缺陷实际结果和预期结果不一致运行出错,包括运行中断、系统崩溃、界面混乱数据结果不正确、精度不够用户不能接受的其他问题,如存取时间过长、界面不美观Zhu.Kerry@软件缺陷IEEE(1983)729软件缺陷一个标准的定72Zhu.Kerry@软件缺陷的产生

技术问题算法错误,语法错误,计算和精度问题,接口参数传递不匹配团队工作误解、沟通不充分软件本身文档错误、用户使用场合(userscenario),时间上不协调、或不一致性所带来的问题系统的自我恢复或数据的异地备份、灾难性恢复等问题Zhu.Kerry@软件缺陷的产生技术问73软件缺陷构成Zhu.Kerry@软件缺陷构成Zhu.Kerry@74软件缺陷在不同阶段的分布Zhu.Kerry@在真正的程序测试之前,通过审查、评审会可以发现更多的缺陷。规格说明书的缺陷会在需求分析审查、设计、编码、测试等过程中会逐步发现,而不能在需求分析一个阶段发现软件缺陷在不同阶段的分布Zhu.Kerry@gmail.c75缺陷成本Zhu.Kerry@缺陷成本Zhu.Kerry@762.3软件测试的基本方法Zhu.Kerry@根据G.J.Myers观点--软件测试的目:

软件测试是为了发现错误而执行程序的过程一个好的测试能够在第一时间发现程序中存在的错误一个好的测试是发现了至今尚未发现的错误的测试。软件测试是质量控制的重要手段,保证客户拿到或用户使用高质量的软件产品2.3软件测试的基本方法Zhu.Kerry@gmail.co77软件测试误区误区一:如果发布出去的软件有质量问题,都是软件测试人员的错误区二:软件测试技术要求不高,至少比编程容易多了误区三:有时间就多测试一些,来不及就少测试一些误区四:软件测试是测试人员的事,与开发人员无关误区五:根据软件开发瀑布模型,软件测试是开发后期的一个阶段软件测试误区误区一:如果发布出去的软件有质量问题,都是软件78Zhu.Kerry@软件测试的原则所有测试的标准都是建立在用户需求之上。软件测试必须基于“质量第一”的思想去开展各项工作,当时间和质量冲突时,时间要服从质量。事先定义好产品的质量标准,只有有了质量标准,才能根据测试的结果,对产品的质量进行分析和评估。软件项目一启动,软件测试也就是开始,而不是等程序写完,才开始进行测试。穷举测试是不可能的。甚至一个大小适度的程序,其路径排列的数量也非常大,因此,在测试中不可能运行路径的每一种组合。Zhu.Kerry@软件测试的原则所有测试79Zhu.Kerry@软件测试的原则(2)第三方进行测试会更客观,更有效。软件测试计划是做好软件测试工作的前提。测试用例是设计出来的,不是写出来的,所以要根据测试的目的,采用相应的方法去设计测试用例,从而提高测试的效率,更多地发现错误,提高程序的可靠性。对发现错误较多的程序段,应进行更深入的测试。一般来说,一段程序中已发现的错误数越多,其中存在的错误概率也就越大。重视文档,妥善保存一切测试过程文档(测试计划、测试用例、测试报告等)Zhu.Kerry@软件测试的原则(2)80Zhu.Kerry@软件测试的原则(3)应当把“尽早和不断地测试”作为测试人员的座右铭回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见测试应从“小规模”开始,逐步转向“大规模”。不可将测试用例置之度外,排除随意性。必须彻底检查每一个测试结果。一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系对测试错误结果一定要有一个确认的过程。Zhu.Kerry@软件测试的原则(3)81测试方法黑盒子和白盒子静态的和动态的文档、代码审查数据输入边界条件法等价划分、数据流程图状态变换图逻辑路径法测试方法黑盒子和白盒子82黑盒子和白盒子功能测试数据驱动测试结构测试逻辑驱动测试

客户需求事件驱动输入输出黑盒子和白盒子功能测试结构测试客户需求事件驱动输入输出83静态的和动态的主持人作者记录员列席人员内审员技术专业人员用户代表不正式正式互审

走读审查会议运行程序静态的和动态的主持人作者记录员列席人员内审员技术专业人员用户84自动测试和手工测试手工模拟用户操作自动测试和手工测试手工模拟用户操作85验证和确认(V&V)

Verification

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论