测试用例就是设计一个情况,软件在这种情况下,必须能够正常运行并且达到程序所设计的执行结果。
设计软件测试用例的目的,就是为了能将软件测试的行为转换为可管理的模式
软件测试是有组织性,步骤性和计划性的
1、可以避免盲目测试并提高测试效率
2、可以使软件测试的实施重点突出、目的明确
3、在软件版本更新后只需修正少部分的测试用例,可以降低工作强度,缩短项目周期。
4、功能模块的通用化和复用化使软件易于开发,而测试用例的通用化和复用化则会使软件测试易于开展,并随着测试用例的不断精化其效率也在不断提高。
黑盒测试也称功能测试或数据驱动测试,前提是已知产品所具有的功能,通过测试来检测每个功能是否都正常使用。
黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测、功能图法、场景法、判定表组成法 、正交实验设计法等,主要用于软件确认测试。
等价类划分是一种典型的黑盒测试方法。使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。由于穷举测试工作量太大,以至于无法实际完成,促使我们在大量的可能数据中选取其中的一部分作为测试用例。
等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。没一类的代表性数据在测试中的作用等价于这一类中的其他值,也就是说,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也发生同样的错误;反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会发生错误(除非等价类中的某些例子属于另一等价类,因为几个等价类是可能相交的)
等价类的划分有两种不同的情况:
有效等价类:指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合
无效等价类:与有效等价类的定义相反
1、在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类两个无效等价类,如:PH,性别
2、在输入条件规定了“必须如何”时,可以确立一个有效等价类一个无效等价类,如:负数不能开平方,除数不为零。
输入条件是布尔量时,可确定一个有效等价类一个无效等价类。
3、在规定了输入数据必须遵守的规则情况下,可以确立一个有效等价类(符合)和若干个无效等价类(从不同角度违反规则),如:选择校址要求面积不小于10000平米,交通便利,离医院,超市不超过1000米。
4、在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类。如99+1问题
题目:有一个程序读入3个整数,把这3个整数作为一个三角形的3条边的长度值。这个程序要打印出信息,说明这3个整数是否能组成三角形,如果能组成三角形,说明这个三角形是不等边、等腰或等边三角形。
分析:可以设定3条边分别为A,B,C。如果他们能构成三角形的3条边,必须满足:0C,B+C>A,A+C>B。
如果是等腰,要判断A=B,或B=C,或A=C
如果是等边,要判断A=B,且B=C,且A=C
上面的等价类用例的设计方法是依据早期的计算机语言来定义的,随着计算机开发技术的发展,该方法也有了扩展。比如有效操作,非法操作。
注意:当多个输入域在一起时千万不要对他们的用例进行组合,可以借鉴单元测试的插桩技术的方法。
人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。 使用边界值分析方法设计测试用例,首先应确定边界情况。
1、如果输入条件规定了值的范围,则应该取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据。
2、如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1个、比最小个数少1 个的数作为测试数据。
3、如果程序的规格说明给出的输入域或输出域是有序集(如有序表、顺序文件等),则应选取集合的第一个和最后一个元素作为测试用例。
4、分析规格说明,找出其他可能的边界条件
如一个整型的数据输入框,整型的取值范围是0~65535,可以输入0、65535、-1、1、65534、65536值进行校验。
1、人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。这就是错误推测法。
2、错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例
3、在GIS中可以无限放大、在空白区域操作等
因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。
① 分析软件规格说明的描述中哪些是原因,哪些是结果。原因是输入条件或输入条件的等价类,结果是输出条件。
② 分析软件规格说明描述中的语义,找出原因与结果之间、原因与原因之间对应的关系,根据这些关系,画出因果图。
③ 标明约束条件。由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用若干标准的符号标明约束条件。
④ 把因果图转换成判定表。
⑤ 为判定表中的每一列设计测试用例。
题目:有一个处理单价为1.5元的饮料自动售货机软件,若投入1.5元硬币,按下不同名称的饮料按钮,相应的饮料就送出来,若投入2元,在送出饮料同时退5角硬币
分析:
原因:(1)投1.5元(2)投2元(3)选“可乐”(4)选“雪碧”(5)选“红茶”
中间状态:(1)已投币(2)已选择饮料
结果:(1)退5角(2)送“可乐”(3)送“雪碧”(4)送“红茶”
转化为决策表:
在GIS测量多边形面积时,一个四边形的面积是两个或多个三角形面积的和。
1、现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。这种在软件设计方面的思想也可以引入到软件测试中,可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时使测试用例更容易理解和执行。
2、用例场景用来描述流经用例的路径,从用例开始到结束遍历这条路径上所有基本流和备选流
图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。
图示是ATM例子的流程示意图。
解答:
(1)场景设计
(2)对于这7个场景中的每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。下面显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。本示例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中)以及预期结果。
(3)编写测试用例:
(4)数据设计
一旦确定了所有的测试用例,则应对这些用例进行复审和验证以确保其准确且适度,并取消多余或等效的测试用例。
测试用例一经认可,就可以确定实际数据值(在测试用例实施矩阵中)并且设定测试数据,如表所示。
对于黑盒测试方法来说,以上4种方法是基本的测试方法,除此之外还有判定表驱动法、正交试验法、功能图法和场景法等。
在实际测试中,往往是综合使用各种方法才能有效地提高测试效率和测试覆盖率,这就需要认真掌握这些方法的原理,积累更多的测试经验,以有效地提高测试水平。
① 首先进行等价类划分,包括输入条件和输出条件的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效的方法。
② 在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计出的测试用例发现程序错误的能力最强。
③ 可以用错误推测法追加一些测试用例,这需要依靠测试工程师的智慧和经验。
④ 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
⑤ 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表驱动法。
⑥ 对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果。
⑦ 功能图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的测试数据。
⑧ 对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合使用各种测试方法。