关于查询功能测试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很麻烦。很容易写的冗余。 A B C
有 有 有
无 有 有
有 无 有
有 有 无
这种就够了 原帖由 舞の月 于 2006-7-7 09:25 发表
A B C
有 有 有
无 有 有
有 无 有
有 有 无
这种就够了
谢谢 舞の月的意见。
那 A/B/C 全有,A/B/C全无,不是更简洁吗?会有什么样的可能出现而这种测试不到的错误吗? 问题很有代表性,呵呵,我是这样看的。
你的第三种情况,其实是策略描述,覆盖了所有可能出现的情况,还不是实际的测试用例。真正的测试用例要具体化、可执行的。
你的第一种方法:包括了最极端的两种情况。
第二种方法:应该有一些正交设计的思路在里面吧,覆盖率绝大多数的情况。
而你没有具体实现的第三种情况,真正写出以来的话就是从000到111的所有排列组合,覆盖了全部的情况。
对于这个需求,要验证的内容已经清楚了,各种方案也清楚了,代价和风险的区别应该可以得出。下面应该是由你来进行分析,把验证进行到哪一步可以满足系统上的要求,工作量可以接受,承担的风险也可以接受。然后,根据分析的结论,从3个用例中选择一个合适的,或者也可以3个全保留,不同情况下执行不同的用例。
这样才是一个用例设计的完整过程。
当然,是非常的麻烦,但是,不这样做的话,就像你说的,直接得到任意一个结论,都是会出问题的。 slide说的有道理。“真正的测试用例要具体化、可执行的。”
代价、风险、工作量都是要考虑的因素。
但是我就是在想,有没有可能根据开发人员写这类程序的通用的做法,找到一个最简洁的测试CASE的写法。因为这种查询模块很多。
呵呵,是不是有点钻牛角尖了。 简洁的方法也有呀,就按照你自己分析的
1类是验证极端的边界值
2类是按照正交方法选择用例
3类是覆盖所有用例
写一篇文档把这3种方法说清楚。
然后在具体设计用例时候,只要说一下按照那种方法来设计,123中选一个,其他就不用写了。
如果是自动用例,可以做个工具根据类别自动生成用例。如果是手动用例,看着说明直接执行就可以了,再把每个组合都写出来意义其实不大。
想简化还是可以的,不过要事先定义清楚 原帖由 slide 于 2006-7-10 12:49 发表
简洁的方法也有呀,就按照你自己分析的
1类是验证极端的边界值
2类是按照正交方法选择用例
3类是覆盖所有用例
写一篇文档把这3种方法说清楚。
然后在具体设计用例时候,只要说一下按照那种方法来设计,1 ...
恩。有道理。多谢slide的回复。
采用正交表方法
采用正交表方法,使case的分布很均匀。 具体问题具体解决 8楼说的是对的,应该用正交表,使分布比较均匀,这个这样测比较好,按正交表A B C
0 0 0
1 0 1
0 1 1
1 1 0
把0代表有,1代表无替换得到4个测试用例,舞の月说的虽然也是4个,但是显得分布不均匀,也就是说覆盖的面不如用正交表得到的4个测试用例,显得就主观了些,lz可以再看看多因子多状态的正交表测试方法的例子(比如4状态3因子怎么得到最好的测试用例) 用正交表法得到初步的测试用例后,如果根据等价类划分,某个因子有多个取值,是否在每一行该因子所在的列为0时,各个取值都要测试一遍,望指教,谢谢! 如果每个查询条件取值个数不一样的话正交法不适用
opinion
原帖由 lily_liuyun 于 2006-7-7 10:54 发表谢谢 舞の月的意见。
那 A/B/C 全有,A/B/C全无,不是更简洁吗?会有什么样的可能出现而这种测试不到的错误吗?
这样会知道查询功能是否完成,
如果功能实现了,
没问题,
如果功能未实现,
无法定位,
问题出在哪一个查询条件。 原帖由 白菜叶子 于 2007-2-1 14:10 发表
如果每个查询条件取值个数不一样的话正交法不适用
正交法也适用于不同取值的,即允许某个因素中有多个水平数。 1、这三个条件之间的关系
A and (B or C) 和 A and B and C 结果安装不同
2、没有条件,不一定就代表 B为空,可能程序会会处理为 "B=True" 以下是我所了解的关于正交法的一点知识,还不足以助我理解它,大家有什么资料吗?能提供给我吗?
正交试验法的理论基础是正交拉丁方理论与群论。在工作中可用的多因素寻优工作方法,一类是从优选区某一点开始试验,一步一步到达较优点,这类实验方法叫序贯试验法,如因素轮换法、爬山法等;另一类是,在优选区内一次布置一批试验点,通过对这批试验结果的分析,逐步缩小优选范围从而达到较优点,如正交试验法等。科研中普遍采用正交试验法,因其具有如下优点:
①实用上按表格安排试验,使用方便;
②布点均衡、试验次数较少;
③在正交试验法中的最好点,虽然不一定是全面试验的最好点,但也往往是相当好的点。特别在只有一两个因素起主要作用时,正交试验法能保证主要因素的各种可能都不会漏掉。这点在探索性工作中很重要,其他试验方法难于作到;
④正交试验法提供一种分析结果(包括交互作用)的方法,结果直观易分析。且每个试验水平都重复相同次数,可以消除部分试验误差的干扰;
⑤因其具有正交性,易于分析出各因素的主效应。 如果把第二个写为
A B C
有 有 有
无 有 有
有 无 有
有 有 无
无 无 无
是不是会更好些呢??? 原帖由 lily_liuyun 于 2006-7-7 10:54 发表
谢谢 舞の月的意见。
那 A/B/C 全有,A/B/C全无,不是更简洁吗?会有什么样的可能出现而这种测试不到的错误吗?
比如B是包括BandC的,即A/B=A/B/C但是你上面的用例是测不出来
呵呵
大家讨论的很好啊,我正为这个问题头疼呢。我基本选择了第二中方法。
添加了
无 无 无
呵呵
win821022说的不错,我就采取的这个方法。A B C
有 有 有
无 有 有
有 无 有
有 有 无
无 无 无
页:
[1]
2