您好,欢迎访问三七文档
软件测试本课程主要参考教材:SoftwareTestingSecondEdition(美)RonPatton著,张小松等译2006年3月课程教学内容安排:第一部分软件测试综述(共三章)第二部分软件测试基础(共五章)第三部分运用测试技术(共七章)第四部分软件测试的进一步深入(共两章)第五部分使用测试文档(共四章)第六部分软件测试的未来(共两章)第一部分软件测试综述官方定义体系架构软件测试的背景软件开发过程软件测试的实质第一部分软件测试综述官方定义使用人工或自动手段来运行或测定某个系统的过程,检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。——IEEE1983年第一部分软件测试综述体系架构软件测试的基础理论和基本技术软件测试的标准和规范软件测试的环境和工具软件测试的管理第一部分软件测试综述第一章软件测试的背景软件错误案例研究软件缺陷是什么为什么会出现软件缺陷软件缺陷的修复费用软件测试员的工作内容优秀软件测试员的素质第一章软件测试的背景§1软件错误案例研究※1994年12月30日;ThomasR.Nicely博士在他的一个实验中,发现了奔腾CPU的除法问题(4195835∕3145727)×31435727―4195835=?※1996年6月4日,阿丽亚娜5型火箭第一次鉴定发射,因火箭导航电脑软件系统发生故障而失败;第一章软件测试的背景※美国爱国者导弹防御系统首次应用在海湾战争中对抗伊拉克飞毛腿导弹的防御战中,一次在沙特阿拉伯的多哈击毙了28名美国士兵;※2003年4月,一个软件故障导致美国航空集团公司损失数千美元,因为有些机票的价格被误定为1.86美元;※2003年8月,位于美国俄亥俄州的第一能源(FirstEnergy)公司下属的电力监测与控制管理系统“XA/21”出现软件错误,导致北美东北部大规模停电;※1999年12月3日,美国航天局的火星极地登陆者号探测器试图在火星表面着陆时失踪。;第一章软件测试的背景※美国商务部的国立标准技术研究所(NIST:NationalInstituteofStandardsandTechnology)有关软件缺陷的损失调查报告表示,“据推测,由于软件缺陷而引起的损失额每年高达595亿美元。这一数字相当于美国国内生产总值的0.6%”。※2005年07月13日,北京互联网首次突然大面积断网,主要原因是北京网通几个核心路由器的BGPDown掉了;第一章软件测试的背景§2软件缺陷是什么一、软件失败的术语缺点(defect)偏差(variance)故障(fault)失败(failure)问题(problem)矛盾(incosistency)错误(error)特性殊(feature)事件(incident)缺陷(bug)异常(anomaly)第一章软件测试的背景了解与自己合作的产品开发小组的特点是重要的。他们提及他们软件问题的方式反映出他们处理整个开发过程的方式。本课程中,所有软件问题都被称为缺陷(bugs)。第一章软件测试的背景二、软件缺陷官方的定义1.软件未实现产品说明书要求的功能。2.软件出现了产品说明书指明不会出现的错误。3.软件实现了产品说明书未提到的功能。4.软件未实现产品说明书虽未明确提及但应该实现的目标。5.软件难以理解、不易使用、运行缓慢或者——从测试员的角度看——最终用户会认为不好。第一章软件测试的背景每一个使用过一些软件的人都会对软件的工作方式有自己意见和想法,要编写令所有用户都满意的软件是不可能的。要全面,最重要的是要客观评价,并非所有测试发现的缺陷都要修改。第一章软件测试的背景§3为什么会出现软件缺陷一、导致软件缺陷最大的原因是产品说明书(需求分析)需求分析代码编写设计其他第一章软件测试的背景二、软件缺陷的第二大来源是设计三、代码错误可以归咎于软件的复杂性、文档不足、进度压力或者普通的低级错误,与一、二有关。四、其他原因,如误解,重复错误,测试错误等只占极小的比例。第一章软件测试的背景§4软件缺陷的修复费用随着时间推移,修复软件缺陷的费用惊人地增长(指数级)IBM:确定软件错误的相对成本是:在设计阶段,1.5;编码前,1;编码中,1.5;测试前,10;测试中,60;交付后,100。[WattsHumphrey]TRW:确定错误的相对时间:需求分析阶段,1;设计阶段,3-6;编码阶段,10;开发测试阶段,15-40;接受性测试阶段,30-70;应用运行中,40-1000。[Boehm]第一章软件测试的背景§5软件测试员的工作内容软件测试员的目标是找出缺陷软件测试员的目标是找出缺陷,尽可能早一些软件测试员的目标是找出缺陷,尽可能早一些,并确保其得以外修复修复”缺陷并非指一定要改正软件第一章软件测试的背景§6优秀软件测试员的素质在宇宙的历史中,毁灭总是比创建容易?好的测试组织可以造就一个公司;缺少测试的组织可能倒闭一个公司大多数软件测试员应具备的素质第一章软件测试的背景具有编程方面的知识,不会害怕进入陌生环境。善于发现问题的症结,喜欢解谜。不放过任何蛛丝马迹具有创造性力求完美,不去苛求,而是尽力接近目标判断准确注重策略和外交善于说服第一部分软件测试综述第二章软件开发过程产品的组成部分软件项目成员软件开发生命周期模式第二章软件开发过程§1产品的组成部分可能考虑不到的抽象内容:产品说明书产品审查设计文档进度表前期版本的反馈竞争对手的信息测试计划用户调查易用性数据外观说明软件体系结构软件代码一、软件产品需要的投入第二章软件开发过程1、客户需求编写软件的目的是满足一些人的需求;客户需求收集可以通过问卷调查,收集软件以前版本反馈信息、收集竞争产品信息、收集期刊评论、收集焦点人群的意见以及其他诸多方式;第二章软件开发过程2、产品说明书产品说明书综合需求调查信息以及没有提出但必须要实现的需求,真正地定义产品是什么、有哪些功能、外观如何;第二章软件开发过程3、进度表制定进度的目的是了解哪项工作完成了,还有多少工作要作,何时全部完成;第二章软件开发过程4、软件设计文档对于稍大一些的程序而言,必须要有一个规划软件如何编写的设计过程。常用软件设计文档包括:结构文档数据流图、状态转换图、流程图代码注释第二章软件开发过程5、测试文档重要的测试提交文档清单包括:测试计划测试用例缺陷报告测试工具和自动测试度量、统计和总结第二章软件开发过程软件代码二、软件产品的组成帮助文件用户手册样本和示例标签和不干胶产品支持信息图标和标志错误信息广告和宣传材料安装说明文件第二章软件开发过程§2软件项目成员项目经理、程序经理或者监制人员→编写产品说明书、管理进度、进行重大决策项目不同,人员就大不相同了。但是对于大多数情况,分工是一样的,只是叫法不同而已体系架构师,系统工程师→设计整个系统体系架构程序员、开发人员→设计、编写软件并修复软件中的缺陷第二章软件开发过程测试员或质量保证(QualityAssurance,QA)员→找出并报告软件产品的问题技术作者→编制软件产品附带的文件和联机文档配置管理员或构建员→把程序员编写的代码及技术作者写的全部文档资料在一起,合成为一个软件包第二章软件开发过程§3软件开发生命周期模式软件产品从最初构思到公开发行的过程称为软件开发生命周期模式●大爆炸模式●边写边改模式●瀑布模式●螺旋模式在开发软件过程中有各种不同的方法。对特定项目而言,没有那个模式是一定最好的,有4种最常用的模式第二章软件开发过程一、大爆炸模式人力和资金→巨大的能量释放→产生了优秀的软件产品→或者一堆废品。简单→所有精力都花在开发软件和编写代码上计划、进度安排和正规开发过程几乎没有几乎没有什么测试第二章软件开发过程二、边写边改模式粗略的想法→简单的设计→漫长的来回编写、测试和修改缺陷的过程→发布产品在大爆炸模式基础上的一个进步第二章软件开发过程三、瀑布模式最初的构思到最终产品要经过一系列步骤。每一个步骤结束时,项目小组组织审查,并决定是否进入下一步。如果项目进入下一步未准备好,就停滞下来,直到准备好强调产品的定义各步骤是分立的;没有交叉无法回溯第二章软件开发过程四、螺旋模式总体思想是:一开始不必详细定义所有细节。从小开始,定义重要功能,努力实现这些功能,接受客户反馈,然后进入下一阶段。重复上述过程,直至得到最终产品螺旋模式中包含了一点瀑布模式(分析、设计、开发和测试的步骤)、一点边写边改模式(螺旋模式的每一次)和一点大爆炸模式(从外界观察)。模式发现问题早,使成本低。第一部分软件测试综述第三章软件测试的实质测试的原则软件测试的术语和定义第三章软件测试的实质§1测试的原则•输入量太大•输出结果太多•软件执行路径太多•软件说明书是主观的。你可以说从旁观者来看是缺陷。一、完全测试程序是不可能的•例:Microsoftwindows计算器程序第三章软件测试的实质关键是如何把数量巨大的可能测试减少到可以控制的范围,以及如何针对风险作出明智的抉择,那些测试重要,那些不重要;二、软件测试是有风险的行为目标是找到最优的测试量,使测试不多不少第三章软件测试的实质软件测试工作与防疫员的工作极为相似,可以报告已软件缺陷存在,却不能报告软件缺陷不存在三、测试无法显示潜伏的软件缺陷第三章软件测试的实质程序员也有心情不好的时候四、找到的软件缺陷越多,就说明附近的软件缺陷更多程序员往往犯同样的错误某些软件缺陷其实冰山一角第三章软件测试的实质1990年,BorisBeixer在其编著的《软件测试技术》(SoftwareTestingTechniques)第2版一书中描述了软件测试越多,其对测试的免疫力越强的现象五、杀虫剂怪事为了克服杀虫剂怪事,软件测试员必须不断编写不同的新的测试程序第三章软件测试的实质没有足够的时间六、并非所有软件缺陷都要修复不算真正的软件缺陷修复的风险太大不值得修复缺陷都修复的决策过程通常由软件测试员、项目经理和程序员共同参与第三章软件测试的实质尚未发现或未观察到的软件缺陷只能说是潜在缺陷七、什么时候才叫缺陷难以说清第三章软件测试的实质软件行业变化太快,去年还很先进的产品今年就过时了,同时,软件变得更庞大、更复杂,功能越来越多,导致软件开发周期越来越长。这两种反作用力形成了矛盾,结果是产品说明书经常变化。八、产品说明书从没有最终版本第三章软件测试的实质早点找出缺陷九、软件测试员在产品小组中不受欢迎控制情绪不要总是报告坏消息第三章软件测试的实质软件行业已经发展到强制使用专业软件测试员的程度了,生产低劣软件的代价太高十、软件测试是一项讲究条理的技术专业大多数软件都采用井然有序的方式开发,把软件测试员当作必不可少的核心小组成员第三章软件测试的实质§2软件测试的术语和定义软件测试要精度还是准确度很大程度上取决于产品是什么,最终取决于开发小组的目标一、精确(precision)和准确(accuracy)重要的是在术语定义上取得一致而不是在“正确性”上争论第三章软件测试的实质确认是保证软件符合产品说明书的过程;验证是保证软件满足用户要求的过程。二、确认(verification)和验证(validation)确认(verification)和验证(validation)的区别对软件测试很重要,通过对哈勃(Hubble)天文望远镜问题的分析就可以澄清这两者的区别第三章软件测试的实质●软件测试员的目标是找出软件缺陷,尽可能早一些,并确保缺陷得以修复。二、测试和质量保证(QA)●软件质量保证人员的主要职责是创建和执行:改进软件开发过程并防止软件缺陷发生的标准和方法。
本文标题:软件测试培训资料
链接地址:https://www.777doc.com/doc-988427 .html