文档详情

软件质量保证与软件测试

hao****021
实名认证
店铺
2024-12-10
PPT
1.14MB
约58页
软件质量保证与软件测试_第1页
1/58
软件质量保证与软件测试_第2页
2/58
软件质量保证与软件测试_第3页
3/58

单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,,*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,软件质量保证与软件测试,,,,,,北京唯英时代信息技术有限公司,,方修广,开场白,世界上不存在没有缺陷的软件可以通过两种途径开发出没有错误的软件:,,在一开始就防止引入错误识别潜藏在代码中的错误,找到并消灭它们大纲,软件工程,,软件质量保证,,软件测试,,基础知识,,常用技能,,职业发展,,团队管理,,Q&A,软件工程,软件工程,,(Software Engineering,,简称为,SE),是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面软件质量管理,质量与质量管理的概念,,质量,:,是,“,反映实体满足明确和隐含需要的能力和特性综 合,”,因此,质量是一种需要,,“,是一组固有特性满足要求的程度,”,质量管理,:质量管理是指以组织为质量中心、,企业全员参与为基础,,为追求客户满意和组织所有受益者满意而建立和形成的,一整套质量方针、目标和体系,。

质量管理通过,质量策划,设定组织的质量目标,并规定必要的过程和相关资源;通过,质量控制,监视内部质量过程,排除质量控制过程中可能存在的缺陷隐患;通过,质量改进,提高内部的质量管理能力,改善组织内部的质量过程;通过,质量保证,提供足够的信任证据,,表明组织有能力满足客户的质量要求软件质量管理,质量管理体系,:,它是质量管理的运作实体,由组织结构、程序、过程、资源,4,个基本部分组成质量策划,:,它是,“,确定质量以及采用质量管理体系要素和要求的活动,”,,包括产品策划、质量管理体系管理和运作策划、编制质量计划质量控制,:,为达到质量要求所采取的作业技术和活动质量控制的对象是过程质量保证,:,是为了提供足够的信任证据,证明组织有关的各类实体有能力满足质量要求所实施并在必要时进行证实的有计划、有系统的活动质量改进,:,是为了向组织的所有受益者提供更多的收益所采用的提高质量过程和效率的各种措施,软件质量管理,质量管理的发展阶段,,(,1,)产品质量检验阶段:,这个时期特征是对产品的质量进行检验产品质量的检验只是一种事后的检查,,不能预防不合格品的产生2,)统计质量管理阶段:,它是运用概率论和数理统计的原理,提出,控制生产过程,预防不合格产品的思想和方法,。

即,通过小部分样品测试,,推测和控制全体产品或工艺过程的质量状况3,)全面质量管理阶段:,从以质量管理专业人员为核心进行质量管理,发展到,管理者推动、组织各部门的人员都来进行学习和实行质量管理软件质量管理,从质量管理理论的发展历史可以看出:,,,——,质量管理从单纯的对产品质量进行检验发展到对产品形成过程进行控制,,,——,控制方法从静态发展到动态的、持续的过程改进,,质量管理理论发展到今天:,,,——,其核心思想已表现为对过程的策划、控制和过程能力的持续改进,,,软件质量保证,是软件工程领域中的一部分,,为了确保软件开发,过程,和,结果,符合预期的要求,而建立的一系列规程,以及依照规程和计划采取的一系列活动及其结果评价,,软件开发过程是按照计划和规范实施的,,软件开发结果包括完整的,软件,和,文档,,并且符合可预期的目标和检验标准,软件测试,,,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码实现的最终审查,它,是软件质量保证的关键步骤,通常对软件测试的定义有两种描述:,,定义1:,软件测试是为了发现错误而执行程序的过程定义2:,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。

Tip,SQA,:从流程和标准上来控制开发过程,从而提高软件质量SQC,:通过测试发现软件的问题并确保问题被解决,从而提高软件质量,思考,质量是做出来的还是管出来的?,软件开发模式,1、大棒开发法,,源于能量爆发创造宇宙,万物都由能量和物质积聚而成的理论,但如果不是遵循某种正确的排列和组合,形成的将不是预先期望的事物大棒模式与上述理论一样:一大堆能量(这里指开发软件所需的人力和物力)放在一起,巨大的能量进行释放,通常的结果可能是产生了优秀的软件产品或成为一堆,“,废品,”,(不成功的软件)优点:思路简单, 通常可能是开发者的,“,突发奇想,”,,缺点:开发过程是非工程化的,随意性大,,关于测试:有的较简单,有的则非常困难,,软件开发模式,(续),2、,边写边改法,,采用边写边改法的软件开发通常只是有了比较粗略的想法就开始进行简单的设计、然后进行较长的反复编写、测试与修复这样一个循环的过程在认为无法更精细的描述软件产品要求时,就发布产品优点:能够较为迅速的展现成果,适合需要快速制作而且用完就扔的小项目,如示范程序、演示程序等缺点:其编码和测试可能将是长期的循环往复的过程软件开发模式,(续),,,产品,,说明,,书,,,,,,代码编制、测试、修复,,,最终产品,软件开发模式,(续),瀑布法,,瀑布模式是将软件生命周期的各项活动,规定为按照固定顺序相连的若干个阶段性工作,形如瀑布流水,最终得到软件产品。

优点:,易于理解;调研开发的阶段性;强调早期计划及需求调查;确定何时能够交付产品及何时进行,评审,与,测试,缺点:需求调查分析只进行一次,不能适应需求变化;顺序的开发流程,使得开发中的经验教训不能反馈到该项目的开发中去;不能反映出软件开发过程的反复与迭代性;没有包含任何类型的风险评估;开发中出现的问题直到开发后期才能够显露,因此失去及早纠正的机会软件开发模式,(续),,,问题定义,分析研究,需求分析,软件设计,编码,测试,维护,,,,,,,定义阶段,开发阶段,维护阶段,,,,,,,图1-7 瀑布开发模式,软件开发模式,(续),,图1-9 螺旋开发模式,详细设计,风险分析,评估方案,累计成本,提交线,制定计划,原型1,原型2,原型3,可运行,,原型,风险分析,风险分析,需求计划,开发计划,集成与测试,软件,,需求,软件产品设计,需求,,确定,设计,,确定,实现,编码,单元测试,集成测试,验收测试,,,软件开发与软件测试的关系,图1-10,,软件测试与软件开发过程的关系,需求,,分析,,说明书,详细,,设计,,说明书,,源程序,,代码,,单元,,测试,,集成,,测试,,确认,,测试,概要,,设计,,说明书,软件开发与软件测试的关系,,项目规划,项目需求分析,项目概要分析,,,,,,项目详细分析,,,,,,代码编写,测试代码编写,测试需求分析,系统测试计划,集成测试计划,单元测试计划,产品发布,,,,,,系统测试,,,,,,集成测试,,,,,,单元测试,,,单元测试,单元测试的内容:,,1,、模块接口测试,,2,、检查局部数据结构能否保持完整性,,3,、模块边界条件测试,,4,、模块执行路径测试,,5,、检查模块内部错误处理是否有效,,单元测试方法:白盒测试为主,,集成测试,集成测试(,Integration test,),:,将通过单元测试的多个模块组合成更大的模块或子系统或产品,然后进行测试。

测试内容:各单元的接口是否吻合、代码是否符合规定的标准、界面标准是否统一等系统测试,经过集成测试之后,分散开发的模块被联接起来,构成完整的程序,其中各模块间接口存在的种种问题都已基本消除测试开始进入到系统测试的阶段为了发现缺陷并度量产品质量,按照系统的功能和性能需求进行的测试,,一般使用黑盒测试技术,,一般由独立的测试人员完成,,系统测试,(System test),,应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能正常工作并完成所赋予的任务这里所谓的系统不仅仅包括软件本身,而且还包括计算机硬件及其相关的外围设备,数据及其收集传输机构,甚至掌握计算机运行的人员及其操作等通常意义上的系统测试包括:功能测试、性能测试,(Performance test),、用户界面测试、兼容性测试等UAT,测试,系统测试结束后,在项目组看来开发和测试工作已经全部完成,可以交付使用,并与用户一起进行测试,以验证是否符合与用户事先约定的验收标准测试人员,,产品经理或其他高级经理,,开发工程师,,测试工程师,,用户,,,测试级,,,目的,,,执行者,,,测试环境,,,测试方法,,,单元,,,从单个模块中,,发现逻辑、数据和运算缺陷,,,,,软件工程师,,,单独的;桩和支撑程序,,,白盒测试,,,集成,,,发现模块间接口缺陷,,,,,软件工程师,,,单独的和,/,或模拟;桩和支撑程序,,,白盒测试,,Top-down, bottom-up,,或,outside-in,,,,,系统,,,测定软件是否满足需求,,,软件质保组;,,软件确认组,,,实际的环境(可能没有最终的硬件),,,功能测试和,ALAC(Act Like A Customer),,回归,,,确认软件经过一些小的变更或修改后是否仍满足所有的需求,,,,,软件质保组;,,软件确认组,,,实际的环境(可能没有最终的硬件),,,功能测试和,ALAC,,验收,,,,确定软件是否满足客户的需求,,,,,客户,软件质保组和,/,或项目组,,,实际的环境(通常在客户方),,,功能测试和,ALAC,(客户可能有自己的测试方法),,,,,性能测试,,,功能测试,,,,性能测试,性能测试即测试软件处理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考。

Performance),,,性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试功能测试,功能测试,(Functional testing ),,根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求本地化软件的功能测试,用于验证应用程序或网站对目标用户能正确工作使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场开发的一样常见名词,冒烟测试,,压力测试,,本地化测试,,回归测试,,Alpha,测试,,Beta,测试,,嵌入式软件测试,,手机测试,,应用软件测试,,固件测试,,静态测试,,动态测试,黑盒子测试,黑盒测试是从用户观点出发的测试,它又称功能测试、数据驱动测试或基于规格说明书或用户手册的测试它所依据的是程序的外部特性白盒测试又称结构测试、逻辑驱动测试或基于程序的测试,其测试过程如图所示,,半透明盒子测试,自动化测试,常用测试软件(,HP,,,IBM,,,,Borland,),,QTP,,,LR,,,QC,,如何学习自动化测试,,,,,,必做的测试:,安装测试,,功能测试,,值域测试,,界面测试,,可用性测试,,说明书测试,,配置测试,,加密问题测试,,裸机测试,,可选的测试,内存泄漏测试,,接口测试,,性能测试,,并发性测试,,安全性测试,,破坏性测试,,配套产品测试,,测试计划:,收集并组织测试计划信息,将软件细化为可检验的测试需求,建立测试计划,,目标:沟通测试小组内部与外部的测试意图,,规定测试活动的范围、方法、资源和进度,,明确测试项目的特性,,测试要点,,测试任务细分,,任务进度以及负责人,,输出:测试计划,,测试用例,模板包含的内容:,,标题和编号、版本号、修改记录等,,模块-功能名称,,设计可能有的操作(包括测试步骤和输入),,预期输出和错误发现方法,,是否通过(是否与期望结果一致),,与,bug,库对应的,ID,号,,测试的执行及报告:,选择测试用例库中的测试用例运行,,选择新设计的测试用例运行,,记录中间步骤和结果,,记录下执行过程中的灵感,,但不要轻易修改本次执行任务,,对测试结果分析,并尽量重现和优化错误步骤,,详细填写缺陷报告并提供尽可能多的信息,尽可能提供错误分析和修改建议,,认真审核错误处理结果并及时关闭缺陷报告,,测试员的效率,平均每个工作日发现,4-6,个,Bug,,平均每修正,3,个,Bug,,会引进,1,个新的,Bug,,平均,75%,的,Bug,会在单元测试阶段解决掉,,平均,20%,的,Bug,会在集成测试和系统测试阶段解决掉,,平均,5%,的,Bug,会被交付给用户,,,,测试不能是全面的,,成本和质量,,TQM,,CM,,Peer Review,,EPG,,,提早发现,,缺陷预防,,CMM,软件能力成熟度模型,(,CMM, Capability Maturity Model,),:,,,——,是软件行业标准模型,用来定义和评价软件企业开发过程的成熟度,提供如何做才能够提高软件质量的指导,。

CMM,的基本原理:,,,——CMM,将软件组织的过程能力成熟度分为,5,个级别,每一个级别定义一组过程能力目标,并描述要达到这些目标应该采取的各种实践活动CMM,的主要作用:,,——,提供了一个软件过程改进的框架根据,CMM,模型,软件开发者(机构或组织)能够大幅度的提高按计划、高效率、低成本的提交有质量保证的软件产品的能力软件能力成熟度模型,(续),优化级(5),已管理级(4),已定义级(3),可重复级(2),初始级(1),标准一致,,的过程,不断改,,进过程,可预测,,的过程,有纪律,,的过程,软件,过程成熟度,的,5,个,等级,,,软件能力成熟度模型,(续),CMM,的分级结构和其主要特征:,,初始级,:其特点是软件过程无秩序,有时甚至是混乱的可重复级,:已建立了基本的,项目管理,过程,,可用于对成本、进度和功能特性进行跟踪已定义级,:用于管理的、工程的软件过程均已实现,文档化、标准化,,并形成了整个软件组织的,标准软件过程,管理级,:软件过程和产品质量有详细的度量标准,软件过程和产品质量得到了,定量的认证和控制,优化级,:通过对来自过程、新概念和新技术等方面各种有用信息的定量分析,能够不断地、持续性地对过程进行改进。

ISO 9000,介绍,,ISO 9000,标准,,——,是为制造行业制定的质量管理和质量评判的一系列标准,,,——,定义了一套基本达标的做法,有助于企业能够一致地交付符合客户质量要求的产品(或服务),,ISO 9000,标准的目标,,——,在于开发过程,而不是产品,,——,关心的是进行工作的组织方式,而不是工作成果,,ISO 9000,只决定过程的要求是什么,而不管如何达到ISO 9000,指出,要做什么,但不指出怎样做,软件质量保证部的职责,质量控制组,,质量保证组,,测试服务组,,开发服务组,质量控制组(,QC,),质量控制组强调标准,,在任何公司中,管理部门都是实际的质量控制组QC,组的真正权利在于,它能够控制一个有问题的产品直到管理部门经过深思熟虑后做出决定,质量保证组(,QA,),设置过程标准、引进评审程序、培训职员以更好的方式开展设计和开发产品有能力的程序员、编写人员、经理、设计人员和分析员,,管理部门是真正的质量保证小组,,质量来自顶层,而不是来自,QA,测试服务组,测试服务组为项目经理提供测试服务对你的要求是找到故障代码,仔细对他们进行描述,并确保需要了解他们的每个人都能弄清楚。

你并没有发布或者拒绝发布一个产品的权限你描述程序的问题,到目前为止的已经完成的测试层度,以及你对程序质量的估计开发服务组,调试,,技术(客户)支持,尤其在产品发布后的前几个星期,,对手册的技术编辑,,易用性测试,,可比较产品的评价,,客户满意度研究,,,另一种选择,独立测试机构,,优点,,缺点,对软件测试的误解,如果发布的软件有质量问题,那是软件测试人员的错软件测试技术要求不高,至少比编程容易多了软件测试随便找一个能力差的人就能做有时间就多测试一些,来不及就少测试一些软件测试是测试人员的事,与开发人员无关设计-实现-测试,软件测试是开发后期的一个阶段对于测试人员的职业素质要求,1,、责任感,,坚持原则、不放弃,,有问题及时汇报,,2,、沟通能力、移情能力,,与用户、项目组的沟通,,3,、独立的判断和自学习能力,,坚持观点,不随声附和,,喜欢探寻、钻牛角尖不一定是坏事情,,4,、耐心、自我督促,,5,、团队精神,,与开发组整体为一个目标开展活动,有时需要妥协,,软件测试人员的职业规划,,自动化测试,,英语,,,行业专家,,技术专家,,,项目管理,,产品经理,,PMP,,CMMI,,,软件测试人员的合理比例,在软件产业发达的国家:,,软件测试在人员配备和资金投入方面占据相当的比重。

微软为打造,Windows2000,1700,多个开发人员,以及3200个测试人员,开发和测试人员之比约为三比五HP,公司的测试人员和开发人员的比例为一比一,这是很 多先进软件企业通常的人员配比在国内:,,企业往往忽视软件测试,很多企业都没有软件测试部门,甚至不设置软件测试的岗位,造成产品质量得不到保证相关书籍推荐,《,软件测试,》,,Ron Patton,,,2001,,,《Software Testing》,,机械工业出版社,,《The Art of Software Testing》,,Myers,,,1979,,《Testing Computer Software》,,Cem. Kaner,,,1993,,,,《Black-Box Testing》,,Boris Beizer, 1995,,《,自动化软件测试,》,,Elfriede Dustin,,,1999,,,《Automated Software Testing》,,影印,,2002,,清华大学出版社,,《,面向对象的软件测试,》,,John D. McGregor,,,2001,,,《A Practical Guide To Testing Object-Oriented Software》,,杨文宏,,2002,,机械工业出版社,培训总结,Q&A,,Thank you!,。

下载提示
相关文档
正为您匹配相似的精品文档