软件测试基础知识及研发全过程(PPT137页)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件测试基础知识及研发全过程1.1软件测试的基本概念1.2软件测试的依据与人员组织1.3软件测试的生命周期与模型1.4软件测试计划及其相关文档第一章软件测试导论1.1.1软件测试的定义1.1.2软件测试的必要性1.1.3软件缺陷1.1.4软件测试的原则1.1.5软件测试的误区1.1.6软件测试与软件质量保证的关系1.1.7软件测试技术的发展1.1软件测试的基本概念软件的质量是软件的生命。为了保证软件的质量,人们在长期的软件开发过程中积累了许多经验,形成了许多有效的方法(技术的和管理的)。但是借助这些方法,只能减少软件中的错误和不足,但不能完全避免错误。1.1软件测试的基本概念1.什么是软件测试软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。对软件测试的定义很多,但一般可描述如下:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一组测试用例,利用测试用例去运行程序,以发现程序错误的过程。简言之,软件测试是为了发现错误而执行程序的过程。1.1.1软件测试的定义目前,根据侧重点的不同,主要有以下三种观点:1983年IEEE将软件测试定义为:“使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”。明确地提出了软件测试是以检验软件是否满足需求为目的。Myers认为:“是为了发现错误而执行程序的过程”。明确提出了软件测试是以对软件“寻找错误”为目的。多数软件开发商认为:软件测试是一种重要的软件质量保证活动,其动机是通过一些经济、高效的方法,捕捉软件中的错误,保证软件内在质量。明确提出了软件测试是以保证软件内在质量。1.1.1软件测试的定义2.软件测试与软件调试的区别概念不同:软件测试是一个在可控环境中执行软件的过程,以验证是否按预期运行。软件调试是一个分析和定位软件BUG的过程。作用不同:调试是测试的一个基础,调试支持测试,但不能完全替代测试。目的不同:调试使软件能正确运行,而测试是发现软件中的错误。对象不同:调试的对象是代码,测试的对象是开发过程中的所有的产品。1.1.1软件测试的定义3.软件测试的目的基于不同的立场,存在两种完全不同的测试目的。从用户的角度出发,希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可以接受该产品。从软件开发者的角度出发,希望成为表明软件产品中不存在错误的过程,验证软件已正确地实现了用户的要求,确立人们对软件质量的信心。综合明来,测试的目的是通过对软件错误的原因和分布进行归纳,来发现并排除当前软件产品的缺陷,对在需求和设计过程中存在的问题查缺补漏,确保软件产品的质量。4.软件测试的基本职责软件测试有两个基本职责:一是验证即前后阶段需求是否一致。二是确认即满足最终需求。1.1.1软件测试的定义1.为什么要进行软件测试软件由人开发,人会犯错误——〉软件(程序+数据+文档)都有缺陷。无法避免人类犯错,但是可以通过努力寻找隐藏在软件中的缺陷。多、快、好、省软件测试是提高软件质量、保证软件质量的手段之一。1.1.2软件测试的必要性用户所说的需求分析人员理解的《系统需求规格说明书》开发人员理解的实际软件人不是完美的,在设计和实现时会出错信息传递的误差1.1.2软件测试的必要性工程硕士12没有软件工程和项目管理概念下,软件开发现象1.1.2软件测试的必要性2.软件缺陷案例软件缺陷将造成灾难性危害或对用户产生巨大的影响。2003年,软件问题造成美国东部及加拿大停电,导致5000万人受影响,3人丧生,60亿美元的损失。2000年,美国海军飞机控制软件问题导致飞机坠落,4人丧生。1997年韩国空难,导致225人丧生(雷达控制软件问题)2004年,北美银行已新安装的软件的缺陷,使数以百万计的客户受影响,缺陷修复花费两个星期,造成亿元损失。2003年,美国专门为学生贷款的公司由于软件出错,错误计算80万学生的贷款利率,导致800万元的损失……1.1.2软件测试的必要性3.软件测试是软件开发的重要环节4.软件测试是保证软件质量的主要手段。1.1.2软件测试的必要性1.1.3软件缺陷1.软件缺陷的定义软件缺陷(bug)的定义也很多,综合说来是程序软件中存在一种破坏系统正常运行能力的问题、错误或瑕疵,导致软件产品在某种程度上不能满足用户的需要。软件缺陷是指软件产品中所存在的导致不能完全满足用户需求的错误。按IEEE729标准定义,软件缺陷的含义有2个方面:•软件产品的内部:软件缺陷是软件产品开发或维护过程中所存在的错误、瑕疵等各种问题。•软件产品的外部:软件缺陷是软件所需要实现的某种功能的失效或违背。2.软件缺陷外部表现的判断规则软件未实现产品说明书要求的功能。软件出现了产品说明书指明不会出现的错误。软件超出实现了产品说明书提到的功能。软件未实现产品说明书虽未明确指出但应该实现的目标。软件难以理解,不易使用,运行缓慢或者终端用户认为不好。第5条规则是全面的。如果软件测试员发现某些地方不对劲,无论什么原因,都要认定为缺陷。1.1.3软件缺陷以计算器为例说明判断规则。若产品说明书声称能够准确无误地进行加、减、乘、除运算,当你按下(+)键,结果什么反应也没有;根据第1条规则,是一个缺陷。假如得到错误答案;根据第1条规则,同样是一个缺陷。若产品说明书声称永远不会崩溃、锁死或者停止反应,当你任意敲键盘,计算器停止接受输入。根据第2条规则,是一个缺陷。若在测试计算器过程中,发现除了加、减、乘、除之外它还可以求平方根,而产品说明书中没提到该功能。根据第3条规则,是一个缺陷。若在测试计算器过程中,发现电池电量很少时,会导致计算不正确,但产品说明书未指出该问题。根据第4条规则,是一个缺陷。若“=”键布置的位置使其极不好按,或在明亮光下显示屏难以看清。根据第5条规则,是一个缺陷。1.1.3软件缺陷3.软件缺陷的种类从功能表现形式来分,软件缺陷有三种类型:完全没有实现的功能。例如用户需要实现A、B、C三个功能,但是系统只实现了A、B两个功能基本实现了用户需求的功能,运行时出现功能或性能上的问题。例如满足系统要求,但运行经常报错、死机,响应时间要求为5秒,实际为10秒。实现了用户不需要的功能。例如用户要求实现A、B、C三个功能,实际实现了A、B、C、D四个功能。1.1.3软件缺陷还表现在其他方面。如:特性没有实现或部分实现;设计不合理;实际结果和预期结果不一致;运行出错(运行中断、系统崩溃、界面混乱);数据结果不正确、精度不够;用户不能接受的其他问题(存取时间过长、界面不美观)。1.1.3软件缺陷4.软件缺陷的级别软件测试员所发现的大多数缺陷是难以觉察的简单错误,不明显,也不严重;并且有些是真正的错误,有些不是。一般来说,问题越严重的,其优先级越高,越应得到及时的纠正。软件公司对缺陷后果的严重程度的定义不尽相同,但一般可以分为4种级别:1.1.3软件缺陷致命的:致命错误是指造成系统或应用程序崩溃、死机、悬挂,或造成数据丢失、主要功能完全失效等。严重的:严重错误是指功能或特性没有实现,主要功能部分丧失,次要功能完全丧失,或致命的错误声明。一般的:一般错误是指虽然不影响系统的基本使用,但没有很好地实现功能,没有达到预期效果。如次要功能丧失,提示信息不太准确,或用户界面差,操作时间长等。微小的:微小错误是指对功能几乎没有影响,产品及属性仍可使用,如有个别错别字、文字排列不整齐等。除了这4种之外,有时需要“建议”级别来处理测试人员所提出的建议或质疑,如建议程序做适当的修改,来改善程序运行状态,或对设计不合理、不明白的地方提出质疑。1.1.3软件缺陷1.轻微:词语拼写错误2.中等:误导或重复信息3.使人不悦:被截断的信息,0.00¥帐单4.影响使用:有些交易没有处理5.严重:丢失交易6.非常严重:不正确的交易处理7.极为严重:经常出现“非常严重”的错误8.无法忍受:数据库破坏9.灾难性:系统停机10.容易传染:扩展到其他系统的系统停机缺陷类型的综合讨论参见软件异常IEEE标准分类(IEEE,1993)1.1.3软件缺陷5.软件缺陷的状态为便于跟踪和管理软件的缺陷,可以定义不同的状态。软件缺陷的状态一般有4种:激活状态:问题还没有解决,测试人员新报的bug,或验证后bug仍然存在。已修正状态:开发人员针对所存在的缺陷,修改程序,认为已解决问题,或通过单元测试。关闭或非激活状态:测试人员验证已经修正的bug后,确认bug不存在以后的状态。1.1.3软件缺陷6.软件缺陷产生的原因造成软件缺陷的原因归纳起来有3个方面:技术问题算法错误。语法错误。计算方法与精度要求不匹配或取值精度不够。结构不合理。接口参数不匹配。1.1.3软件缺陷团队工作问题与用户的沟通不够,对需求不是十分清楚。不同阶段的开发人员对同一问题理解不一致。设计或编程上的假定或依赖性,相互间沟通不充分。软件本身问题文档错误、内容不正确或拼写错误。数据考虑不周全,引起强度或负载不合理。对边界考虑不周全,如漏掉几个边界条件。对实时软件,同步不精确,引起时间上不协调、不一致。没有考虑系统崩溃后在安全性、可靠性的隐患。硬件或系统软件上存在的错误。软件开发标准或过程上的错误。1.1.3软件缺陷7.软件缺陷的组成软件缺陷是由很多原因造成的,从按软件开发过程来看,不同阶段的工作,导致软件缺陷的差异性很大,如图所示。需求分析是软件缺陷出现最多的阶段。图1-1软件缺陷构成示意图1.1.3软件缺陷278.与缺陷相关的概念软件错误(softwareerror):在软件生存期内的不希望或者不可接受的人为错误。软件故障(SoftwareFault):软件运行过程中出现的一种不希望或不可接受的内部状态。此时,如果没有适当(容错)加以及时处理,便会产生软件失效。软件失效(SoftwareFailure):软件运行时产生的一种不希望或不可接受的外部行为。1.1.3软件缺陷需求阶段缺陷概要设计阶段缺陷详细设计阶段缺陷代码阶段缺陷放大n1倍放大n2倍放大n3倍图1-5缺陷放大模型因此,从需求开始,尽早制定测试计划,坚持在软件开发的各个阶段的技术评审,才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些隐患,提高软件质量。1.尽早地和不断地进行软件测试IBM的研究结果表明,缺陷存在放大趋势。从图可见,问题发现越早,解决问题的代价就越小,这是软件开发过程中的黄金法则。1.1.4软件测试的原则2.不可能完全的测试对一个程序进行完全测试就是意味着在测试结束之后,再也不会发现其它的软件错误了。其实,这是不可能的,主要原因有以下几点:不可能测试程序对所有可能输入的响应。不可能测试到程序每一条可能的执行路径。无法找出所有的设计错误。不能采用逻辑来证明程序的正确性。1.1.4软件测试的原则如果测试一个计算器程序的功能,需要进行多少次输入?不计其数!整型:从1+1到999999999999999999999999999999+999999999999999999999999999999小数:1.0+0.1,1.0+0.2…等等键盘上的任何一种组合乘法和除法运算重复上面的操作1.1.4软件测试的原则由小到大是指软件测试的粒度。无论是传统的软件测试还是面向对象的软件测试都要遵循该原则。多个单元组合过渡到集成测试,集成测试过渡到系统测试。虚线是各个测试阶段的发布基线,随着测试的逐步深入,范围的逐步扩大,测试时间、可用资源也随之增大。3.由小到大,增量测试测试时间测试范围可用资源系统测试集成测试单元测试单元测试测试过程关系图1.1.4软件测试的原则4.避免测试自己的程序避免程序员测试自己的代码的主要原因如下:程序员轻易不会承认自己写的程序有错误。程序员的测试思路有局限性,测试时容易受到编程思路的影响。多数程序员没有严格正规的职业训练,缺乏专业测试人员的意识。程序员没

1 / 137
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功