文档介绍:第十二章软件测试简介软件测试基本概念软件测试分类自动化测试常见测试工具BUG管理流程软件测试的定义:使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(Correctness)、pleteness)和质量(Quality)的软件过程;软件测试是为了发现程序中的错误而执行的过程。定义软件测试历史1947年,测试等同于调试1957年,测试是为了表明程序正确而进行的1972年,测试是为发现错误而至此能够的一个程序或者系统的过程1996年,提出测试能力成熟度TCMM(TestingCapabilityMaturityModel),测试支持度TSM(TestabilitySupportModel),测试成熟度TMM(TestingMaturityModel),测试工具流行。2002年,测试是为了度量和提高被测软件的质量,对测试件进行工程设计、实施和维护的整个生命周期过程。软件测试著名失败案例狮子王案例:缺乏配置测试Intel浮点除法软件缺陷美国航天局火星登陆爱国者导弹防御系统软件缺陷软件未达到产品说明书(简称,SPEC)标明的功能;软件出现了产品说明书指明不会出现的错误;软件功能超出产品说明书指明范围;软件未达到产品说明书虽未指出但应达到的目标,此条的目的是抓住产品说明书上遗漏之处;软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。软件模型或者说业务建模制定不正确,更直观的理解是,SEPC本身不明确或有错误,没有能很好的描述要开发的软件,这类原因占了70%左右,并且很难于纠正;软件庞大,功能十分复杂;编程过程出错,此类原因导致的错误大概占20%,一般来说比较容易纠正;个别功能要求改变而影响到其他部分;与要开产的软件对接的第三方软件有缺陷;人为因素,常见的因素包括:项目组管理方法、项目进度要求时间紧、项目组配备人力不足、组内及组外沟通不充分等几种情况。产生软件缺陷的原因纠错阶段单位费用1功能需求搜集分析/软件设计阶段1单位费用2编程或分块测试阶段5单位费用3整体或系统测试阶段10单位费用4早期用户试用或Beta测试阶段15单位费用5软件推出市场后30单位费用发现阶段修正花费对照表软件测试的原则为了能够更好的进行软件测试,提高测试的整体效率,降低项目的整体成本,我们在执行软件测试过程中可以参照以下几点原则:1、完全测试程序是不可能的,不可能找出软件的所有缺陷,这是因为:输入量太大输出结果太多软件实现途径太多软件说明书没有客观标准,从不同的角度来看,软件缺陷的标准不同。2、软件测试是有风险的行为,如果决定不去测试所有的情况,那就是选择了风险。软件测试人员要学会的一个主要原则是如何把无边无际的可能减少到可以控制的范围,以及如何针对风险制订作出明智抉择,去粗存精。3、测试无法显示潜伏的软件缺陷,软件测试工作与防疫员的工作极为相似,可以报告已发现的软件缺陷,却无法报告潜伏的软件缺陷,更不可能保证找到全部的缺陷。4、找到的软件缺陷越多,就说明软件缺陷越多。生活中的寄生虫和软件缺陷几乎完全一样,两者都成群出现。发现一个附近就会有一群。软件测试的原则(续)5、杀虫剂怪事,与农药杀虫是一样的,软件对测试方法及技术也有免疫力,只有发明新的杀虫剂(测试技术或方法)去找虫子。6、并非所有软件缺陷都能修复。7、难以说清的软件缺陷,因为开发小组使用的最佳工作方式千差万别,大家对缺陷的理解也不一致。8、产品说明书不断变化,整个行业变化太快,同时软件变得更庞大、更复杂,功能越来越多,这些都会导致用户描述和定义软件的产品说明书一变再变。9、软件测试员在小组中不受欢迎,软件测试员的任务是检查和批评同事的工作,挑毛病,公布发现的问题。10、软件测试是一项讲究条理的技术专业,当前软件行业已经发展到强制使用专业软件测试员的阶段了,因为生产低劣软件的代价太高。软件测试的原则(续)