软件测试的艺术(第3版)第04章-测试用例的设计

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

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

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

资源描述

4.1白盒测试4.2黑盒测试4.3错误猜测4.4测试策略第4章测试用例的设计软件测试中最重要的因素是设计和生成有效的测试用例任何程序的测试必定是不完全的,所以很难做到完全发现软件中的错误,那么如何发现尽可能多的错误?软件测试最关键的问题在给定的时间和成本约束下,在所有可能的测试用例中,哪个子集最有可能发现最多的错误?采用某种策略设计测试用例随机输入测试:低效有策略的黑盒测试和白盒测试第4章测试用例的设计黑盒测试边界值分析等价类划分因果图判定表错误猜测第4章测试用例的设计——设计方法白盒测试语句覆盖判定覆盖条件覆盖判定/条件覆盖多重条件覆盖语句覆盖:设计若干测试用例,运行被测程序,使得每一个可执行语句至少执行一次。判定/分支覆盖:设计若干测试用例,运行被测程序,使得程序每个判断的取真分支和取假分支至少经历一次。条件覆盖:设计若干测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。判定/条件覆盖:设计若干测试用例,运行被测程序,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。多重条件覆盖:设计若干测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。4.1白盒测试——逻辑覆盖准则例子4.1白盒测试//被测试的程序段如下if(a1&&b==0){x=x/a;}if(a==2||x1){x=x+1;}a1&&b==0a==2||x1x=x/ax=x+1ABCDEyesyesnono语句覆盖的测试用例(1个)[(2,0,4),(2,0,3)]覆盖ace判定/分支覆盖的测试用例(2个)方案1:[(2,0,4),(2,0,3)]覆盖ace[(1,1,1),(1,1,1)]覆盖abd方案2:[(2,1,1),(2,1,2)]覆盖abe[(3,0,3),(3,1,1)]覆盖acd问题:如果将x1错写成x1,以上判定/分支覆盖测试用例时发现不了的(需让判断2中的两条件分别为假、真)。4.1白盒测试——测试用例设计对于第一个判断:条件a1真时为T1,否则为T1条件b==0真时为T2,否则为T2对于第二个判断:条件a==2真时为T3,否则为T3条件x1真时为T4,否则为T4条件覆盖的测试用例(2个)方案1:[(2,0,4),(2,0,3)]覆盖aceT1,T2,T3,T4[(1,0,1),(1,0,1)]覆盖abdT1,T2,T3,T4[(2,1,1),(2,1,2)]覆盖abeT1,T2,T3,T4方案2:[(1,0,3),(1,0,4)]覆盖abeT1,T2,T3,T4[(2,1,1),(2,1,2)]覆盖abeT1,T2,T3,T44.1白盒测试——测试用例设计判定/条件覆盖的测试用例(2个)[(2,0,4),(2,0,3)]覆盖aceT1,T2,T3,T4[(1,1,1),(1,1,1)]覆盖abdT1,T2,T3,T4多重条件覆盖(4个)[(2,0,4),(2,0,3)]覆盖aceT1,T2,T3,T4[(1,1,1),(1,1,1)]覆盖abdT1,T2,T3,T4[(2,1,1),(2,1,2)]覆盖abeT1,T2,T3,T4[(1,0,3),(1,0,4)]覆盖abeT1,T2,T3,T44.1白盒测试——测试用例设计对包含每个判定只存在一种条件的程序的测试准则设计出足够数量的测试用例,实现:将每个判断的所有结果都至少执行一次对包含多重条件判断的程序的测试准则是设计出足够数量的测试用例,将每个判断的所有可能的条件结果的组合4.1白盒测试——测试准则总结以上的每种方法都能提供一组有用的测试用例,但都不能单独提供一个完整的测试用例集合,用以下策略可得到较好的测试结果:1.如果规格说明中输入条件有明显的逻辑关系以及与结果的因果关系,应该首先使用因果图分析或判定表2.在任何情况下都应该使用边界值分析方法,而且是对输入和输出边界进行的分析,用以产生一系列补充的测试用例3.应为输入和输出确定有效和无效的等价类,在必要时对上面确认的测试用例进行补充4.使用错误猜测技术增加更多的测试用例5.针对上述测试用例检查程序的逻辑结构,使用判定覆盖、条件覆盖、判定/条件覆盖或多重条件覆盖准则。如果为前4步确定的测试用例尚未满足覆盖准则,那么在可能的情况下,增加足够的测试用例,使覆盖准则得以满足。4.1白盒测试——测试策略练习4.1白盒测试if(g3){x=x/3;}if(g==0||x1){x=x+1;}NextDate函数的设计、实现和测试函数有3个参数:月份、日期和年;它们都具有整数值,且满足以下条件:1=月份=121=日期=311812=年=2012函数返回输入日期之后的那个日期;如果输入无效值,如2000年6月31日,输出指示相应变量超出取值范围;对于无效的日月年组合,如“1999年13月32日”输出“无效输入日期”。要求:每个人实现该函数,并设计一组测试用例两人一组,互相测试对方的程序提交源程序和测试用例报告,注明采用的测试用例设计技术,该用例发现的错误,并对测试效果进行简要分析4.1白盒测试——综合训练4.2.1等价划分4.2.2边界值分析4.2.3判定表4.2.4因果图4.2黑盒测试黑盒测试是最常用和最有效的软件测试技术有效的黑盒测试需要软件的文档需求文档或者产品说明书,通过这些了解输入什么能得到什么或者操作的结果没有产品说明书时使用探索测试——了解软件、设计测试、执行测试同时执行4.2黑盒测试通过性测试:确认软件至少能作什么(软件的基本功能),而不会考验其能力。软件测试员并不需要想尽办法使软件崩溃,紧紧运用最简单、最直观的测试用例。失效性测试:纯粹为了破坏软件而设计和执行的测试用例称为实效性测试(错误强制测试),它是蓄意攻击软件的薄弱环节。4.2黑盒测试——通过性测试和失效性测试要从所有可能的测试用例中要找出某个小的子集,而且是可能发现最多错误的子集,精心挑选的测试用例还应该具备两个特征:它覆盖了大部分其他可能的测试用例——对程序输入范围进行划分,将其划分为有限数量的等价类,就可以合理地假设测试每个等价类的代表性数据等同于测试该类的其他任何数据。即,如果等价类的某个输入发现了某个错误,该等价类的其他数据也应该能发现同样的错误,反之如果等价类的某个输入不能发现错误,那么该等价类中的其他数据也不能发现错误。严格控制测试用例的增加——每个测试用例必须体现尽可能多的不同的输入情况4.2.1等价划分第一步:确定等价类选取每个输入条件(通常是规格说明中的一个句子或短语),并将其划分为两个或多个组:有效等价类代表对程序的有效输入,无效等价类代表其他任何可能的输入。根据输入条件确定等价类的指导原则取值范围:一个有效等价类,两个无效等价类取值个数:一个有效等价类,两个无效等价类输入值的集合,且每个值处理不同:为每个值确定一个有效等价类和一个无效等价类“必须是…”:一个有效等价类,一个无效等价类如果有任何理由可以认为程序并未等同地处理等价类中的元素,那么应该将这个等价类再划分为小一些的等价类4.2.1等价划分——设计测试用例第二步:生成测试用例为每个等价类设置一个不同的编号;编写新的测试用例,尽可能多地覆盖那些尚未被涵盖的有效等价类,直到所有等价类都被测试用例所覆盖;编写新的用例,覆盖一个且仅一个尚未被覆盖的无效等价类,直到所有无效等价类都被测试用例所覆盖。4.2.1等价划分——设计测试用例例:某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。要求:系统日期由年、月的6位数字字符组成,前四位代表年,后两位代表月。问题:如何用等价类划分法设计测试用例,来测试程序的日期检查功能?4.2.1等价划分——一个范例等价类划分4.2.1等价划分——一个范例输入条件有效等价类无效等价类报表日期的类型及长度6位数字字符(1)有非数字字符(4)少于6个数字字符(5)多于6个数字字符(6)年份范围在2003~2008之间(2)小于2003(7)大于2008(8)月份范围在1~12之间(3)小于1(9)大于12(10)为有效的等价类设计一个测试用例对表中编号为1,2,3的3个有效等价类用一个测试用例覆盖:4.2.1等价划分——一个范例测试数据期望结果覆盖范围200306输入有效等价类(1)(2)(3)(1)6位数字字符(2)年在2003~2008之间(3)月在1~12之间每一个无效的等价类至少设计一个测试用例4.2.1等价划分——一个范例测试数据期望结果覆盖范围003MAY输入无效等价类(4)20035输入无效等价类(5)2003005输入无效等价类(6)200105输入无效等价类(7)200905输入无效等价类(8)200300输入无效等价类(9)200313输入无效等价类(10)等价划分虽然优于随机选取用例,但不足之处在于忽略了某些特定类型的高效测试用例经验证明,考虑了边界条件的测试用例与其他测试用例相比,具有更高的测试回报率边界条件:输入和输出等价类中那些恰好处于边界、或超过边界、或在边界以下的状态P48-49边界值分析与等价划分的不同边界值分析需要选取一个或多个元素(而不是选任一个代表元素),以便等价类的每个边界都经过一次测试边界值分析不仅关注输入条件,还考虑从输出等价类设计测试用例4.2.2边界值分析边界值分析的通用指南1.输入条件规定了一个输入值范围:针对范围的边界设计测试用例,针对刚刚越界的情况设计无效测试用例2.输入条件规定了输入值的数量:针对最小数量、最大数量、最小数量少一、最大数量多一的情况设计测试用例3.对每个输出条件应用1;是否产生超过输出范围的结果4.对每个输出条件应用2;5.如果程序的输入或输出是一个有序序列,则应该特别注意序列的第一个和最后一个元素6.边界值分析是具有创造性的方法,发挥聪明才智找出其他的边界条件4.2.2边界值分析次边界值(内部边界条件)普通的边界值在软件产品说明书或者在软件的使用过程中容易发现。而有些边界值在软件内部,最终用户几乎看不到,但是软件测试仍有必要检查,称为次边界条件,如数据的表示范围的边界。默认、空白、空值、零值和无当软件要求输入时,根本没有输入任何内容,通常用默认值处理,或提示错误信息这些值与合法值和非法值都不同,应对它们建立单独的等价区间无效数据——非法、错误、不正确和垃圾数据这些数据是失败测试的对象,没有实际的测试规则。4.2.2边界值分析——其他特殊测试数据4.2.2边界值分析——“报表日期”测试用例输入条件测试用例说明测试数据期望结果选取理由报表日期类型及长度1个数字字符5显示出错仅有1个合法字符6个数字字符200305输入有效类型及长度均有效5个数字字符20035显示出错比有效长度少17个数字字符2003005显示出错比有效长度多1有1个非数字字符2003.5显示出错只有1个非法字符全是非数字字符MAY---显示出错6个非法字符年份范围年份为2003年200305输入有效最小年份年份为2008年200805输入有效最大年份年份为2002年200205显示出错刚好小于最小年份年份位2009年200905显示出错刚好大于最大年份月份范围月份为1月200301输入有效最小月份月份为12月200312输入有效最大月份月份为0200300显示出错刚好小于最小月份月份为13200313显示出错刚好大于最大月份边界值分析和等价划分的弱点是没有对输入条件的组合进行分析判定表适合描述不同输入条件的组合,被测软件有以下特征时可以使用判定表输入变量之间存在逻辑关系输入与输出之间存在因果关系判定表的结构条件部分(输入):列出条件和条件的组合,条件是根据输入和环境因素归结为真

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

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

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

×
保存成功