51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2775|回复: 1
打印 上一主题 下一主题

[原创] 关于测试用例设计方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-10-26 21:04:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看到一篇讲解测试用例设计方法的文章,读完之后不知道自己是否理解正确,特写此文章,用一个简单的例子来说明自己所理解的设计方法,如有错误之处,请不吝指教!文章中陈述内容引自原文,测试用例是本人所设计。例子的设计流程图如下:
C:\Documents and Settings\lovywoo\桌面\liucheng.png
图表 1
  单元测试的基本要求为:对程序模块的所有独立的执行路径至少要测试一次;对所有的逻辑判定,其结果为真、假的两种情况至少要测试一次;对程序进行边界检查;检验内部数据结构的有效性。

  单元测试的基本方法是将输入分类(等价类),设定对应的正确输出,执行测试,由工具自动判断实际输出是否相符。而工具不可能自动了解程序的设计功能,因此,要达到起码的测试效果,用例必须由能够了解代码功能者人工设计。

白盒测试的主要用例设计方法有6种:

语句覆盖,使程序的每一条可执行语句至少被执行一次。可以很直观地从源代码得到测试用例,无须细分每条判定表达式。由于这种测试方法仅仅针对程序逻辑中显式存在的语句,对于隐藏的条件和可能到达的隐式逻辑分支是无法测试的。语句覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其他情况。
用例设计:
输入                   预期输出        目的        缺陷
A=1,B=1,C=1        C肯定为真        语句覆盖        遗漏了一个分支;并且B、C没有取0的情况
A=0,B=1,C=1        无法判断               

  判定覆盖,也叫分支覆盖,使程序中每个分支判断的每一种可能都至少被执行一次。判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。
输入                    预期输出        目的        缺陷
A=1,B=1,C=1        C肯定为真        判定覆盖        C没有取0的情况
A=0,B=1,C=1        无法判断               
A=1,B=0,C=1        C肯定为真               

  条件覆盖,使程序中每一个分支判断中的每一个条件的可能结果至少被执行一次。条件覆盖比判定覆盖,增加了对符合判定情况的测试,增加了测试路径。要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
输入                   预期输出          目的                      缺陷
A=1,B=1,C=1        C肯定为真        条件覆盖        遗漏了一个分支
A=1,B=1,C=0        无法判断               
A=1,B=0,C=0        无法判断               
A=0,B=0,C=0        无法判断               

  判定/条件覆盖,使程序同时满足条件覆盖和判定覆盖。判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足,缺点是未考虑条件的组合情况。
输入                    预期输出             目的                          缺陷
A=1,B=1,C=1        C肯定为真        判定/条件覆盖        未考虑条件的组合情况
A=1,B=1,C=0        无法判断               
A=1,B=0,C=0        无法判断               
A=0,B=0,C=0        无法判断               
A=1,B=0,C=1        C肯定为真               

条件组合覆盖,使程序中每一个分支判断中的每一个条件的每一种组合都至少被执行一次。条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。更改的判定/条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现一次。并且每个条件都显示能单独影响判定结果。但线性地增加了测试用例的数量。


输入                     预期输出                目的                    缺陷
A=1,B=1,C=1        C肯定为真            条件组合覆盖        都是输入正确的情况下,没有输入错误情 况下的相关用例(如:没有输入的情况)
A=1,B=1,C=0        无法判断               
A=1,B=0,C=1        C肯定为真               
A=1,B=0,C=0        无法判断               
A=0,B=1,C=1        无法判断               
A=0,B=1,C=0        无法判断               
A=0,B=0,C=1        无法判断               
A=0,B=0,C=0        无法判断               

  路径覆盖,使程序中所有可能的路径都至少被执行一次。这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。但需要设计大量、复杂的测试用例,使得工作量呈指数级增长。
这个就不太懂了,请高手指点!
  
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-11-2 12:43:59 | 只看该作者
文档说明很清晰,没有发现模糊的地方。不知LZ对哪些描述不清楚?

建议LZ按照文档列出的输入条件,将用例的路径流画出,这样应该能辅助理解。

如:
输入                              
A=1,B=1,C=1     

其路径流为红线部分:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-11 07:16 , Processed in 0.065145 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表