资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,软件质量保证与测试,讲师:,课程目标,本课程是软件工程或计算机专业课程,重在培养我们的实践能力,适应软件企业的工作环境和业界标准,并和国际先进的软件开发理念和测试技术保持同步。,通过本课程的学习,了解并掌握软件产品质量保证的基本思想和科学体系、软件测试技术的基本内容,以及软件测试的方法、技术和工具的使用,为全面掌握软件技术和软件项目管理打下坚实的基础。,课程目标(续),通过本课程的学习,我们还可以了解并掌握:,有效的测试策略、方法和技术,测试计划和测试用例的设计,测试自动化的引入、应用,测试团队的建立和测试项目的管理,更清楚、准确地报告测试缺陷,软件测试和质量保证的关系和区别,教材与参考书目,教材,:,软件测试方法和技术(第,3,版),朱少民,清华大学出版社,参考书目,:,软件测试,秦晓,科学出版社,软件测试技术经典教程,赵斌,科学出版社,论坛,软件测试网,中国软件测试联盟,课程安排,课程安排,48,学时:,36,学时理论,+12,学时实验,课程考核,平 时 成 绩,:20%,期 末 成 绩,:80%,第一章 引论,主要内容:,1.1,软件及其分类,1.2,软件测试的必要性,1.3,为什么要进行软件测试,1.4,什么是软件测试,1.5,测试和开发的关系,1.6,测试和质量保证的关系,1.1,什么是软件,1,、软件的定义,与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。,2,、软件的分类,按照功能分:系统软件和应用软件,按照技术架构分:单机版软件、,C/S,结构软件、,B/S,结构软件,按照用户分:产品软件和项目软件,按照开发的规模分:大、中、小,1.2,软件测试的必要性,软件缺陷和软件故障案例,案例,1,:跨世纪“千年虫”,案例,2,:迪斯尼“狮子王童话”游戏软件,案例,3,:,Intel,奔腾芯片浮点除法软件缺陷,案例,4,:火星探测飞船坠毁,案例,5,:爱国者导弹防御系统炸死自家人,其他案例,1.2,软件测试的必要性,1,、跨世纪“千年虫”,时间:,20,世纪,90,年代,背景:很多计算机系统都面临“千年虫”的危害。,问题:,2000,年纪后的年份出现问题,“,00,”是“,1900,”还是“,2000,”?,原因:,20,世纪,70,年代,计算机内存资源和硬盘空间非常宝贵,故在存储日期时,只保留了年份的后两位,如,1980,被存为“,80”,。,结果:世界各地为了更换和升级系统,付出上百亿美元的代价。,1.2,软件测试的必要性,2、迪斯尼“狮子王童话”游戏软件,时间:,1994-1995,背景:迪士尼公司首次进军儿童游戏市场,出现的问题:该游戏在一些,PC,机上无法玩,原因:未对各种,PC,机型进行完整的系统兼容性测试。,结果:承担客户投诉、产品退货、更换光盘,以及新一轮调试、修改、测试的所有费用。,1.2,软件测试的必要性,3、,Intel,奔腾,CPU,芯片浮点除法软件缺陷,时间:,1994,背景:,Intel,发布的一款新处理器,出现的问题:,(,4195835,/,3145727,),3145727,-,4195835,0,原因:浮点除法软件缺陷。,结果:最后,Intel,公司付出很大代价,回收,CPU,,造成,4,亿美元损失。,1.2,软件测试的必要性,4、火星探测飞船坠毁,时间:1999年12月3日,背景:美国航天局的火星探测器试图在火星表面着陆时失踪。,问题:一个数据位被意外置位。原因:两个小组本身的工作都没什么问题,就是没有合在一起测试,其接口没有被测,而问题就在这里。(集成测试),结果:飞船坠毁。,1.2,软件测试的必要性,5,、爱国者导弹防御系统炸死自家人,背景:海湾战争时导弹防御系统。,问题:软件系统缺陷。,原因:当爱国者导弹防御系统的时钟累计运行超过14小时后,系统的跟踪系统就不准确。,结果:导致拦截伊拉克飞毛腿导弹的几次失败,其中一枚在沙特阿拉伯的多哈爆炸的飞毛腿导弹造成28名美国士兵死亡。,1.2,软件测试的必要性,6,、其他案例,2007,年,10,月,30,日,北京奥运会第二阶段门票销售刚启动就因为购票者太多而被迫暂停。低估了群众购票的热情,导致售票系统出现了瓶颈问题,08,奥运票务中心、,12306,的道歉,2006,年,4,月,21,日晚,10,时,许霆来到广州天河区黄埔大道某银行的,ATM,取款机取款。结果取出,1000,元后,银行卡账户里只被扣,1,元,许霆先后取款,171,笔,合计,17.5,万元。许霆潜逃一年后被抓获,以盗窃罪被判无期徒刑,后改判为,5,年有期徒刑。,是软件的错误将许霆送进了监狱?,动车事故,1.3,为什么要进行软件测试,软件总存在缺陷。只有通过测试,才可以发现软件缺陷。也只有发现了缺陷,才可以将软件缺陷从软件产品或软件系统中清理出去。,软件中存在的缺陷给我们带来的损失是巨大的,这也说明了软件测试的必要性和重要性。,测试是所有工程学科的基本组成单元,自然也是软件开发的重要组成部分。,测试人员水平越高,找到软件问题的时间就越早,软件就越容易更正,产品发布之后越稳定,公司赚的钱也越多。,例:微软。,1957,1978,年,以功能验证为导向,测试是证明软件是正确的(正向思维)。,1978,1983,年,以破坏性检测为导向,测试是为了找到软件中的错误(逆向思维)。,1983,1987,年,以质量评估为导向,测试是提供产品的评估和质量度量。,1988,年起,以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷。,1.4,什么是软件测试,1,、软件测试学科的发展,1.4,什么是软件测试,2,、软件测试的定义,Bill Hetzel,博士(正向思维的代表):,软件测试就是为程序能够按预期设想那样运行而建立足够的信心。,“软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果”,测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作,1.4,什么是软件测试,2,、软件测试的定义,Glenford J.Myers,(反向思维的代表):,测试是为了证明程序有错,而不是证明程序无错误,一个好的测试用例是在于它能发现至今未发现的错误,一个成功的测试是发现了至今未发现的错误的测试,评价一个程序或系统的特性或能力并确定是否达到预期的结果,测试是为发现错误而针对某个程序或系统的执行过程,软件测试,正向思维,验证软件正常工作,逆向思维,假定软件有错误,在设计规定的环境下运行软件的所有功能,直至全部通过,。,寻找容易犯错误的地方和系统的薄弱环节,试图破坏系统,直至找不出问题。,1.4,什么是软件测试,2,、软件测试的定义,IEEE,的定义:,在特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价,分析某个软件项以发现现存的和要求的条件之差别(即错误)并评价此软件项的特性,1.4,什么是软件测试,2,、软件测试的定义,更完整的定义:,“,验证,”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性,“,有效性确认,”是确认所开发的软件是否满足用户真正需求的活动。,软件测试是由“验证(,Verification,)”和“有效性确认(,Validation,)”活动构成的整体。,1.4,什么是软件测试,2,、软件测试的定义,软件测试的其它观点:,软件测试被认为是对软件系统中,潜在的,各种,质量,风险,进行评估的活动,。不能穷举测试,测试是抽样的活动(,sampling activity,)风险总是存在的。基于风险的测试强调对软件开发全过程进行检测,随时发现问题、报告问题,减少对客户不利影响的风险,测试的经济观点,就是以最小的代价获得最高的软件产品质量,。经济观点也要求软件测试尽早开展工作,发现缺陷越早,返工的工作量就越小,所造成的损失就越小。测试的成本,缺陷造成的损失,测试才有意义。,1.4,什么是软件测试,2,、软件测试的定义,1.4,什么是软件测试,3,、软件测试的目的,(,1,)测试是程序执行的过程,目的在于发现错误;,(,2,)检查系统是否满足需求也是测试的期望目标。,(,3,)一个好的测试用例在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。,注意:测试无法说明错误不存在,只能说明软件错误已经出现。,1.4,什么是软件测试,3,、软件测试的目的(续),测试目的延伸(软件工程):,(,1,)测试的目的是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷,提高软件质量,,回避软件发布后由于潜在的软件缺陷和错误造成的隐患带来的商业风险。,(,2,)通过分析错误产生的原因还可以帮助发现当前开发工作所采用的软件过程的缺陷,以便进行,软件过程改进,。同时通过对测试结果的分析整理,还可以修正软件开发规则,并为软件可靠性分析提供依据。,(,3,)测试是以评价一个程序或者系统属性为目标的一种活动,测试是对软件质量的度量与评估,以验证软件的质量满足用户的需求,,为用户选择与接受软件提供有力的依据,。,1.4,什么是软件测试,4,、软件测试的对象,软件测试不等于程序测试。,软件测试贯串于软件定义和开发的整个过程。,软件开发过程中所产生的需求规格说明、概要设计规格说明、详细设计规格说明以及源程序都是软件测试的对象。,1.4,什么是软件测试,5,、软件测试的原则,所有的软件测试都应追溯到用户需求;,尽早地和及时地测试;,测试用例应当由测试数据和与之对应的预期结果这两部分组成;,在程序提交测试后,应当由专门的测试人员进行测试;,测试用例应包括合理的输入条件和不合理的输入条件;,完全测试是不可能的,测试需要终止;,1.4,什么是软件测试,5,、软件测试的原则(续),严格执行测试计划,排除测试的随意性;,充分注意测试当中的群体现象(集中);,应对每一个测试结果做全面的检查;,保存测试计划、测试用例、出错统计和最终分析报告,为维护工作提供充分的资料。,1.5,测试和开发的关系,让人误解的瀑布模型,1.5,测试和开发的关系,需求分,析和定义,系统设计,详细功能设计,编码,单元测试,功能测试,系统测试,验收测试测试,用户需求验证,系统非功能特性验证,功能验证,代码验证,构建过程,验证过程,W,模型,32,W,模型的关键点,(,1,)测试过程和开发过程同步,(,2,)测试过程和开发过程相互依赖,(,3,)测试过程和开发过程在工作重点、资源管理、风险管理方面存在差异。,33,1.6,测试和质量保证的关系,软件质量保证(,Software Quality Assurance,,,SQA,)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。,对软件工程各个阶段的进展、完成质量及出现的问题进行评审、跟踪。,审查和验证软件产品是否遵守适用的标准、规程和要求,并最终确保符合标准、满足要求。,建立软件质量要素的度量机制,了解各种指标的量化信息,向管理者提供可视信息。,SQA,活动,技术方法的应用,正式技术评审的实施,软件测试,标准的执行,修改的控制,度量,质量记录和记录保存,SQA,指导、监督软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程的改进。,软件测试是,SQA,重要手段之一,为,SQA,提供所需的数据,作为质量评价的客观依据。,SQA,是一项管理工作,侧重于对流程的评审和监控,测试是一项技术性的工作,侧重对产品进行评估和验证,SQA,与软件测试有什么关系和区别?,1.6,测试驱动开发的思想,TDD,的实践,作业,为什么要开展软件测试活动?,什么是软件测试?,软件测试是在编码之后进行吗?,软件测试和软件开发的关
展开阅读全文