lily_liuyun 发表于 2006-7-6 19:45:19

关于查询功能测试CASE的编写

一个简单的查询功能,查询条件有多个,条件之间为and关系,任何一个条件都可以不输入。
怎样写可以用最少的CASE覆盖最多的可能情况。
(不考虑界面等等的功能,也不考虑有日期等特殊控件,也不考虑与业务有关的边界、异常等的测试,只考虑查询条件有输入或者没有输入情况下的不同处理)

比如,有A/B/C三个查询条件

一、可以写成2个CASE:
A、B、C三个条件全空
A、B、C三个条件全都输入

二、可以写成如下:
A       B      C
有      有    有
无      有    有
有      无    有
有      有    无

三、还以写成所有 A有输入,A无输入;B有输入,B无输入,C有输入,C无输入 的各种排列组合。

需要写成第3种情况这么多的测试CASE吗?第一种是不是可以概括了全部的情况呢?

咨询项目组开发人员,他们也不确定,因为可能编程习惯不同,写法也会不同。另外,开发人员还提出:如果是从一个表中select,第一种应该可以,但若是多个表select,可能会有问题。
查询功能应该是很常用的,相信大家都遇到过,不知道大家都是怎么做的呢?一直觉得这部分的CASE很麻烦。很容易写的冗余。

舞の月 发表于 2006-7-7 09:25:10

A       B      C
有      有    有
无      有    有
有      无    有
有      有    无
这种就够了

lily_liuyun 发表于 2006-7-7 10:54:41

原帖由 舞の月 于 2006-7-7 09:25 发表
A       B      C
有      有    有
无      有    有
有      无    有
有      有    无
这种就够了

谢谢 舞の月的意见。

那 A/B/C 全有,A/B/C全无,不是更简洁吗?会有什么样的可能出现而这种测试不到的错误吗?

slide 发表于 2006-7-7 12:54:15

问题很有代表性,呵呵,我是这样看的。
你的第三种情况,其实是策略描述,覆盖了所有可能出现的情况,还不是实际的测试用例。真正的测试用例要具体化、可执行的。

你的第一种方法:包括了最极端的两种情况。
第二种方法:应该有一些正交设计的思路在里面吧,覆盖率绝大多数的情况。
而你没有具体实现的第三种情况,真正写出以来的话就是从000到111的所有排列组合,覆盖了全部的情况。

对于这个需求,要验证的内容已经清楚了,各种方案也清楚了,代价和风险的区别应该可以得出。下面应该是由你来进行分析,把验证进行到哪一步可以满足系统上的要求,工作量可以接受,承担的风险也可以接受。然后,根据分析的结论,从3个用例中选择一个合适的,或者也可以3个全保留,不同情况下执行不同的用例。

这样才是一个用例设计的完整过程。

当然,是非常的麻烦,但是,不这样做的话,就像你说的,直接得到任意一个结论,都是会出问题的。

lily_liuyun 发表于 2006-7-7 13:03:10

slide说的有道理。“真正的测试用例要具体化、可执行的。”
代价、风险、工作量都是要考虑的因素。

但是我就是在想,有没有可能根据开发人员写这类程序的通用的做法,找到一个最简洁的测试CASE的写法。因为这种查询模块很多。

呵呵,是不是有点钻牛角尖了。

slide 发表于 2006-7-10 12:49:53

简洁的方法也有呀,就按照你自己分析的
1类是验证极端的边界值
2类是按照正交方法选择用例
3类是覆盖所有用例

写一篇文档把这3种方法说清楚。

然后在具体设计用例时候,只要说一下按照那种方法来设计,123中选一个,其他就不用写了。
如果是自动用例,可以做个工具根据类别自动生成用例。如果是手动用例,看着说明直接执行就可以了,再把每个组合都写出来意义其实不大。
想简化还是可以的,不过要事先定义清楚

lily_liuyun 发表于 2006-7-13 11:25:28

原帖由 slide 于 2006-7-10 12:49 发表
简洁的方法也有呀,就按照你自己分析的
1类是验证极端的边界值
2类是按照正交方法选择用例
3类是覆盖所有用例

写一篇文档把这3种方法说清楚。

然后在具体设计用例时候,只要说一下按照那种方法来设计,1 ...


恩。有道理。多谢slide的回复。

zrg9399 发表于 2006-7-20 13:30:08

采用正交表方法

采用正交表方法,使case的分布很均匀。

wy2004guhui 发表于 2006-7-28 09:25:37

具体问题具体解决

firstxman 发表于 2006-8-16 14:59:48

8楼说的是对的,应该用正交表,使分布比较均匀,这个这样测比较好,按正交表
A        B        C
0        0        0
1        0        1
0        1        1
1        1        0
把0代表有,1代表无替换得到4个测试用例,舞の月说的虽然也是4个,但是显得分布不均匀,也就是说覆盖的面不如用正交表得到的4个测试用例,显得就主观了些,lz可以再看看多因子多状态的正交表测试方法的例子(比如4状态3因子怎么得到最好的测试用例)

chenxi01032005 发表于 2007-1-31 11:02:46

用正交表法得到初步的测试用例后,如果根据等价类划分,某个因子有多个取值,是否在每一行该因子所在的列为0时,各个取值都要测试一遍,望指教,谢谢!

白菜叶子 发表于 2007-2-1 14:10:29

如果每个查询条件取值个数不一样的话正交法不适用

pride 发表于 2007-2-3 16:04:11

opinion

原帖由 lily_liuyun 于 2006-7-7 10:54 发表


谢谢 舞の月的意见。

那 A/B/C 全有,A/B/C全无,不是更简洁吗?会有什么样的可能出现而这种测试不到的错误吗?


这样会知道查询功能是否完成,
如果功能实现了,
没问题,
如果功能未实现,
无法定位,
问题出在哪一个查询条件。

ppent 发表于 2007-2-5 14:34:34

原帖由 白菜叶子 于 2007-2-1 14:10 发表
如果每个查询条件取值个数不一样的话正交法不适用

正交法也适用于不同取值的,即允许某个因素中有多个水平数。

loho1968 发表于 2007-2-5 14:40:33

1、这三个条件之间的关系
A and (B or C) 和 A and B and C 结果安装不同
2、没有条件,不一定就代表 B为空,可能程序会会处理为 "B=True"

鱼鳞 发表于 2007-2-14 09:13:08

以下是我所了解的关于正交法的一点知识,还不足以助我理解它,大家有什么资料吗?能提供给我吗?


正交试验法的理论基础是正交拉丁方理论与群论。在工作中可用的多因素寻优工作方法,一类是从优选区某一点开始试验,一步一步到达较优点,这类实验方法叫序贯试验法,如因素轮换法、爬山法等;另一类是,在优选区内一次布置一批试验点,通过对这批试验结果的分析,逐步缩小优选范围从而达到较优点,如正交试验法等。科研中普遍采用正交试验法,因其具有如下优点:

①实用上按表格安排试验,使用方便;
②布点均衡、试验次数较少;
③在正交试验法中的最好点,虽然不一定是全面试验的最好点,但也往往是相当好的点。特别在只有一两个因素起主要作用时,正交试验法能保证主要因素的各种可能都不会漏掉。这点在探索性工作中很重要,其他试验方法难于作到;
④正交试验法提供一种分析结果(包括交互作用)的方法,结果直观易分析。且每个试验水平都重复相同次数,可以消除部分试验误差的干扰;
⑤因其具有正交性,易于分析出各因素的主效应。

wing821022 发表于 2007-3-9 14:55:20

如果把第二个写为
A       B      C
有      有    有
无      有    有
有      无    有
有      有    无
无   无   无
是不是会更好些呢???

nan3937 发表于 2007-3-13 09:51:02

原帖由 lily_liuyun 于 2006-7-7 10:54 发表


谢谢 舞の月的意见。

那 A/B/C 全有,A/B/C全无,不是更简洁吗?会有什么样的可能出现而这种测试不到的错误吗?

比如B是包括BandC的,即A/B=A/B/C但是你上面的用例是测不出来

shiritiantang 发表于 2008-9-10 17:06:01

呵呵

大家讨论的很好啊,我正为这个问题头疼呢。
我基本选择了第二中方法。
添加了
无 无 无

shiritiantang 发表于 2008-9-10 17:08:35

呵呵

win821022说的不错,我就采取的这个方法。

A       B      C
有      有    有
无      有    有
有      无    有
有      有    无
无   无   无
页: [1] 2
查看完整版本: 关于查询功能测试CASE的编写