软件测试第二章--软件测试基础

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

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

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

资源描述

软件测试基础第二章2012年10月8日课程内容软件测试的基本概念软件测试的关键问题软件测试的复杂性与经济性软件测试的原则停止测试的标准密级:内部公开•中兴通讯版权所有2.1软件测试的基本概念尽管软件测试是一门技术很强的学科,但正确认识测试的目的十分重要,测试目的决定了测试方案的设计。你认为软件测试的目的是什么?小插曲对软件测试错误的理解如果发布出去的软件有质量问题,那是软件测试人员的错。软件测试技术要求不高,至少比编程容易多了。软件测试是测试人员的事,与开发人员无关。设计-实现-测试,软件测试是开发后期的一个阶段。测试后没有发现缺陷,说明我们的软件没有缺陷。软件测试的目的基于不同的立场,存在着两种完全不同的测试目的:从用户(测试人员)的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。密级:内部公开•中兴通讯版权所有2.1.1软件测试的目的如果我们的目的是要证明程序中没有隐藏的故障——那我们就会不自觉地回避可能出现故障的地方,设计出一些不易暴露故障的测试方案,从而使程序的可靠性受到极大的影响。如果我们的目标是要证明程序中有错——那就会力求设计出最能暴露故障的测试方案。想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们就能够发现软件中的错误。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。实施测试收集到的测试结果数据为可靠性分析提供了依据。测试不能表明软件中不存在错误,它只能说明软件中存在错误。密级:内部公开•中兴通讯版权所有软件测试以发现故障为目的,是为了发现故障而执行程序的过程。软件测试的目的密级:内部公开•中兴通讯版权所有2.1.2软件测试的定义1.不同时期关于软件测试的定义2.IEEE在软件工程标准术语中给软件测试下的定义是:“使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别”。密级:内部公开•中兴通讯版权所有该定义包含了两方面的含义:1)是否满足规定的需求2)是否有差别密级:内部公开•中兴通讯版权所有测试的成功与失败发现错误?没发现错误?密级:内部公开•中兴通讯版权所有软件测试常用术语●测试1)测试是一种活动,在该活动中一个系统或组成部分在特定条件下被运行,结果被观察或记录,并对该系统或组成部分的某些方面进行评估。2)测试是一个或多个测试用例的集合。密级:内部公开•中兴通讯版权所有●测试用例1)测试用例是为特定的目的而开发的一组测试输入、执行条件和预期结果。2)测试用例是执行的最小实体。一个测试用例由两部分组成:对程序输入数据的描述和由这些输入数据应产生的正确结果的精确描述。密级:内部公开•中兴通讯版权所有测试用例举例我们要测试一个三角形程序,该程序完成:输入三个整数a、b和c,程序判断由这三条边构成的三角形类型是:等边三角形、等腰三角形还是一般三角形,并打印出相应的信息。密级:内部公开•中兴通讯版权所有●测试步骤测试步骤详细说明了如何设置、执行和评估特定的测试用例。密级:内部公开•中兴通讯版权所有软件测试主要涉及5方面的问题:谁来执行测试?测试什么?什么时候测试?怎样进行测试?测试停止的标准是什么?软件测试涉及的关键问题密级:内部公开•中兴通讯版权所有2.1.2软件测试涉及的关键问题软件测试主要涉及5方面的问题:谁来执行测试?测试什么?什么时候测试?怎样进行测试?测试停止的标准是什么?一个软件产品的开发通常涉及开发者和测试者两种角色。开发者通过开发而形成产品,例如分析,设计,编码,调试或者文档编制。测试者通过测试来检测产品中存在的缺陷,包括根据特定的目的设计测试用例,构造测试,执行测试以及评估测试结果等。密级:内部公开•中兴通讯版权所有2.1.2软件测试涉及的关键问题软件测试主要涉及5方面的问题:谁来执行测试?测试什么?什么时候测试?怎样进行测试?测试停止的标准是什么?表现在程序中的故障,并不一定是编码所引起的。即使针对源程序进行测试,所发现故障的根源也可能在开发前期的各个阶段。实际上,软件需求分析、设计和实施阶段是软件故障的主要来源,因此,需求分析、概要设计、详细设计以及程序编码等各个阶段所得到的文挡,包括需求规格说明分析、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。密级:内部公开•中兴通讯版权所有2.1.2软件测试涉及的关键问题软件测试主要涉及5方面的问题:谁来执行测试?测试什么?什么时候测试?怎样进行测试?测试停止的标准是什么?测试的另一个极端是每天都进行测试,一旦软件的每个模块开发出来之后就对它们测试,这样显然又会延缓早期开发的进度。测试开始的时间越早,测试执行的越频繁,所带来的整个软件开发成本的下降就会越多。密级:内部公开•中兴通讯版权所有2.1.2软件测试涉及的关键问题软件测试主要涉及5方面的问题:谁来执行测试?测试什么?什么时候测试?怎样进行测试?测试停止的标准是什么?规范说明一个软件要做什么,而程序实现则规定了软件应怎样做。对软件进行测试就是根据软件的功能规范说明和程序实现,利用介绍的各种测试方法,生成有效的测试用例,对软件进行测试。密级:内部公开•中兴通讯版权所有2.1.2软件测试涉及的关键问题软件测试主要涉及5方面的问题:谁来执行测试?测试什么?什么时候测试?怎样进行测试?测试停止的标准是什么?从现实和经济的角度来看,对软件进行完全测试是不可能的。因为无法判断当前查出的故障是否为最后一个故障,所以决定什么时候停止测试是一件很最困难的事。密级:内部公开•中兴通讯版权所有实用的测试停止的标准应该基于以下几个因素:●成功地采用了具体的测试用例设计方法。●每一类覆盖的覆盖率。(语句,判定,条件等)●故障检测率(即每一单元测试时间内检测出的故障数)低于指定的限度。基于故障检测数量的标准必须注明故障严重性程度。●检测出故障的具体数量(估计存在的故障总量的比率)或消耗的具体时间。2.1.2软件测试涉及的关键问题软件测试和软件质量保证是不是一回事?小插曲密级:内部公开•中兴通讯版权所有2.1.3软件测试与软件质量保证软件故障带来的危害测试能帮助确保一个产品满足需求,但测试并不是质量保证。密级:内部公开•中兴通讯版权所有2.1.3软件测试与软件质量保证在许多组织中,软件质量保证部门通常负责开发测试计划和执行系统测试,也可能会对开发过程中的测试进行监测和保留统计数据。测试是任何质量保证过程中必需的但不是所有的部分。测试在确保质量方面的主要贡献在于它能发现那些在一开始就应该能够避免的错误。软件质量保证部门从事的是那些用来防止和去除软件缺陷的活动,负责制订为了生产出更好的软件而应该遵守的标准,包括定义为理解设计意图而创建的各种文档的类型,指导项目活动的过程以及量化决议结果的方法等。密级:内部公开•中兴通讯版权所有2.2软件故障故障(fault)、失效(failure)、错误(error)、缺陷(defect)、隐错(bug)、过失(mistake)、异常(anomaly)等术语常用来描述软件失败时的现象密级:内部公开•中兴通讯版权所有软件故障在金融、交通领域中案例(2)2006年10月10日,香港机场中央计算机系统故障导致47个航班延误(3)2005年11月1日上午东京股市因系统故障暂停交易(1)2006年2月5日,因是终端设备软件问题,南京地铁全线售检票系统瘫痪,有一万多名乘客受到影响。软件未达到产品需求表明的功能;软件出现了产品需求指明不会出现的错误;软件功能超出产品需求指明的范围;软件未达到产品需求虽未指出但应达到的目标;软件测试人员认为软件难以理解、不易使用、运行速度慢,或者最终用户认为不好软件故障举例密级:内部公开•中兴通讯版权所有我们采用IEEE制定的标准术语。●错误(error)——人是会犯错误的。一个很接近的同义词是过失(mistake)。过失是人犯下的,是人做的一件错事或人为产生的一个不正确结果。●故障(fault)——故障是错误的结果(可能导致失效)。更精确地说,故障是错误的表现。与故障很接近的一个同义词是缺陷(defect),●失效(failure)——故障(例如崩溃)引起的结果(表现)。2.2.1故障定义软件故障产生原因需求变化缺乏交流设计错误文档缺乏故障软件复杂开发编码时间压力……需求规格说明中含有错误的或者不可能实现的需求,或者没有准确的表述客户所需要的内容,或遗漏了一些需求等;系统设计中有不合理的地方;程序设计中有错误;程序代码中有问题…………密级:内部公开•中兴通讯版权所有软件开发经过制定开发计划,进行需求分析、软件设计阶段之后,才能进入编写程序阶段,程序编写完之后还必须经过大量的测试工作才能交付使用。因此,编写程序只是软件开发过程的一个阶段。在典型的软件开发工程中,编写程序所需的工作量只是软件开发全部工作量的20%左右。密级:内部公开•中兴通讯版权所有据美国一家公司的统计表明,在查找出的软件故障中,属于程序编写错误的仅占36%,属于需求分析和软件设计故障的约占64%。分析软件故障分布情况,有助于将测试的主要精力更好地集中到最有价值的地方,以改进软件测试过程,提高软件测试的效率。密级:内部公开•中兴通讯版权所有2.2软件故障2.2.2软件故障分类软件故障有多种分类方法:可以以故障出现的开发阶段来划分,以失效产生的后果来划分,以解决难度来划分,以不解决会产生的风险来划分,等等。图2-2给出了软件故障的大致分布情况。56%需求27%设计7%代码10%其它56%需求27%设计7%代码10%其它图2-2软件故障分布密级:内部公开•中兴通讯版权所有严重程度举例说明1.轻微2.中等3.使人不悦4.影响使用5.严重6.较严重7.很严重8.无法忍受9.灾难性10.传染性强拼写错误等误导或重复信息等被截断的名称等有些情况没有处理丢失功能不正确的处理经常出现严重的错误数据库破坏系统停机影响其它系统停机表2-1按严重程度分类的软件故障密级:内部公开•中兴通讯版权所有软件故障的其他定义软件缺陷一般指如下5种情况:(1)软件未实现产品说明书要求的功能。(2)软件出现了产品说明书指明不会出现的错误。(3)软件超出实现了产品说明书提到的功能。(4)软件实现了产品说明书虽未明确指出但应该实现的目标。(5)软件难以理解,不易使用,运行缓慢或终端用户认为不好。密级:内部公开•中兴通讯版权所有以计算器为例说明每一条规则的意义计算器的产品说明书声称它能够准确无误地进行加、减、乘、除运算。当你拿到计算器后,按下(+)键,结果什么反应也没有,根据第1条规则,这是一个缺陷。假如得到错误答案,根据第1条规则,这同样是一个缺陷。若产品说明书声称计算器永远不会崩溃、锁死或者停止反应。当你任意敲键盘,计算器停止接受输入,根据第2条规则,这是一个缺陷。若用计算器进行测试,发现除了加、减、乘、除之外它还可以求平方根,说明书中从没提到这一功能,根据第3条规则,这是软件缺陷。软件实现了产品说明书未提到的功能。密级:内部公开•中兴通讯版权所有以计算器为例说明每一条规则的意义若用计算器进行测试,发现除了加、减、乘、除之外它还可以求平方根,说明书中从没提到这一功能,根据第3条规则,这是软件缺陷。软件实现了产品说明书未提到的功能。若在测试计算器时,会发现电池没电会导致计算不正确,但产品说明书未指出这个问题。根据第4条规则,这是个缺陷。第5条规则是全面的。如果软件测试员发现某些地方不对劲,无论什么原因,都要认定为缺陷。如“=”键布置的位置使其极其不好按;或在明亮光下显示屏难以看清。根据第5条规则,这些都是缺陷。密级:内部公开•中兴通讯版权所有由于人的主观认识常常难以完全符合客观现实,与工程密切相关的各类人员之间的通

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

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

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

×
保存成功