? 设计数据库测试用例就是针对数据库的功能和性能而设计的测试方案,并编入测试计划中。测试用例的设计既要考虑正常情况,也应考虑极限情况以及字段取最大值和最小值等边界情况。因为测试的目的是暴露数据库中隐藏的错误和缺陷,所以在设计测试用例时要充分考虑那些易于发现错误和缺陷的测试用例。好的测试用例应该有较高的发现错误和缺陷的概率。
? 逻辑覆盖法和基本路径测试法是计算机软件白盒测试用例设计的两个重要方法。这两个方法也适合存储过程、触发器、嵌入式SQL等数据库程序的测试。
语句覆盖
语句覆盖 语句覆盖是设计足够多的测试用例,运行所测程序,使得程序中每条可执行语句至少被执行一次。不过,每条可执行语句至少执行一次是最基本的要求,但是它不能保证发现逻辑运算和程序逻辑错误,且并不是所有的分支被执行过。
例6-1 考虑图6-2,语句覆盖的测试用例如表6-1所示。注意,该组测试用例不能覆盖判断E为假的分支。而且,如果判断C误写为X>2 or Y>3,该组测试用例仍能够实现语句覆盖,因此该组测试用例发现不了这个错误。
测试用例一般不是唯一的。例如,表6-2的测试用例也可以实现语句覆盖。
判定覆盖 判定覆盖又称分支覆盖,是设计足够多的测试用例,运行所测程序,使得程序中每个判断的取真分支和取假分支分别至少执行一次。
例6-2 考虑图6-2,其中C、E为判断。判定覆盖的测试用例如表6-3所示。
虽然判定覆盖能够保证所有判断的取真分支和取假分支执行至少一次,但判定覆盖不能保证发现条件表达式错误。例如,如果语句C误写为X>2 or Y>3,表6-3给出的测试用例仍能够实现判定覆盖,因此该组测试用例发现不了这个错误。
条件覆盖 条件覆盖是设计足够多的测试用例,运行所测程序,使得每个判断的每个条件成分取真值和假值分别至少执行一次。
判定-条件覆盖 判定-条件覆盖是设计足够多的测试用例,同时满足判定覆盖和条件覆盖。
条件组合覆盖 条件组合覆盖是设计足够多的测试用例,运行所测程序,使得每个判断中的所有条件成分取值组合至少执行一次。
路径覆盖 路径覆盖是设计足够多的测试用例,覆盖程序中所有可能的路径。
例6-6 考虑图6-2。全部路径为ACDEFG、ACDEG、ACBG。路径覆盖的测试用例如表6-7所示。表6-7的测试用例同表6-3是一样的。
基本路径测试法
一个数据的集合称为关于程序输入数据的等价类(简称为等价类),如果集合中的一个数据作为测试输入数据不能发现该程序的错误,那么使用集合中的其他数据作为测试输入数据也不能发现错误。所谓等价类划分法是把全部可能的输入数据划分为若干等价类,从每个类中选取一个数据作为输入数据来测试程序。
等价类划分法设计测试用例分为两步:划分等价类、确定测试用例。
划分等价类和列出等价类表
确定测试用例 在确立了等价类之后,建立等价类表,列出所有划分出的等价类,如表6-8所示。
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
... | ... | ... |
... | ... | ... |
根据等价类表,按以下原则确定测试用例:
这就是说,对每个无效等价类分别设计测试用例。之所以这样做,是因为某些程序对某一输入错误的检查往往会屏蔽对其他输入错误的检查。
例子
例6-11 设“参加工作年月”满足:年份为1950~2008,月份为1~12。输入格式是连续输入年、月,其中年占4位、月占两位,如2008年1月输入格式为:200801。
v第一步:划分等价类,等价类表如表6-9所示。
输入条件 | 有效等价类及编号 | 无效等价类及编号 |
---|---|---|
参加工作年月的类型及长度 | 6位数字字符(1) | 有非数字字符(4) 少于6个数字字符 (5) 多于6个数字字符 (6) |
年份范围 | 在1950~2008之间 (2) | 小于1950 (7) 大于2008 (8) |
月份范围 | 在1~12之间(3) | 小于1 (9) 大于12 (10) |
第二步:确定测试用例。
编号为1、2、3的三个有效等价类用一个测试用例覆盖,如表6-10所示。
序号 | 输入 | 预期输出 | 覆盖等价类 |
---|---|---|---|
1 | 200811 | 200811 | (1)、(2)、(3) |
为每一个无效等价类至少设计一个测试用例
序号 | 输入 | 预期输出 | 覆盖等价类 |
---|---|---|---|
1 | 2001ab | 无效输入 | (4) |
2 | 2002 | 无效输入 | (5) |
3 | 2002163 | 无效输入 | (6) |
4 | 194012 | 无效输入 | (7) |
5 | 200901 | 无效输入 | (8) |
6 | 196000 | 无效输入 | (9) |
7 | 200633 | 无效输入 | (10) |
边界是指程序输入、输出范围的边缘,边界值是指程序输入、输出范围的边缘值。
在数据库测试中,常见的边界值有月份中的空值、1月、12月,发票中的空值、最低金额、最高金额,年龄中的空值、最小年龄、最大年龄,姓名中的空值、最短姓名、最长姓名,编号中的空值、最小编号、最大编号。
边界值既可以是一元组,也可以是多元组。例如,设三角形的三条边的长度分别为A、B和C。当A、B、C满足:A>0,B>0,C>0,A+B>C,A+C>B,B+C>A,才能构成三角形。但如果把6个不等式中的任何一个大于号“>”错写成大于等于号“≥”,那就不能构成三角形。满足上述6个不等式等号要求的A、B、C任何取值三元组均是构成三角形这一问题的边界值。
测试实践表明,大量的错误一般发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对输入、输出的边界设计测试用例显得尤其重要。事实上,为检验程序在边界附近的运行情况专门设计测试用例进行测试,常常取得良好的测试效果。
边界值分析法是一种黑盒测试方法,是对等价类划分法的补充,其测试用例来自等价类的边界。边界值分析法与等价类划分法存在一定的差异。一是边界值分析法不是选择等价类的任意数据,而是选择正好等于、刚刚大于或刚刚小于边界值的数据。二是边界值分析法不仅重视针对输入边界的测试用例设计,而且重视针对输出边界的测试用例设计。
应用边界值分析法设计测试用例,需遵循以下几条原则:
例6-12 函数x+sqrt(x)(x取实数)的边界值分析法测试用例设计。输入数据可以划分为两个等价类:①有效等价类x≥0;②无效等价类x<0。等价类①的边界为0和最大实数,等价类②的边界为0和最小实数。应用边界值分析法,各测试用例的输入部分可设计为:最大实数、绝对值很小的正实数、0、绝对值很小的负实数、最小实数。
原文:https://www.cnblogs.com/vvlj/p/12750898.html