软件质量与测试(讲座0506)课件_第1页
软件质量与测试(讲座0506)课件_第2页
软件质量与测试(讲座0506)课件_第3页
软件质量与测试(讲座0506)课件_第4页
软件质量与测试(讲座0506)课件_第5页
已阅读5页,还剩279页未读 继续免费阅读

下载本文档

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

文档简介

软件质量与测试杨根兴

博士、研究员

上海市计算机软件评测重点实验室主任上海软件质量管理联盟秘书长上海市软件质量专业技术职业资格专家委员会副主任中国软件测试外包促进会执行秘书长中国软件测评机构联盟副理事长软件质量与测试1早在1980年,在《BusinessWeek》杂志的首页上,显著地写着:“Software:TheNewDrivingForce”。事实表明计算机的软件是计算机应用的灵魂,是计算机普及的核心技术和关键技术。早在1980年,在《BusinessWeek》杂志的首页上2正如培根所说:

没有奋斗就没有人生!人是自己幸福的设计师。

“永远用炽热的、宝石般的火焰燃烧,并且保持这种高昂的境界,这便是人生的成功了”。

-一位古希腊哲人的话正如培根所说:3讲座内容:1软件质量概念2软件过程规范3软件项目管理4测试基本概念和方法5测试生存周期和测试质量6软件测试的例子7软件工程职业道德规范8结束语讲座内容:1软件质量概念41.1软件质量问题提出的挑战软件质量问题引发的事故:根据美国航空业的调查表明,由于软件质量问题导致的经济损失巨大:1996年损失6.4亿美元、1997年损失1.17亿美元、1998年损失2.55亿美元、1999年损失16亿美元。1993年伦敦附近核电站的反应堆内,由于计算机温度控制失灵,导致这个欧洲人口最为密集的地区遭受巨大灾难。后经查明,在反应堆的主要保护系统中,一段10万行代码的控制程序几乎有一半未能通过测试。海湾战争中,由于某个软件故障打乱了“爱国者”导弹的雷达跟踪系统,使导弹发射后未能迎击对方发射的“飞毛腿”导弹,反而轰击了自己的军营,造成28名士兵丧生,98名受伤。1.1软件质量问题提出的挑战软件质量问题引发的事故:51.1软件质量问题提出的挑战软件质量问题引发的事故:1996年欧洲航天局“阿丽亚娜5型(Ariane5)”火箭在发射40秒后爆炸,造成发射基地2名法国士兵当场死亡。致使耗资10亿美元,历时9年的欧洲航天计划严重受挫,震惊了整个国际航天界。1997年香港回归,香港新机场同时投入运营,然后因软件问题使新机场不能按要求运转,导致客货滞留,而因老机场已同时关闭也不能救援,造成相当大的损失。1.1软件质量问题提出的挑战软件质量问题引发的事故:61.1软件质量问题提出的挑战据美国计算机市场分析调查权威机构GartenerGroup统计,世界上仅有16.2%的应用系统较为完善和成功。正如Capers指出:“软件对于现代世界是如此重要,寻找降低失败概率并提高成功概率的途径,对于所有大型企业来说都是很有价值的。”1.1软件质量问题提出的挑战据美国计算机市场分析调查权威7软件项目成功率调查:Cancelled29%51-100%Late9%101-200%Late16%Morethan200%Late6%On-Time26%21-50%Late8%Lessthan20%Late6%ProjectResolutions软件项目成功率调查:Cancelled29%51-10081.2软件质量管理成当务之急建立健壮的中国软件工业;软件业正成为国家新兴的支柱产业;参与国际竞争的急需;全球IT人员的短缺和全球分布开发的出现,为中国软件出口带来新的机遇;软件工程正成为一个特殊的重要行业;

1.2软件质量管理成当务之急91.2软件质量管理成当务之急不成熟软件企业的特性没有确定的过程,随意性强,各自一套;差的项目管理,不现实的进度计划;经常危机失败,超时超预算,救火式管理;质量要求常让位与进度要求;把编程和测试放在第一位;不适当的变化控制;成功靠运气和‘英雄’,缺乏组织保证,难以重复;1.2软件质量管理成当务之急不成熟软件企业的特性101.2软件质量管理成当务之急成熟软件企业的特性软件开发和维护,遵循计划规定的过程;严格的项目管理按合理估算的计划监控;贯彻软件质量保证;重视需求分析和设计,强调客户满意;有变化控制和配置管理;进度和成本控制有保证,项目的成功依靠组织架构的支持,有较好重复性;1.2软件质量管理成当务之急成熟软件企业的特性111.3软件质量概念质量的定义一个系统、构件或过程满足具体要求的程度;(CMM)一个系统、构件或过程满足顾客或用户需求与期望的程度;(IEEE)一组固有特性满足要求的程度;(ISO9000)特性-可区分的特征,如:物理的、感官的、行为的、时间的、人体工效的、功能的。要求-明示的、通常隐含的或必须履行的需求或期望。1.3软件质量概念质量的定义121.3软件质量概念软件自身的特点抽象性:存储在介质上的信息。复杂性:软件内部结构复杂,有人说软件是人类创造的最为复杂的实体。多样性:没有完全相同的软件。易变性:软件在开发过程以及交付使用后常常会出于各种原因而修改。软件需求难于把握。1.3软件质量概念软件自身的特点131.3软件质量概念用户眼中的软件质量(1)软件能做的事正是我所要的。(2)操作中感到系统响应迅速、及时。(3)系统提供的Help信息非常好用、容易掌握。(4)使用中没有发现缺陷或隐错(bug)。(5)手册编写得好用,使用方便。(6)产品交付得很及时,没有出现拖延情况。(7)价格不算贵。(8)即使软件运行中出现了问题,很容易修复。1.3软件质量概念用户眼中的软件质量141.3软件质量概念技术人员眼中好的软件在技术上没有差错;开发过程符合标准或规范的要求(如果不遵循这些规范,软件质量低是必然结果);具有良好的编程风格;文档编制,特别是规格说明编写完整、准确,使得系统易于维护。1.3软件质量概念技术人员眼中好的软件151.3软件质量概念关键软件(criticalsoftware)的特点对于表明软件能否正常、稳定工作的可靠性等质量特性要求高。这些软件常与完成重要功能的大系统的处理部件相联。这些软件含有对以下各项造成影响的程度:人员或公众的安全设备或设施的安全环境的质量国务活动或军务活动数据、通讯或实体的机密1.3软件质量概念关键软件(criticalsoftw161.4解决软件质量问题的途径评价软件质量(内部、外部、使用)1.4解决软件质量问题的途径评价软件质量(内部、外部、使171.4解决软件质量问题的途径(1)理清影响软件质量的环节、方面、因素;(2)深刻理解软件工程的原则;(3)培养和提高人员的质量意识;(4)采用先进的软件工程技术;(5)加强过程质量控制,持续改进软件过程;(6)把好软件测试环节;1.4解决软件质量问题的途径(1)理清影响软件质量的环节18软件质量保障的手段目前,提高软件产品的质量主要有二个途径:一个是寻求改进软件开发过程质量的方法,以ISO9000-3、Bootstrap、SPICE(ISO/IEC15504)和CMU/SEI提出的软件成熟度模型CMM和CMMI为主要代表,从规范软件过程出发,持续改进软件过程,来保证软件产品开发的质量;另一个是对开发完成的产品进行测试和评价,以对软件产品进行测试和评价为代表,用以验证所开发的软件产品符合规定的要求。软件质量保障的手段目前,提高软件产品的质量主要有二个途径:19需求分析设计走查概要设计设计评审详细设计编码代码走查单元测试集成测试确认测试测试评审需求评审测试策划软件质量保障的手段通过软件评审:发现程序中的缺陷需求分析设计走查概要设计设计评审详细设计编代码走查单元测试集20PhaseThata

DefectIsCreatedCosttoCorrectRequirementsArchitectureDetaileddesignConstructionRequirementsArchitectureDetailed

designConstructionRelease50-200X1XPhaseThataDefectIsCorrected50-200X1X及早纠正大部分的缺陷FixHereNotHerePhaseThata

DefectIsCreate21PhaseThata

DefectIsCreatedCosttoCorrectRequirementsArchitectureDetaileddesignConstructionRequirementsArchitectureDetailed

designConstructionRelease10X?1XPhaseThataDefectIsCorrected10X?1X降低缺陷排除的成本PhaseThata

DefectIsCreate22讲座内容:1软件质量概念2软件过程规范

3软件项目管理4测试基本概念和方法5测试生存周期和测试质量6软件测试的例子7软件工程职业道德规范8结束语讲座内容:1软件质量概念23质量管理主要涉及三方面的问题规范化、量化和固化:1)规范化就是按照ISO9001标准建立一套适合软件开发的质量管理体制,同时引入CMM中的相关关键过程作为规范管理的手段;2)量化就是要采用基于事实的决策方法,收集数据进行量化分析,实现质量管理的反馈控制;(3)固化就是要建立一套行之有效的文件化程序,使得企业无论在什么地方、由什么人管理,都要按照统一的模式去实施。质量管理主要涉及三方面的问题规范化、量化和固化:24软件质量与测试(讲座0506)课件25ISO9001:2000版目录ISO9001:2000版目录26国际标准ISO/IEC12207

信息技术-软件生存周期过程文档编制配置管理质量保证验证过程确认过程联合评审审核过程问题解决管理过程基础设施改进过程培训过程获取过程供应过程开发过程运行过程维护过程基本过程(5)支持过程(8)组织过程(4)国际标准ISO/IEC12207

信息技术-软件生存周期27国际标准ISO/IEC12207

信息技术-软件生存周期过程(基本)国际标准ISO/IEC12207

信息技术-软件生存周期28国际标准ISO/IEC12207

信息技术-软件生存周期过程(支持)国际标准ISO/IEC12207

信息技术-软件生存周期29国际标准ISO/IEC12207

信息技术-软件生存周期过程(组织)国际标准ISO/IEC12207

信息技术-软件生存周期30Level1初始级不一致的管理Level2可重复级项目管理Level3已定义级过程管理Level4已管理级能力管理Level5优化级变更管理可重复实践通用工程过程定量理解和控制持续改进实践软件CMMLevel1不一致的Level2项目Level3过程L31CMMV1.1关键过程域等级关键过程域5优化缺陷预防技术变更管理过程变更管理4已管理定量过程管理软件质量管理3已定义组织过程焦点组织过程定义集成软件管理软件产品工程组间协调培训大纲同行评审2可重复软件需求管理软件项目策划软件计划跟踪软件分包管理软件质量保证软件配置管理CMMV1.1关键过程域等级关键过程域5优化32ISO9001与CMM的关系最大的相似点:

(1)“言所行、行所言”

(2)强调管理、过程、规范化和文档化不同点:

(1)CMM把焦点严格对准软件

(2)ISO9001的范围包括:

硬件、软件、流程性材料和服务两者之间的联系:

(1)CMM2级与ISO9001强相关

(2)CMM的每个关键过程域至少按某种解释与ISO9001弱相关ISO9001与CMM的关系最大的相似点:

(1)“言所行、33过程复杂度1,000-5,000独立的程序员5,000-25,000小规模的团队25,000-100,000大规模内部细分的团队或部门100,000-1,000,000多个团队1,000,000-10,000,000多个公司10,000,000-100,000,000国家级企业代码行数实现者过程复杂度1,000-5,00034企业的业务流程从接单-开发-验收-交货如何识别客户需求?如何控制客户需求的变更?如何满足客户的需求?相应的组织架构和岗位职责。企业的业务流程从接单-开发-验收-交货35项目的开发流程项目的组织和管理方式项目开发划分几个阶段?每个阶段谁负责?谁复审?每个阶段的输入和输出是什么?如何控制设计的变更?项目的开发流程项目的组织和管理方式36影响软件质量的因素与软件产品质量有关的四方面因素:产品质量过程质量开发技术人员因素成本

时间、进度影响软件质量的因素与软件产品质量有关的四方面因素:产品质量过37基线(baseline)是软件生存期各开发阶段末尾的特定点。它的作用是把各阶段的开发工作分得更加明确,便于检验与确认。基线与变更管理计划需求分析设计编码测试项目开

发计划需求规格说明设计规格说明程序清单测试报告计划基线需求基线设计基线编码基线测试基线基线(baseline)是软件生存期各开发阶段末尾的特定点。38软件需求管理需求可分为三类:用户需求CR用户要求的陈述技术需求TR满足用户需求的技术功能和质量属性

项目需求PR用于项目计划和跟踪行为软件需求管理需求可分为三类:39需求管理主要涉及三个方面:需求确定的管理可映射到软件开发过程中的需求分析阶段。需求实现的管理涉及到软件开发过程中的设计、编码和确认阶段。需求变更的管理主要涉及分配需求的更改活动软件需求管理需求管理主要涉及三个方面:软件需求管理40顾客满意度很不满意:失望完全未做全部达到明示的未明示的基本需求预期需求未明示的兴奋的经历很满意日本KANO模型顾客满意的三个层次:基本需求(未明示)预期需求(明示的)超越需求(未明示)顾客满意度很不满意:失望完全未做全部达到明示的未明示的基本需41需求分析阶段:保证需求是清晰的、明确的、有意义的、可测量的,并可用于开发和测试。保证技术需求能充分地覆盖和分解用户需求。划分需求,找出其中的不足和不完善的地方。区分需求的优先级,更新需求说明书。审核、批准需求说明书(用户参加),作为软件开发和项目管理的基础。此时每一个需求的状态是“批准的”。需求确定的管理需求分析阶段:需求确定的管理42需求实现的管理设计和编码阶段:根据需求说明书,审核、批准和提交项目计划;根据需求进行设计、评审设计和检查设计。编码产生的代码和文档,必须满足需求。验收阶段:软件计划、工作产品和项目活动是否随需求的变更而变更。需求实现的管理设计和编码阶段:43需求变更是从需求说明书生效开始;变更必须在相关的计划、设计和交付中反映出来;需求变更的情况:放弃一个需求;删除一个需求;增加一个需求;改变一个需求;需求变更的管理需求变更是从需求说明书生效开始;需求变更的管理44软件配置管理1.什么是软件配置管理?

标识和确定系统中软件配置项的过程,在系统整个生存周期内控制这些项的投放和更动,记录并报告配置的状态和更动要求,验证配置项的完整性和正确性。2.什么是软件配置项?

为了配置管理的目的而作为一个单位来看待的硬件或软件成分。软件配置管理1.什么是软件配置管理?

标识和确定系统中软45软件配置项,可包括:(1)与合同、源代码、过程、计划和产品有关的文档及数据。(2)目标代码和可执行代码,数据库。(3)相关产品:软件工具、包括库在内的可复用软件、外购软件、顾客提供的软件。(4)测试用例等。软件配置管理软件配置项,可包括:软件配置管理46软件配置管理的任务:(1)制订配置管理计划;(2)确定配置标识(配置项、命名规则);(3)进行配置控制,实施变更管理(基线)(4)记录并报告配置状态(标识、版本号)(5)配置评价(确保软件项功能和物理的完整性);(6)发行管理和交付(给分配客户版本号)软件配置管理软件配置管理的任务:软件配置管理47讲座内容:1软件质量概念2软件过程规范

3软件项目管理4测试基本概念和方法5测试生存周期和测试质量6软件测试的例子7软件工程职业道德规范8结束语讲座内容:1软件质量概念48项目管理过程制定计划—执行计划—实现项目目标建立一个基准计划:清晰地定义项目目标;分解项目—子项目(或子任务);界定必须执行的具体活动;以网络图的形式图示描绘活动(次序与相互依赖性);时间预算、成本预算;估算项目进度计划及预算。项目管理过程制定计划—执行计划—实现项目目标49项目成功的关键因素最重要的10大因素:1)清楚地界定目标及项目任务;2)高层管理者的支持;3)有能力的项目经理;4)有能力的项目团队;5)充足的资源;6)客户的参与协商;7)良好的沟通;8)对客户的积极反应;9)适当的监控和反馈;10)正确的技术;项目成功的关键因素最重要的10大因素:50软件项目计划过程软件需求软件开发计划SDP预估规模、成本和工作量确定活动日程设计编码测试识别软件工作产品定义软件生命周期软件产品软件项目计划过程软件需求软件开发计划SDP预估规模、成本和工51软件项目计划的实现过程计划初始阶段制定SDP审核、批准SDP实施SDP过程度量和评价修改SDP需求管理软件大小、成本、日期估计软件配置管理(SCM)软件质量保证(SQA)软件项目跟踪和监控软件项目计划的实现过程计划初始阶段制定SDP审核、批准SDP52项目组角色项目经理开发经理计划经理质量/生产经理技术支持经理项目组角色项目经理53项目经理职能1)负责制定项目/产品开发策略;决定开发模式与开发方法;2)负责制定开发计划并监督实施;3)负责实现全部产品;4)负责制定出集成和系统测试计划;5)负责制定测试大纲并且进行测试;6)负责制定产品的用户文档;7)充当开发工程师;项目经理职能1)负责制定项目/产品开发策略;决定开发模式与开54开发经理职能1)领导项目组制定开发策略;2)领导项目组给要生产的产品(项目)制定最初

的大小和时间估计;3)领导进行软件需求细节的开发;4)领导项目组制定出高水平设计;5)领导项目组制定出软件设计细节;6)领导项目组实现这个产品;7)领导项目组制定出建立、集成和系统测试计划;8)领导项目组制定测试材料并且进行测试;9)领导项目组制定产品的用户文档;10)参与制定开发周期报告;11)充当开发工程师。开发经理职能1)领导项目组制定开发策略;55计划经理职能1)领导项目组产生下一开发周期的任务计划;2)领导项目组产生下一开发周期的日程表;3)领导项目组产生平衡的小组发展计划;4)对照计划跟踪小组的进展情况,获得项目

组成员每周的数据;5)参与产生开发周期报告;6)充当开发工程师。计划经理职能1)领导项目组产生下一开发周期的任务计划;56质量/生产经理职能1)领导项目组制定和跟踪质量计划;2)将质量问题及时警示给项目组领导和开发

部主管;3)领导项目组定义和文档化它的过程并且维

持过程改进过程;4)建立和保持项目组开展标准和系统词汇表;5)在提交配置控制委员会之前符合和通过所

有的产品;6)充当项目组检查调节员;7)充当项目组会议记录者;8)参与制定本开发周期报告;9)充当开发工程师。质量/生产经理职能1)领导项目组制定和跟踪质量计划;57支持经理职能1)领导项目组安排必要的工具与设备;2)主持配置控制委员会,管理更新控制系统;3)管理配置管理系统;4)维护系统词汇表;5)处理项目组的问题和风险跟踪;6)成为项目组复用的提倡者;7)参与制作本开发周期报告;8)充当一个开发工程师。支持经理职能1)领导项目组安排必要的工具与设备;58采用量化和统计技术,持续改进软件过程采用量化和统计技术,59过程的性能改进三角波动周期时间产出多快多少多接近目标值过程的性能改进三角波动周产多快多少多接近目标值60建立质量体系的精髓“凭依据、讲证据”凡事有章可循,凡事有据可查,凡事有人负责,凡事有人监督。建立质量体系的精髓“凭依据、讲证据”61Motorola的软件过程缺陷预防前后的对比由于编程是个人行为,单靠软件过程的控制解决软件编码的缺陷还很有限,更显得软件测评是不可或缺的关键环节。Motorola的软件过程缺陷预防前后的对比由于编程是个人行62讲座内容:1软件质量概念2软件过程规范

3软件项目管理4测试基本概念和方法5测试生存周期和测试质量6软件测试的例子7软件工程职业道德规范8结束语讲座内容:1软件质量概念634.1测试规范定义测试定义(J.Myers)测试是为发现错误(缺陷)而执行程序的过程,其目的是发现软件中的错误。好的测试用例能有效地发现别的测试用例未发现的错误(缺陷);成功的测试是发现了未曾发现的错误(缺陷);测试是为了发现软件中的错误,而不能证明软件没有错误;4.1测试规范定义测试定义(J.Myers)644.1测试规范定义软件生存期的各个阶段都可能引入错误。而软件需求分析、设计和编码阶段是软件的主要错误来源。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。目标:提高软件的质量4.1测试规范定义软件生存期的各个阶段都可能引入错误。而65引入错误的可能途径需求规约说明设计编码测试缺陷分类缺陷隔离缺陷解决错误错误错误错误缺陷缺陷缺陷事故修复引入错误的可能途径需求规设计编码测试缺陷分类缺陷隔离缺陷解决66软件测试的目的验证用户需求发现软件缺陷改进开发过程软件测试的目的验证用户需求发现软件缺陷改进开发过程67尽早地和不断地进行软件测试避免测试自己的程序执行测试计划,排除随意性增量测试,由小到大周密的测试用例(输入条件(合理、不合理)、预期输出结果)回归测试-软件经过修改后必须重新测试缺陷统计和分析4.2测试基本概念-软件测试原则越早测试越好尽早地和不断地进行软件测试4.2测试基本概念-软件测试原则68测试与软件开发各阶段的关系概要设计说明书详细设计说明书源程序代码单元测试集成测试确认测试需求分析说明书需求分析设计编码确认测试集成测试单元测试测试与软件开发各阶段的关系概要设计详细设计源程序单元集成确认694.3测试的对象软件测试应贯穿于软件定义与开发的整个期间。软件测试包括:程序+文档测试对象:新开发软件现货软件定制软件现存软件(主要指正在使用的软件)基于计算机系统的软件(如:嵌入式软件)4.3测试的对象软件测试应贯穿于软件定义与开发的整个期间。704.3测试的对象新开发软件的测试:贯穿软件开发全过程的测试关注软件的内部质量和外部质量特性测试重点:验证所开发的软件能够满足特定用户或应用领域的明确和隐含的需求在软件开发的早期、中期和后期,验证软件的功能和性能4.3测试的对象新开发软件的测试:714.3测试的对象现货软件的测试:在获取商品化软件时的测试关注软件的使用质量特性测试重点:比较选择价格性能比高的商品软件验证该软件所提供的功能和性能验证该软件的运行环境和接口要求明确该软件的维护要求4.3测试的对象现货软件的测试:724.3测试的对象定制软件的测试:在验收定制软件时的测试。一般由用户或委托第三方在用户环境中进行测试关注软件的使用质量特性测试重点:验证合同和用户需求说明书的符合性4.3测试的对象定制软件的测试:734.3测试的对象现存软件的测试:为了确认现存软件的符合性而进行的测试关注现存软件与将来业务目标的差距测试重点:确认可以沿用或必须更新的部件,为制订该软件新的应用计划或研制新的替代部件提供依据4.3测试的对象现存软件的测试:744.3测试的对象基于计算机系统的软件的测试把软件集成到基于计算机的系统时,对该软件进行的测试关注软件与基于计算机系统其它成份之间的接口测试重点:测试软件与所依存周境(Context)的一致性验证软件与系统需求的符合性4.3测试的对象基于计算机系统的软件的测试754.3测试的对象测试软件的用户文档(GB/T17544条款)3.2.1完整性用户文档应包含产品使用所需信息。3.2.2正确性用户文档中所有信息应是正确的,不能有歧义和错误的表达。3.2.3一致性用户文档自身内容或相互之间以及与产品描述之间都不应相互矛盾。每个术语的含义宜处处保持一致。3.2.4易理解性用户文档对于正常执行其工作任务的一般用户宜是易理解的。3.2.5易浏览性用户文档宜易于浏览,使相互关系明确。每个文档应有目录和索引表。4.3测试的对象测试软件的用户文档(GB/T17544764.4软件缺陷排除通过软件测试:发现程序中的缺陷测试数据被测程序比较结果数据预期数据相符不符审核缺陷接受4.4软件缺陷排除通过软件测试:发现程序中的缺陷测试被测程774.5软件测试基本方法白盒测试黑盒测试两种测试方法从不同的角度出发,反映了软件的不同侧面。4.5软件测试基本方法白盒测试黑盒测试两种测试方法从不同78白盒测试白盒测试又称结构测试、逻辑驱动测试或基于程序本身的测试。Begin…ifa>bthena=a-belsea=b-a…End白盒测试白盒测试又称结构测试、逻辑驱动测试或Begin79黑盒测试输入输出黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试。黑盒测试输入输出黑盒测试又称功能测试、数据驱动测试或80软件测试的一般流程集成测试确认测试系统测试单元测试被测模块单元测试被测模块单元测试被测模块已集成的软件已确认的软件可交付的软件测试通过的模块设计信息软件需求系统其它元素软件测试的一般流程集成确认系统单元被测模块单元被测模块单元被814.6软件测试阶段-单元测试单元测试又称为模块测试,是针对软件结构中独立的基本单位进行测试。软件单元测试的目的是检测程序单元对《详细设计说明书》的符合程度;单元测试的依据是《详细设计说明书》和《单元测试计划》。单元测试时,测试用例由测试工程师编制,测试人员针对程序单元进行多次循环反复的测试,产生测试结果记录,并形成《软件测试报告》。4.6软件测试阶段-单元测试单元测试又称为模块测试,是针824.6软件测试阶段-单元测试单元测试,unittesting,独立的软件单元或相关单元组的测试。通常单元测试是在编码阶段进行的。在源程序代码编制完成并确认没有语法错误后,可以进行单元测试;4.6软件测试阶段-单元测试单元测试,unittest83单元测试的步骤通常单元测试是在编码阶段进行的。在源程序代码编制完成后,经过评审和验证,确认没有语法错误之后,就开始进行单元测试的测试用例设计。(1)驱动模块:相当于被测模块的主程序。(2)桩模块:也叫做存根模块。用以代替被测模块调用的子模块。单元测试的步骤通常单元测试是在编码阶段进行的。在源程序代码编84单元测试的环境测试用例驱动模块桩模块2被测模块测试结果桩模块1桩模块n单元测试的环境测试用例驱动模块桩模块2被测模块测试结果桩模块85单元测试4单元测试n单元测试阶段单元测试1单元测试2单元测试3单元测试4单元测试n单元测试阶段单元测试1单元测试2单元测试864.6软件测试阶段-集成测试集成测试,integrationtesting,把软件部件、硬件部件或两两组合起来进行的测试,并通过测试评价它们之间的交互。软件集成测试又称组装测试,即对程序模块采用自顶向下或自底向上组装起来,对系统中模块之间的接口进行正确性检验的测试工作。软件集成测试由项目经理组织软件测试工程师依据《概要设计说明书》和《集成测试计划》进行。测试人员应提交针对软件集成测试的《软件测试报告》,项目经理负责对软件集成测试结果的进行确认。4.6软件测试阶段-集成测试集成测试,integrati87集成测试需要考虑的问题集成测试,通常是在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:(1)在把各个模块连接起来的时候,穿越模块接

口的数据是否会丢失;(2)一个模块的功能是否会对另一个模块的功能

产生不利的影响;(3)各个子功能组合起来,能否达到预期要求的

父功能;(4)全局数据结构是否有问题;(5)单个模块的误差累积起来,是否会放大,从

而达到不能接受的程序。集成测试需要考虑的问题集成测试,通常是在单元测试的基础上,需88集成的方法一次性组装方法叫做整体拼装。使用这种方式,首先对每个模块分别进行单元测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。增殖式组装方法这种组装方式又称渐增式组装,是首先对一个个模块进行模块测试,然后将这些模块依次逐步组装成较大的系统,在组装的过程中边连接边测试,以发现连接过程中产生的问题。集成的方法一次性组装方法89增殖式组装的几种方式(1)自顶向下的增殖方式:是一种日益为人们广

泛采纳的组装软件途径,深度优先和广度优先;(2)自底向上的增殖方式:总能得到下层模块的处理功

能支持,所以不需要存根程序;(3)混合增殖式测试;对软件中、上层使用自顶向下,

对软件的中下层采用自底向上;增殖式组装的几种方式(1)自顶向下的增殖方式:是一种日益为人90集成测试阶段单元测试单元测试单元测试单元测试单元测试集成测试集成测试阶段单元测试单元测试单元测试单元测试单元测试集成测试914.6软件测试阶段-确认测试确认,validation,在开发过程期间或结束时对系统或部件进行评价,以确定它是否满足特定的需求的过程。确认测试的任务是验证软件的功能和性能及其他特性是否与用户的要求一致,用户的要求在软件需求规格说明中已经明确规定。4.6软件测试阶段-确认测试确认,validation,92确认测试的步骤选择测试人员设计测试用例软件计划实际运行测试用户文档开发文档源程序文本支持环境有效性测试软件配置审查管理机构裁决专家鉴定会测试报告软件配置交用户运行维护确认测试的步骤选择测试人员设计测试用例软件计划实际运行测试用93有效性测试通常采用黑盒测试的方法,由开发方组织,用户代表参加,验证被测软件是否满足需求规格说明书所列出的需求。在全部的测试用例运行完后,所有的测试结果可以分为两类:(1)测试结果与预期的结果相符。(2)测试结果与预期的结果不符。有效性测试通常采用黑盒测试的方法,由开发方组织,用户代表参加94软件配置复查软件配置复查的目的是保证软件配置的所有成分都齐全;各方面的质量都符合要求;具有维护阶段所必需的细节;而且已经编排好分类的目录。软件配置复查软件配置复查的目的是保证软件配置的所有成分都齐全954.6软件测试阶段-α测试和

β测试α测试,alphatesting,在开发机构内进行的模拟测试或实际运行测试,与软件开发者并无太多关系。α测试是由外部用户在开发环境下进行的测试,也可以是软件机构内部的用户在模拟实际操作环境下进行的测试。α测试的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。β测试,betatest,产品发布前的系统测试形式。一组有代表性的用户和消费者在典型操作条件下尝试做常规使用。β测试与α测试不同的是,开发者通常不在测试现场。4.6软件测试阶段-α测试和964.6软件测试阶段-系统测试系统测试,systemtesting,在完整的、集成的系统上的测试行为,它用以评价系统与规定的需求的遵从性。注:测试在那些仅在整个系统中才呈现出来的能力和特性上进行。系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起测试;在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。4.6软件测试阶段-系统测试系统测试,systemte97系统测试阶段系统测试系统测试阶段系统测试98系统测试的15种测试类型(1)功能测试:目标中的功能是否真正实现了。批量测试:企图证明程序不能处理目标中指出的大批数据;强度测试:让程序在高负荷情况下运行;可用性测试:界面友好、错误信息简明易懂;安全性测试:设法破坏程序的保密检查;系统测试的15种测试类型(1)功能测试:目标中的功能是否真正99性能测试:在一定工作负荷和配置条件下,系统响应时间及处理速度;存储量测试:测试程序所占用的内外存容量(静/动态);配置测试:至少每一类和最大最小的设备配置情况都要测试;兼容/变换测试:对现有程序进行修改和补充后,要进行此类测试;可安装性测试:测试系统的安装过程;系统测试的15种测试类型(2)性能测试:在一定工作负荷和配置条件下,系统响应时间及处理速度100可靠性测试:如平均无故障时间(MTTF),需要模拟运行环境;恢复测试:测试系统出错后如何恢复正常工作的;可维护性测试:对维护过程和难易程度进行测试;文档测试:审查文档的正确性,对文档中的每个例子都要作为测试用例;工序测试:测试操作工序的次序正确性;系统测试的15种测试类型(3)可靠性测试:如平均无故障时间(MTTF),需要模拟运行环境;1014.6软件测试阶段-验收测试验收测试,acceptancetesting,a.确定一系统是否符合其验收准则,使客户能确定是否接受此系统的正式测试。b.使用户、客户或其他授权实体确定是否接受系统或部件的正式测试。在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。验收测试是以用户为主的测试。项目经理负责组织验收组进行最终验收测试。验收组应由项目组成员、用户代表、相关专家等组成。验收测试原则上在顾客所在地进行,但如经顾客同意也可以在公司内模拟用户环境进行。验收测试根据合同、《需求规格说明书》或《验收测试计划》对成品进行验收测试。对通过验收测试的软件产品应定义发布的软件版本号。4.6软件测试阶段-验收测试验收测试,acceptanc102回归测试回归测试,regressiontesting,系统或部件选择的重新测试,用以验证修改未引起不希望的有害效果,或证明修改后的系统或系统部件仍满足规定的需求。回归测试回归测试,regressiontesting,系统103回归测试单元测试子系统测试集成测试系统测试回归测试回归测试单元测试子系统测试集成测试系统测试回归测试104测试阶段与测试方法之间的关联一种测试阶段可以运用多种不同的测试方法(种类)一种测试方法(种类)也可以适用于多种测试阶段测试阶段与测试方法之间的关联一种测试阶段可以运用多种不同的测105讲座内容:1软件质量概念2软件过程规范

3软件项目管理4测试基本概念和方法5测试生存周期和测试质量6软件测试的例子7软件工程职业道德规范8结束语讲座内容:1软件质量概念1065.1测试生存周期测试计划测试设计测试开发测试执行测试评估风险评估5.1测试生存周期测试计划测试设计测试开发测试执行测试评1075.1测试生存周期-风险评估国际上关于测试投诉的案件在不断上升。特别是对关键软件(如:军事软件、政府要害部门软件、大型实时控制软件等)的测试,必须进行风险评估。评估的主要方面有:对被测软件的领域是否了解?对被测软件的测试目标能否把握?对被测软件的架构和采用的技术是否熟悉?执行测试的人员的能力是否具备?需要的测试工具和环境能否获取?是否有相关的经验可以复用?风险评估后的对策,包括不承担,或预防风险的措施等。5.1测试生存周期-风险评估国际上关于测试投诉的案件在不1085.1测试生存周期-测试计划软件测试计划有多种类型,例如:确认测试计划集成测试计划单元测试计划性能测试计划验收测试计划……5.1测试生存周期-测试计划软件测试计划有多种类型,例如1095.1测试生存周期-测试计划

测试计划的任务:确定测试需求确定测试过程及活动确定测试方法确定测试检查方法资源估算制定进度撰写测试计划5.1测试生存周期-测试计划

测试计划的任务:确定测试1105.1测试生存周期-测试计划

测试计划基本要素:(1)目的(2)测试对象(3)测试类型(4)测试范围(5)测试过程(6)资源需求(硬件、软件、人力)(7)文档的检验(8)进度安排(9)测试开始、结束准则(10)测试记录(11)缺陷跟踪(12)回归测试的方法(13)测试的评估……5.1测试生存周期-测试计划

测试计划基本要素:(101115.1测试生存周期-测试设计根据测试目标和计划,进行测试用例设计根据不同的测试阶段,可以有:单元测试用例集成测试用例确认测试用例系统测试用例验收测试用例5.1测试生存周期-测试设计根据测试目标和计划,进行测试1125.1测试生存周期-测试开发分析被测软件的特性,根据设计的测试用例,进行测试代码的开发、数据的准备等。测试代码的开发:设计驱动模块、桩模块等测试数据准备:如产生数据库中的记录测试脚本编制:包括:测试的输入、操作流程、输出的期望结果。5.1测试生存周期-测试开发分析被测软件的特性,根据设计113测试代码的开发进行单元测试与集成测试时需要编制:设计驱动模块,以解决:驱动被测程序;传递测试数据;设计桩模块,以解决:被测模块的调用和返回;一般情况下,只要设计一个“伪模块”,即只有入口和出口,没有其他语句的模块。测试代码的开发进行单元测试与集成测试时需要编制:114测试数据准备产生数据库中的记录:为了表明软件运行的正确性,需要准备一组可以验证的数据;为了验证软件的性能,需要的大批量数据,可以设计数据发生器自动生成大批量的数据。为使被测软件正常运行所需的初始化数据;软件用户的数据;……测试数据准备产生数据库中的记录:115测试脚本编制测试脚本(testscript),以文件形式保存具有正规语法的数据和/或指令,通常用于自动执行的测试工具中。测试脚本可以实现一个或多个测试用例、导航、设置或清楚设置及比较。用于手工测试执行的测试脚本为测试过程的策划,即将测试用例和测试顺序,进行集成,编制测试脚本。包括:测试的输入、操作流程、输出的期望结果等。测试脚本编制测试脚本(testscript),以文件形式保1165.1测试生存周期-测试执行设置并确认测试环境,记录环境配置情况;安装被测软件系统,记录安装步骤;按照设计的测试脚本(流程)执行测试:记录每一步测试的结果;特别要记录出现异常的情况,硬拷贝出错的画面;记录测试环境异常情况;……5.1测试生存周期-测试执行设置并确认测试环境,记录环境1175.1测试生存周期-测试评估评估测试的步骤是否按计划进行?评估测试的有效性如何?评估测试的覆盖率情况;评估测试用例的通过率;评估测试的结果与测试的目标一致性;分析软件缺陷的严重性和缺陷的分布情况;决策是否要进行复测或回归测试;……5.1测试生存周期-测试评估评估测试的步骤是否按计划进行118结果分析、出错等级(举例)5级:灾难性的—系统崩溃、数据被破坏4级:很严重的—数据被破坏3级:严重的—特性不能运行,无法替代2级:中等的—特性不能运行,可替代1级:烦恼的—提示不正确,报警不确切0级:轻微的—表面化的错误,拼写错等结果分析、出错等级(举例)5级:灾难性的—系统崩溃、数据被破1195.2测试质量提高软件测试质量的一般方法有:设计的测试方法应该进行复审,并征得客户同意。避免自己测试自己开发的软件;提高测试人员的水平,必要时应进行针对性培训,或邀请领域专家参与。执行测试时应采用A、B角,A测试,B监督。切实按照设计的流程进行测试,避免随意性。开发出有效的能发现错误的测试用例。5.2测试质量提高软件测试质量的一般方法有:120讲座内容:1软件质量概念2软件过程规范

3软件项目管理4测试基本概念和方法5测试生存周期和测试质量6软件测试的例子7软件工程职业道德规范8结束语讲座内容:1软件质量概念121测试例子:用户接口测试以用户的心态去使用被测软件:“千方百计找到一条路,证明软件是有缺陷的”

10个攻击测试策略测试例子:用户接口测试以用户的心态去使用被测软件:122攻击1:应用输入强制产生

所有错误信息

前提:有效软件的特点应该能避免不正确的输入或对不正确的输入做出适当反应。(软件人员往往会忽略)方法:给出一组不正确的输入来测试应用程序;(重点是在错误值输入上)编程技术:过滤错误的输入、一旦出现错误输入应显示错误信息(if-then-else)、异常处理(清除不良输入的结果);目标:每个错误信息至少看到一次;注意:出错信息的表达,也会影响软件产品的可信度,如“Error—UnkownData”用例考虑:键入无效类型、超过规定长度、边界值、yes/No…攻击1:应用输入强制产生

所有错误信息前提:有效软件123基本数据类型的边界值1.2e-38~3.4e+382.2e-308~1.8e+3083.4e-4932~1.1e+49324B8B10B浮点数

真或假

1B布尔型

256个不同的值

65535个不同的值

1B2B字符型

-32768~32767-2147483648~21474836472B4B有符号整型0~655350~42949672952B4B无符号整型

基本数据类型的边界值1.2e-38~3.4e+384B浮124攻击2:质疑软件的默认值前提:声明变量-给变量赋值-使用变量;方法:使用默认值(直接OK)、键入空值、改变默认值、输入一个合法的值再改变为空值;编程技术:变量应该初始化;注意可能会由于异常处理绕过初始化语句;目标:是对每个默认值都质疑过了;注意:多运行几次被测软件,有是软件采用了内存中的随机数据;分析软件的输出:无用字符、数据列表中的过多的值、过少的项、显示或返回的错误数据类型(显示数据的地方显示了字符);

攻击2:质疑软件的默认值前提:声明变量-给变量赋值-使用变125攻击3:使用特殊字符输入,

测试允许的字符集合

前提:应用程序接收字符串时,应具有处理特殊字符(如控制字符和符号)的能力;方法:了解字符集,选择特殊字符进行输入,如:\n、++、&,系统的保留字符、ASCII中特殊字符、UNICODE中的字符…;编程技术:软件应该对一些特殊输入值进行专门处理,如:Case/Switch语句中的Otherwise处理;目标:能通过特殊输入值的测试;注意:应熟悉软件运行的操作系统、采用的编程语言和字符集;

攻击3:使用特殊字符输入,

测试允许的字符集合126攻击4:使输入缓冲区上溢前提:应用程序应对输入的字符串长度进行控制;方法:采用复制/粘贴的方法,键入一个长字符串使缓冲区溢出;键入一个最大的允许长度,再键入一个更长的字符串;编程技术:应考虑传送给内存缓冲区的字符串大小;目标:找出最大的允许输入长度;注意:可能会破坏其它内存区域的数据;

攻击4:使输入缓冲区上溢前提:应用程序应对输入的字符串长度127攻击5:测试输入值的组合逻辑前提:应用程序对复选项的输入组合逻辑是正确的;方法:确定相互有关系的输入域,进行测试;若二个输入值,均输入了最大数(2B的65535)编程技术:编程中采用的多层嵌套的“If”语句应该是完备的;目标:将输入值关键组合的最小集合测试通过;注意:不正确的输出和数据不可靠的明显迹象(如,不能刷新屏幕、乱码显示);

攻击5:测试输入值的组合逻辑前提:应用程序对复选项的输入组128攻击6:多次重复同样的输入序列前提:应用程序处理了系统资源的使用和默认值的使用;方法:重复输入同一个合适的输入序列使应用程序达到极限,使其消耗系统资源并导致数据初始化问题;编程技术:编程时应考虑自身空间和时间的限止和默认值的使用;目标:使应用程序执行的速度变得更慢;注意:内存的泄漏情况;

攻击6:多次重复同样的输入序列前提:应用程序处理了系统资源129攻击7:强制每个输入产生

不同的输出

问题:应用程序对与每个输入相关的主要软件功能都作了处理吗?方法:确定语境(context),列出预期行为列表,进行测试;编程技术:应用软件已考虑了所有可能的输出;目标:每个输出都出现在预期行为列表上;注意:详细阅读产品文档,列出预期行为列表;确定最重要或使用频度最高的输入;

攻击7:强制每个输入产生

不同的输出问题:应用程序对与每130攻击8:强制产生无效输出问题:应用程序对无效输出作了处理吗?方法:猜测,如,日期中的闰年问题,财务中小数位数问题;编程技术:应用程序对无效输出应该进行处理;目标:没有发现无效输出;注意:测试人员的经验是重要的。应熟悉问题的领域,集中在已知的不正确结果上;

攻击8:强制产生无效输出问题:应用程序对无效输出作了处理吗131攻击9:强制改变输出属性前提:有些输出具有可编辑性、可修改性或可能会重新回到受测应用程序;方法:仔细了解能够产生的输出(注意可编辑属性的输出),如:观察显示区域的变化(时钟的显示);编程技术:应用程序对输出可能具有的颜色、形状、维数、大小和其它属性,设立初始或默认值;目标:没有发现输出异常;注意:仔细研究输出的屏幕显示方式;

攻击9:强制改变输出属性前提:有些输出具有可编辑性、可修改132攻击10:强制屏幕刷新前提:屏幕上的窗口可以覆盖、移动和调整大小;方法:创建、删除、移动和修改屏幕上的对象,使应用程序或操作系统强制屏幕刷新;编程技术:应用程序应设置屏幕刷新的频度和次数;目标:找出屏幕刷新的频度和次数的最佳点;注意:变化对象的移动距离、覆盖对象的边界、使用不同的对象、使一个被包含的对象移出边界…

攻击10:强制屏幕刷新前提:屏幕上的窗口可以覆盖、移动和调133测试是一项非常复杂的、创造性的和需要高度智慧的挑战性任务。测试是一项非常复杂的、创造性的和需要高度智慧的挑战性任务134讲座内容:1软件质量概念2软件过程规范

3软件项目管理4测试基本概念和方法5测试生存周期和测试质量6软件测试的例子7软件工程职业道德规范8结束语讲座内容:1软件质量概念135营造企业文化-

软件工程师应当坚持以下八项原则(共80条)公众——软件工程师应保持与公众利益的一致性(8)客户和雇主

——

在保持与公众利益一致的原则下,软件工程师应注意满足客户和雇主的最高利益

(9)产品

——软件工程师应当尽可能地保证他们的产品和修改符合最高的专业标准(15)判断

——

软件工程师应当维护他们职业判断的完整性和独立性(6)软件工程职业道德规范和实践要求IEEE-CS和ACM软件工程道德和职业实践联合工作组推荐(5.2版)营造企业文化-

软件工程师应当坚持以下八项原则(共80条)公136营造企业文化-

软件工程师应当坚持以下八项原则(共80条)管理–软件工程的经理和领导人员应赞成和促进对软件开发和维护的理性管理(12)专业–软件工程师应当推进其专业的完整性和声誉,以符合公众利益(13)

同事–软件工程师对其同事应持正直和支持的态度(8)自我–软件工程师应当参加终生职业实践的学习,并促进理性的职业实践方法(9)软件工程职业道德规范和实践要求IEEE-CS和ACM软件工程道德和职业实践联合工作组推荐(5.2版)营造企业文化-

软件工程师应当坚持以下八项原则(共80条)管137讲座内容:1软件质量概念2软件过程规范

3软件项目管理4测试基本概念和方法5测试生存周期和测试质量6软件测试的例子7软件工程职业道德规范8结束语讲座内容:1软件质量概念138软件质量工程师培训软件质量工程师培训139结束语:注意软件工程的新发展…深刻理解软件质量的重要性掌握一个语言,编好一个软件认真参加一个完整的项目,培养良好的风格大项目锻炼人注意积累,丰富“武库”学会测试技能学会当好一个组长结束语:注意软件工程的新发展…140软件产业的发展前程无量软件产业的发展前程无量141谢谢各位!

Thankyoueveryone!谢谢各位!

Thankyoueveryone!142软件质量与测试杨根兴

博士、研究员

上海市计算机软件评测重点实验室主任上海软件质量管理联盟秘书长上海市软件质量专业技术职业资格专家委员会副主任中国软件测试外包促进会执行秘书长中国软件测评机构联盟副理事长软件质量与测试143早在1980年,在《BusinessWeek》杂志的首页上,显著地写着:“Software:TheNewDrivingForce”。事实表明计算机的软件是计算机应用的灵魂,是计算机普及的核心技术和关键技术。早在1980年,在《BusinessWeek》杂志的首页上144正如培根所说:

没有奋斗就没有人生!人是自己幸福的设计师。

“永远用炽热的、宝石般的火焰燃烧,并且保持这种高昂的境界,这便是人生的成功了”。

-一位古希腊哲人的话正如培根所说:145讲座内容:1软件质量概念2软件过程规范3软件项目管理4测试基本概念和方法5测试生存周期和测试质量6软件测试的例子7软件工程职业道德规范8结束语讲座内容:1软件质量概念1461.1软件质量问题提出的挑战软件质量问题引发的事故:根据美国航空业的调查表明,由于软件质量问题导致的经济损失巨大:1996年损失6.4亿美元、1997年损失1.17亿美元、1998年损失2.55亿美元、1999年损失16亿美元。1993年伦敦附近核电站的反应堆内,由于计算机温度控制失灵,导致这个欧洲人口最为密集的地区遭受巨大灾难。后经查明,在反应堆的主要保护系统中,一段10万行代码的控制程序几乎有一半未能通过测试。海湾战争中,由于某个软件故障打乱了“爱国者”导弹的雷达跟踪系统,使导弹发射后未能迎击对方发射的“飞毛腿”导弹,反而轰击了自己的军营,造成28名士兵丧生,98名受伤。1.1软件质量问题提出的挑战软件质量问题引发的事故:1471.1软件质量问题提出的挑战软件质量问题引发的事故:1996年欧洲航天局“阿丽亚娜5型(Ariane5)”火箭在发射40秒后爆炸,造成发射基地2名法国士兵当场死亡。致使耗资10亿美元,历时9年的欧洲航天计划严重受挫,震惊了整个国际航天界。1997年香港回归,香港新机场同时投入运营,然后因软件问题使新机场不能按要求运转,导致客货滞留,而因老机场已同时关闭也不能救援,造成相当大的损失。1.1软件质量问题提出的挑战软件质量问题引发的事故:1481.1软件质量问题提出的挑战据美国计算机市场分析调查权威机构GartenerGroup统计,世界上仅有16.2%的应用系统较为完善和成功。正如Capers指出:“软件对于现代世界是如此重要,寻找降低失败概率并提高成功概率的途径,对于所有大型企业来说都是很有价值的。”1.1软件质量问题提出的挑战据美国计算机市场分析调查权威149软件项目成功率调查:Cancelled29%51-100%Late9%101-200%Late16%Morethan200%Late6%On-Time26%21-50%Late8%Lessthan20%Late6%ProjectResolutions软件项目成功率调查:Cancelled29%51-1001501.2软件质量管理成当务之急建立健壮的中国软件工业;软件业正成为国家新兴的支柱产业;参与国际竞争的急需;全球IT人员的短缺和全球分布开发的出现,为中国软件出口带来新的机遇;软件工程正成为一个特殊的重要行业;

1.2软件质量管理成当务之急1511.2软件质量管理成当务之急不成熟软件企业的特性没有确定的过程,随意性强,各自一套;差的项目管理,不现实的进度计划;经常危机失败,超时超预算,救火式管理;质量要求常让位与进度要求;把编程和测试放在第一位;不适当的变化控制;成功靠运气和‘英雄’,缺乏组织保证,难以重复;1.2软件质量管理成当务之急不成熟软件企业的特性1521.2软件质量管理成当务之急成熟软件企业的特性软件开发和维护,遵循计划规定的过程;严格的项目管理按合理估算的计划监控;贯彻软件质量保证;重视需求分析和设计,强调客户满意;有变化控制和配置管理;进度和成本控制有保证,项目的成功依靠组织架构的支持,有较好重复性;1.2软件质量管理成当务之急成熟软件企业的特性1531.3软件质量概念质量的定义一个系统、构件或过程满足具体要求的程度;(CMM)一个系统、构件或过程满足顾客或用户需求与期望的程度;(IEEE)一组固有特性满足要求的程度;(ISO9000)特性-可区分的特征,如:物理的、感官的、行为的、时间的、人体工效的、功能的。要求-明示的、通常隐含的或必须履行的需求或期望。1.3软件质量概念质量的定义1541.3软件质量概念软件自身的特点抽象性:存储在介质上的信息。复杂性:软件内部结构复杂,有人说软件是人类创造的最为复杂的实体。多样性:没有完全相同的软件。易变性:软件在开发过程以及交付使用后常常会出于各种原因而修改。软件需求难于把握。1.3软件质量概念软件自身的特点1551.3软件质量概念用户眼中的软件质量(1)软件能做的事正是我所要的。(2)操作中感到系统响应迅速、及时。(3)系统提供的Help信息非常好用、容易掌握。(4)使用中没有发现缺陷或隐错(bug)。(5)手册编写得好用,使用方便。(6)产品交付得很及时,没有出现拖延情况。(7)价格不算贵。(8)即使软件运行中出现了问题,很容易修复。1.3软件质量概念用户眼中的软件质量1561.3软件质量概念技术人员眼中好的软件在技术上没有差错;开发过程符合标准或规范的要求(如果不遵循这些规范,软件质量低是必然结果);具有良好的编程风格;文档编制,特别是规格说明编写完整、准确,使得系统易于维护。1.3软件质量概念技术人员眼中好的软件1571.3软件质量概念关键软件(criticalsoftware)的特点对于表明软件能否正常、稳定工作的可靠性等质量特性要求高。这些软件常与完成重要功能的大系统的处理部件相联。这些软件含有对以下各项造成影响的程度:人员或公众的安全设备或设施的安全环境的质量国务活动或军务活动数据、通讯或实体的机密1.3软件质量概念关键软件(criticalsoftw1581.4解决软件质量问题的途径评价软件质量(内部、外部、使用)1.4解决软件质量问题的途径评价软件质量(内部、外部、使1591.4解决软件质量问题的途径(1)理清影响软件质量的环节、方面、因素;(2)深刻理解软件工程的原则;(3)培养和提高人员的质量意识;(4)采用先进的软件工程技术;(5)加强过程质量控制,持续改进软件过程;(6)把好软件测试环节;1.4解决软件质量问题的途径(1)理清影响软件质量的环节160软件质量保障的手段目前,提高软件产品的质量主要有二个途径:一个是寻求改进软件开发过程质量的方法,以ISO9000-3、Bootstrap、SPICE(ISO/IEC15504)和CMU/SEI提出的软件成熟度模型CMM和CMMI为主要代表,从规范软件过程出发,持续改进软件过程,来保证软件产品开发的质量;另一个是对开发完成的产品进行测试和评价,以对软件产品进行测试和评价为代表,用以验证所开发的软件产品符合规定的要求。软件质量保障的手段目前,提高软件产品的质量主要有二个途径:161需求分析设计走查概要设计设计评审详细设计编码代码走查单元测试集成测试确认测试测试评审需求评审测试策划软件质量保障的手段通过软件评审:发现程序中的缺陷需求分析设计走查概要设计设计评审详细设计编代码走查单元测试集162PhaseThata

DefectIsCreatedCosttoCorrectRequirementsArchitectureDetaileddesignConstructionRequirementsArchitectureDetailed

designConstructionRelease50-200X1XPhaseThataDefectIsCorrected50-200X1X及早纠正大部分的缺陷FixHereNotHerePhaseThata

DefectIsCreate163PhaseThata

DefectIsCreatedCosttoCorrectRequirementsArchitectureDetaileddesignConstructionRequirementsArchitectureDetailed

designConstructionRelease10X?1XPhaseThataDefectIsCorrected10X?1X降低缺陷排除的成本PhaseThata

DefectIsCreate164讲座内容:1软件质量概念2软件过程规范

3软件项目管理4测试基本概念和方法5测试生存周期和测试质量6软件测试的例子7软件工程职业道德规范8结束语讲座内容:1软件质量概念165质量管理主要涉及三方面的问题规范化、量化和固化:1)规范化就是按照ISO9001标准建立一套适合软件开发的质量管理体制,同时引入CMM中的相关关键过程作为规范管理的手段;2)量化就是要采用基于事实的决策方法,收集数据进行量化分析,实现质量管理的反馈控制;(3)固化就是要建立一套行之有效的文件化程序,使得企业无论在什么地方、由什么人管理,都要按照统一的模式去实施。质量管理主要涉及三方面的问题规范化、量化和固化:166软件质量与测试(讲座0506)课件167ISO9001:2000版目录ISO9001:2000版目录168国际标准ISO/IEC12207

信息技术-软件生存周期过程文档编制配置管理质量保证验证过程确认过程联合评审审核过程问题解决管理过程基础设施改进过程培训过程获取过程供应过程开发过程运行过程维护过程基本过程(5)支持过程(8)组织过程(4)国际标准ISO/IEC12207

信息技术-软件生存周期169国际标准ISO/IEC12207

信息技术-软件生存周期过程(基本)国际标准ISO/IEC12207

信息技术-软件生存周期170国际标准ISO/IEC12207

信息技术-软件生存周期过程(支持)国际标准ISO/IEC12207

信息技术-软件生存周期171国际标准ISO/IEC12207

信息技术-软件生存周期过程(组织)国际标准ISO/IEC12207

信息技术-软件生存周期172Level1初始级不一致的管理Level2可重复级项目管理Level3已定义级过程管理Level4已管理级能力管理Level5优化级变更管理可重复实践通用工程过程定量理解和控制持续改进实践软件CM

温馨提示

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

评论

0/150

提交评论