单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,软件测试,第,1,讲 软件测试基础,1,机遇和挑战并存,2,Test Engineer,QA/Supervisor,Project/Quality Manager,Senior Engineer,软件行业是朝阳行业,软件测试是软件行业的朝阳行业。
软件行业由卖方市场转入买方市场,激烈的竞争要求软件的产品质量越来越高欧美国家的软件项目,软件测试的工作量占项目总工作量,40%,,软件测试的经费占项目总经费,30%,测试人员和开发人员的比例 国外:,1,:,1-2,:,1,,国内,1,:,51,:,3,,当前国内高素质软件测试人员的市场需求大约,50,万人左右主要内容,第,1,部分 软件测试概述(,What,),第,2,部分 软件测试基础,(,概念、原理、方法、步骤、工具),(How),第,3,部分 软件测试实践,(Application),3,网络资源,UML,软件工程组织 (技术文章),51Testing,软件测试(注册下载需技术分),中国软件测评中心,中国测试员网站,中国软件测试在线,4,教材,参考书目:,软件测试方法和技术,(,第,2版),,朱少民,清华大学出版社,,2010,软件测试大学教程,,蔡建平,,清华大学出版社,,2009,软件测试,,Ron Patton,著,张小松等译,机械工业出版社,,2006,5,第,1讲,软件测试基础,为什么要进行软件测试?,什么是软件测试?,软件测试的分类,测试阶段,软件测试的工作范畴,SQA,与软件测试的关系,6,7,为什么要进行软件测试?,软件缺陷与软件故障案例,迪斯尼并不总是带来笑声,英特尔奔腾浮点除法缺陷,火星探测飞船坠毁,爱国者导弹防御系统,2008,北京奥运会售票系统,8,迪斯尼并不总是带来笑声,1994,年圣诞节前夕,迪斯尼公司发布了第一个面向儿童的多媒体光盘游戏“狮子王童话”,圣诞节后的第一天,迪斯尼客户支持部电话开始响个不停,不断有人咨询、抱怨为什么游戏总是安装不成功,或没法正常使用,这个游戏软件只能在少数系统中正常运行,9,兼容性问题,英特尔奔腾浮点除法缺陷,如果答案不为,0,,说明计算机使用的是带有浮点除法软件缺陷的老式英特尔奔腾处理器。
1994,年,10,月,30,日,弗吉尼亚州的,Thomas R.Nicely,博士在用奔腾,PC,进行计算问题时得出了一个错误的结论,因此发现了这个问题,后来在互联网上引起一场风暴他们的软件测试工程师在芯片发布之前进行内部测试时已经发现了这个问题,英特尔的管理层认为这没有严重到保证要修正,甚至公开的程度当软件缺陷被发现时,英特尔试图低调解决问题,但为时已晚,最终拿出,4,亿多美元来支付所有维护费用,10,(,4195835,3145727,),3145727-4195835=,?,火星探测飞船坠毁,机械震动在大多数情况下也会触发着地开关,设置错误的数据位设想飞船开始着陆时,计算机极有可能关闭推进器,而火星登陆飞船下坠,1800,米之后没有反推进器的帮助,冲向地面,必然会撞成碎片,两个小组,本身的工作都没什么问题,就是没有合在一起测试,其接口没有被测,而问题就在这里,11,系统测试,衔接问题,爱国者导弹防御系统,当爱国者导弹防御系统的时钟累计运行超过,14,小时后,系统的跟踪系统就不准确,从而导致,拦截伊拉克飞毛腿导弹,的几次失败,,其中一枚在沙特阿拉伯的多哈爆炸的飞毛腿导弹造成,28,名美国士兵死亡,12,系统时钟误差积累,2008,北京奥运会售票系统,2007,年,10,月,30,日上午,11,时,,2008,北京奥运会售票系统软件瘫痪。
北京奥运会的指定独家票务供应商,-,北京歌华特玛捷票务有限公司成立于,2006,年,9,月,由美国特玛捷公司、中体产业股份有限公司及北京歌华文化发展集团三家出资构建而成售票系统瘫痪事件发生后,公众普遍质疑歌华特玛捷公司是否具备承担,2008,北京奥运会的票务销售能力用户常常在软件开发初期就发现软件可能跟他们的需求有不一致的地方在开发软件之前,需要进行必要的需求分析开发完成之后,也要进行必要的测试工作虽然这些软件故障的后果程度不一,但可以肯定的是,通过严格的软件测试可以极大地降低故障及因此而引发的种种恶果13,14,为什么要进行软件测试?,软件总存在缺陷,只有通过测试,才可以发现软件缺陷也只有发现了缺陷,才可以将软件缺陷从软件产品或软件系统中清理出去软件失败时,也许仅仅给我们带来了不便,也可能是灾难性的我们需要,软件测试,,来保障软件质量15,什么是软件测试?,软件测试学科的形成,正反两方面的争辩,软件测试的定义,软件测试的其它观点,16,软件测试学科的发展,从测试的思想导向来划分为,4,个阶段,:,1957,1978,年,以功能验证为导向,测试是证明软件是正确的(正向思维)1978,1983,年,以破坏性为为导向,测试是为了找到软件中的错误(逆向思维)。
1983,1987,年,以质量评估为导向,测试是提供产品的评估和质量度量1988,年起,以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷17,更好的阶段划分,分为,3,个阶段,初期阶段、发展阶段和成熟阶段,初级阶段,(,1957,1971,)测试通常被认为是对产品进行事后检验,缺乏有效的测试方法,发展阶段,(,1972,1982,),,1972,年第一次关于软件测试的正式会议,促进了软件测试的发展,成熟阶段,(,1983,到现在),国际标准,Std 829-1983,,形成一门独立的学科和专业,成为软件工程学科中的一个重要组成部分,18,软件测试的正面性,Bill Hetzel,博士(正向思维的代表):,软件测试就是为程序能够按预期设想那样运行而建立足够的信心,软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果,”,测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作,19,软件测试的反面性,Glenford J.Myers,(反向思维的代表):,测试是为了证明程序有错,而不是证明程序无错误,一个好的测试用例是在于它能发现至今未发现的错误,一个成功的测试是发现了至今未发现的错误的测试,20,软件测试定义的两面性,21,评价一个程序或系统的特性或能力并确定是否达到预期的结果,测试是为发现错误而针对某个程序或系统的执行过程,软件测试,正向思维,验证软件正常工作,逆向思维,假定软件有错误,在设计规定的环境下运行软件的所有功能,直至全部通过,。
寻找容易犯错误的地方和系统的薄弱环节,试图破坏系统,直至找不出问题软件测试是什么?,测试,=“,测”,+“,试”,什么是“测”?,Measure,、测量,知道结果的验证行为,测,什么是“试”?,Try,、试验,不知道结果的尝试行为,试,软件测试,测:验证软件功能、性能,试:验证软件是否有非功能性的异常,在规定的条件下对程序进行操作,以发现程序错误,对其是否能满足设计要求进行评估的过程,Myers,软件测试的定义,软件测试是为了发现软件缺陷而执行程序或系统的过程23,Q:,我按照用户的需求测试了实际的系统,却一个缺陷也没有发现,我所做的测试工作有意义吗?,1979,年,Glenford J.Myers,在,软件测试艺术,(,The art of software testing,)书中给出的定义:,传统意义上的测试定义,是狭义的A:,当然有意义,因为我至少证明了该系统基本符 合用户的需求IEEE,软件测试的定义,1983,年,IEEE,的定义,:,使用人工或自动手段运行或测定某个系统的过程,其目的在于,检验它是否满足规定的需求,或是弄清预期结果与实际结果之间的差别24,明确提出软件测试以检验是否满足需求为目标。
软件测试的定义,软件测试,也可以定义为是“验证(,Verification,)”和“有效性确认(,Validation,)”活动构成的整体验证,:是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性,有效性确认,:是确认所开发的软件是否满足用户真正需求的活动,25,验证:“我们是否正确地完成了产品?”,确认:“我们是否完成了正确的产品?”,-,Boehm,软件测试的其它观点,软件测试被认为是对软件系统中潜在的各种风险进行评估的活动,基于风险,的软件测试可以被看作是一个动态的监控过程,对软件开发全过程进行检测,随时发现问题、报告问题,测试的,经济观点,就是以最小的代价获得最高的软件产品质量,经济观点也要求软件测试尽早开展工作,发现缺陷越早,返工的工作量就越小,所造成的损失就越小26,问题讨论,玩电脑游戏是不是软件测试?,玩手机是不是软件测试?,用户使用软件是不是软件测试?,27,软件测试的分类,方法,目标,/,特性,单元测试,系统测试,验收测试,性能测试,强壮性测试,功能测试,白盒测试,黑盒测试,测试阶段或层次,适用性测试,可靠性测试,集成测试,安全性测试,软件测试的分类,按测试的对象或范围分类,,如单元测试、文档测试、系统测试等,按测试目的分类,,如功能测试、回归测试、性能测试、可靠性测试、安全性测试和兼容性测试等,根据测试过程中被测软件是否被执行,,分为静态测试和动态测试,根据是否针对系统的内部结构和具体实现算法来完成测试,,可分为白盒测试和黑盒测试,按测试方法分类,数据库测试、压力测试、恢复测试、安全测试、兼容性测试等,注意:,不要在术语上纠缠,因为不同的测试小组可能使用不同的术语。
理解其含义及其在小组中的应用是软件测试人员的职责Ron Patton,软件测试,软件测试的各个阶段,开发生命周期,.,维护,需求定义,应用定义,应用开发,修订,建立,建立,测试生命周期,.,执行,.,执行,执行,.,测试计划,缺陷跟踪,测试开发,测试设计,评估,好处:可以找到软件的,Bug,,提高软件可靠性!,不好:这些,Bug,可能让开发人员疯掉!可能项目延期!,软件测试是“不得不做”!,软件测试阶段,阶 段,输 入,输 出,需求分析,需求定义,市场分析文档,相关技术文档,市场需求分析会议记要,功能设计,技术设计,设计审查,市场需求文档,技术设计文档,测试计划,测试用例,功能验证,代码完成文件包,功能详细设计说明书,最终技术文档,完整测试用例,完备的测试计划,缺陷报告,功能验证测试报告,系。