资源预览内容
第1页 / 共78页
第2页 / 共78页
第3页 / 共78页
第4页 / 共78页
第5页 / 共78页
第6页 / 共78页
第7页 / 共78页
第8页 / 共78页
第9页 / 共78页
第10页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件测试工程师培训,软件测试用例的设计方法,回顾软件测试的流程,测试模式,测试用例的定义和特征,测试用例的定义: (1)测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。 (2)测试用例是执行的最小实体。 测试用例的特征: (1)最有可能抓住错误的; (2)不是重复的、多余的; (3)一组相似测试用例中最有效的; (4)既不是太简单,也不是太复杂。,设计测试用例的基本准则,测试用例的代表性: 能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。 测试结果的可判定性: 即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。 测试结果的可再现性: 即对同样的测试用例,系统的执行结果应当是相同的。,设计测试用例的着眼点,根据产品规格,测试基本功能; 考虑设计一般用户(非专业人员)的使用方案; 考虑设计稀有或特殊的使用方案; 与系统其他组成部分的配合(如FAX和上网可能要用到MODEM,测试中考虑对设备的共享); 考虑特殊情况(如内存和硬件的冲突等); 设计极端情况(如内存泄漏、破坏性测试等); 好的测试用例集能花费最小的代价(人力、物力、财力、时间)做最好的测试。,什么是软件缺陷,软件未达到产品说明书标明的功能。 软件出现了产品说明书指明不会出现的误。 软件功能超出产品说明书指明范围。 软件未达到产品说明书虽未指出但应达到的目标。 软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。,为什么会出现软件缺陷,导致软件缺陷最大的原因是产品说明书。 软件缺陷的第二大来源是设计方案。 编写代码 其他,软件缺陷的修复费用,从开始到计划、编制、测试、一直到公开使用的过程中,都有可能发现软件缺陷。 随着时间推移,修复软件缺陷的费用呈几何数级地增长。,软件缺陷在不同阶段发现时修改的费用示意图,什么是黑盒测试,黑盒测试法把程序看成一个黑盒子,完全不考虑程序内部结构和处理过程。 黑盒测试是在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。 黑盒测试又称功能测试。,黑盒测试,主要是为了发现以下几类错误: 是否有不正确或遗漏了的功能? 在接口上,输入能否正确地接受?能否输出正确的结果? 是否有数据结构错误或外部信息(例如数据文件)访问错误? 性能上是否能够满足要求? 是否有初始化或终止性错误?,什么是通过测试,在设计和执行测试用例时,总是首先进行通过测试。在破坏性试验之前看看软件基本功能是否实现是很重要的,否则在正常使用软件时就会奇怪为什么有那么多软件缺陷。,什么是失败测试,确信软件在普通情况下正确运行之后,就可以采取各种手段通过搞垮软件来找出缺陷。纯粹为了破坏软件而设计和执行的测试用例称为失败测试或迫使出错测试,为什么做测试用例,完全测试是不可能的: 输入量太大; 输出结果太多; 软件实现途径太多; 软件说明书没有客观标准。从不同角度看,软件缺陷的标准不同。,什么是测试用例,为达到最佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据,称之为测试用例。 我们不可能进行穷举测试,为了节省时间和资源、提高测试效率,必须要从数量极大的可用测试数据中精心挑选出具有代表性或特殊性的测试数据来进行测试。 一个好的测试用例是在于它能发现至今未发现的错误。,使用测试用例的好处,在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率。 测试用例的使用令软件测试的实施重点突出、目的明确。 在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度、缩短项目周期。 功能模块的通用化和复用化使软件易于开发,而相对于功能模块的测试用例的通用化和复用化则会使软件测试易于开展,并随着测试用例的不断精化其效率也不断攀升。,测试用例的设计过程,测试设计员(分析设计员)依据不同阶段的测试计划、设计模型和实施模型来设计该阶段测试用例。 测试设计员是具有丰富测试经验或具有软件分析设计能力的高级测试工程师。如果没有测试设计员,则可用分析设计员代替。 针对白盒,还应有驱动程序和桩模块。,测试点的确定,ISO 质量体系: 在概要设计或详细设计中应明确指出每个单元模块的测试要点、指标和方法。 CMM 质量体系: 在系统的用例模型描述中应明确指出每个用例模型的优先级及用例工作流程,每一个用例模型为一个测试点,用例模型中每一个测试需求至少应有两个测试用例。,理解上的误区,测试用例应由测试设计员或分析设计员来制定,而不是普通的测试员。 测试点应由分析设计员确立,与测试人员无关。 测试工作展开于项目立项后,而不是代码开发完成之后。 测试对象不仅仅是源代码,还包括需求分析、需求规格说明书、概要设计、概要设计说明书、详细设计、详细设计说明书、使用手册等各阶段的文档。,测试用例的设计方法,等价类划分 边界值分析 因果图 判定决策表 错误猜测法,如何测试一个两位数的加法计算器,测试需求: 测试两个参数的值相加后的结果是否正确。其中: 输入的数值在-99到99之间 大于99或小于-99的输入应被拒绝,并显示错误信息,如何测试一个两位数的加法计算器,根据测试需求,我们开始测试。分别给第一个参数和第二个参数输入表中的值,得到的测试结果如表所示: 很明显,如果我们对第一个参数的值分别取从-99到99的199个数,第二个参数的值分别取从-99到99的199个数,我们不可能对两位数相加的所有情况进行穷举测试。如果不能进行穷举测试,我们将面临以下问题: 在测试了11,12,1(-1)和1(-2)之后,还是否有必要测试13,14呢? 如果不对加法计算器程序进行穷举测试,能否放心的认为所有的参数组合都是正确的呢? 对以上两个问题,我们是不是找不到解决的办法?,等价类划分,等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据当作测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值,也就是说,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误;反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误。,怎样划分等价类(一),如果输入条件规定了取值的范围或值的个数,则可确定一个有效等价类和两个无效等价类; 如果一个输入条件说明了一个“必须成立”的情况,则可划分一个有效等价类和一个无效等价类; 如果输入条件规定了输入数据的一组可能的值,而且程序是用不同的方式处理每一种值,则可为每一种值划分一个有效等价类,并划分一个无效等价类; 如果我们确知,已划分的某等价类中的各元素(例子)在程序中的处理方式是不同的,则应据此将此等价类进一步划分成更小的等价类。 在确立了等价类之后,建立等价类表,列出所有划分出的等价类:,确定等价类测试用例的步骤,为每个等价类规定一个惟一的编号; 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖; 设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。,等价类划分,第一步:在本案例中我们根据测试需求可以把两位数加法分为如图的三个等价类:一个有效数据的等价类,两个无效数据等价类(有效数据等价类就是:由那些对程序的规格说明有意义的、合理的输入数据所构成的集合;无效数据等价类就是:那些对程序的规格说明不合理的或无意义的输入数据所构成的集合)。,等价类划分,第二步:在实际工作中,我们通常在确立了等价类以后,把程序中所有的等价类建立等价类表,以便在编写测试用例的时候有所依据。,等价类划分,第三步:根据上面的等价类表,我们就可以确定测试用例了,步骤为: 为等价类表中的每一个等价类分配一个唯一的编号。 设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这一步骤,从而使所有有效等价类均被测试用例所覆盖。 与上一步类似,设计一个新的测试用例,使它只覆盖一个无效等价类。重复这一步骤,从而使所有无效等价类均被测试用例所覆盖。,等价类划分,第四步:细化等价类划分 在测试“-99=数值=99”的这个等价类区间的时候,我们会发现如1040,-20+30和-30+(-30)这类的正数相加,正数负数相加,负数相加也是不同的等价区间。因此我们可以使用更多的等价类划分:,根据以上等价类划分的结果,得出下表的等价类表,等价类划分,第五步:根据上面划分的4个等价类,我们至少需要有5个测试用例,等价类划分,测试需求 假定一台ATM机允许提取增量为50人民币,总额为从50人民币到5000人民币(含5000人民币)不等的现金。测试能否提取想提请的钱数(不考虑由于硬件的原因造成的提取错误)。,等价类划分,第一步: 划分等价类 根据测试需求,需要考虑如下三个等价类划分:一个等价类是有效数据,另外两个是无效数据。,等价类划分,第二步: 建立等价类表,等价类划分,第三步: 确定测试用例,等价类划分,第四步:细化等价类划分。 只要运用等价类划分,我们就只需要一个有效的测试用例和两个无效的测试用例就能进行充分的覆盖。还可以尝试将等价类进一步细化,考虑提取钱的数目为负的钱数,零钱数或特别大可能引起ATM机崩溃等等; 这些等价类的进一步细化请大家自己给予考虑。,等价类划分,等价类的特点: 通过上面的例子可以看出称为等价类的一组数据它们都: 测试相同的内容 如果等价类中的一个测试能够捕获一个缺陷,那么选择该等价类中的其他测试也能捕获该缺陷 如果等价类中的一个测试不能捕获缺陷,那么选择该等价类中的其他测试也不会捕获缺陷 如果正确的划分等价类,可以大大降低测试用例的数量,测试会准确有效。如果错误的将两个不同的等价类当作一个等价类,那就会遗漏一种测试情况。相反的,把同一个等价类看作了两个不同的等价类,那么测试就会是冗余的。,等价类划分,等价类划分中的核心要点: 为了避免测试用例的冗余或遗漏,如何确定等价类是使用等价类划分方法中的一个重要问题。我们必须在分析需求规格说明书的基础上划分等价类,列出等价类表,从而确定测试用例。下面给出进行等价类划分的几个参考依据: 若某个输入条件说明了一个必须成立的情况,则可划分一个有效等价类和一个无效等价类。例如上面的例子,输入数据除了在-99和99之间,还隐含了输入数据必须是数字的条件,这样我们还可以设置无效等价类为输入字母数据,有效等价类为输入数字数据。 若某个输入条件对取值的范围或值的个数进行了规定,则可确定一个有效等价类和两个无效等价类。例如,每个输入数据值是从100到200,则可划分一个有效等价类,大于等于100且小于等于200;两个无效等价类,小于100的数值和大于200的数值。 如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类.,等价类划分,若在某个输入条件中对输入数据的一组可能值进行了规定,并且程序是用不同的方式处理每一种值的,则可为每一种值划分一个有效等价类,并针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。例如,在彩票对奖方案中规定对显示图案为梅花、黑桃、方块和红桃的彩票分别计算中奖金额。因此可以确定四个有效等价类梅花、黑桃、方块和红桃,以及一个无效等价类,它是所有不符合以上花色的彩票的集合。 如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例如,C语言规定语句必须以“;”结束。这时就可以确定一个有效等价类“以;结束”,若干个无效等价类“以:结束”、“以,结束”等等 若已划分的某等价类中的各元素在程序中的处理方式是不同的,则应当将此等价类进一步划分成更小的等价类。例如我们把两位数加法的输入划分为输入数字为有效,输入字母为无效,因为当数值大于99和小于-99的时候的处理方式又是不同的,所以我们要继续把它划分成更小的等价类。,等价类划分,划分等价类要注意的问题 即考虑有效等价类,同时也要考虑无效等价类: 利用有效等价类生成的测试用例,可以检验程序是否实现了需求规格说明书中
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号