您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 软件质量保证与测试 第一章 引论
软件质量保证与测试讲师:课程目标本课程是软件工程或计算机专业课程,重在培养我们的实践能力,适应软件企业的工作环境和业界标准,并和国际先进的软件开发理念和测试技术保持同步。通过本课程的学习,了解并掌握软件产品质量保证的基本思想和科学体系、软件测试技术的基本内容,以及软件测试的方法、技术和工具的使用,为全面掌握软件技术和软件项目管理打下坚实的基础。课程目标(续)通过本课程的学习,我们还可以了解并掌握:有效的测试策略、方法和技术测试计划和测试用例的设计测试自动化的引入、应用测试团队的建立和测试项目的管理更清楚、准确地报告测试缺陷软件测试和质量保证的关系和区别……教材与参考书目教材:软件测试方法和技术(第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、软件测试的定义BillHetzel博士(正向思维的代表):软件测试就是为程序能够按预期设想那样运行而建立足够的信心。“软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果”测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作1.4什么是软件测试2、软件测试的定义GlenfordJ.Myers(反向思维的代表):测试是为了证明程序有错,而不是证明程序无错误一个好的测试用例是在于它能发现至今未发现的错误一个成功的测试是发现了至今未发现的错误的测试评价一个程序或系统的特性或能力并确定是否达到预期的结果测试是为发现错误而针对某个程序或系统的执行过程软件测试正向思维-验证软件正常工作逆向思维-假定软件有错误在设计规定的环境下运行软件的所有功能,直至全部通过。寻找容易犯错误的地方和系统的薄弱环节,试图破坏系统,直至找不出问题。1.4什么是软件测试2、软件测试的定义IEEE的定义:在特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价分析某个软件项以发现现存的和要求的条件之差别(即错误)并评价此软件项的特性1.4什么是软件测试2、软件测试的定义更完整的定义:“验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。软件测试是由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体。1.4什么是软件测试2、软件测试的定义软件测试的其它观点:软件测试被认为是对软件系统中潜在的各种质量风险进行评估的活动。不能穷举测试,测试是抽样的活动(samplingactivity)风险总是存在的。基于风险的测试强调对软件开发全过程进行检测,随时发现问题、报告问题,减少对客户不利影响的风险测试的经济观点就是以最小的代价获得最高的软件产品质量。经济观点也要求软件测试尽早开展工作,发现缺陷越早,返工的工作量就越小,所造成的损失就越小。测试的成本缺陷造成的损失,测试才有意义。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模型32W模型的关键点(1)测试过程和开发过程同步(2)测试过程和开发过程相互依赖(3)测试过程和开发过程在工作重点、资源管理、风险管理方面存在差异。331.6测试和质量保证的关系软件质量保证(SoftwareQualityAssurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。对软件工程各个阶段的进展、完成质量及出现的问题进行评审、跟踪。审查和验证软件产品是否遵守适用的标准、规程和要求,并最终确保符合标准、满足要求。建立软件质量要素的度量机制,了解各种指标的量化信息,向管理者提供可视信息。SQA活动技术方法的应用正式技术评审的实施软件测试标准的执行修改的控制度量质量记录和记录保存SQA指导、监督软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程的改进。软件测试是SQA重要手段之一,为SQA提供所需的数据,作为质量评价的客观依据。SQA是一项管理工作,侧重于对流程的评审和监控测试是一项技术性的工作,侧重对产品进行评估和验证SQA与软件测试有什么关系和区别?1.6测试驱动开发的思想TDD的实践作业1.为什么要开展软件测试活动?2.什么是软件测试?3.软件测试是在编码之后进行吗?4.软件测试和软件开发的关系是什么?5.软件测试与SQA的关系是什么?
本文标题:软件质量保证与测试 第一章 引论
链接地址:https://www.777doc.com/doc-3490698 .html