本站文章除标题中注明“原”以外,其他均来自网络或书籍,如果我的引用侵犯了您的权力,请与我联系,我将及时处理;如果任何人想转载这些文章,则请保留原始的出处信息,或者直接与原作者联系。
☆ 参与调查问卷,抢限量实战课程!!☆

黑盒测试的测试用例设计方法

上一篇 / 下一篇  2007-01-21 21:01:29 / 个人分类:测试管理

等价类划分
e%^ b[tn ZDe4Y0
4\"Y$wZL0  是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法.51Testing软件测试网\4nqa3_PQ6S

zs,GYyw/}} j4e-N0   1) 划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.
cP%n$}2b,|0
$[T:x([1\5| m0  有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合.利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能.
"_J(L~].@,{w)dJ&m0
$i\J*sL\{n0  无效等价类:与有效等价类的定义恰巧相反.51Testing软件测试网1~ SA6@TZ-?

\CO0@w$a.W0  设计测试用例时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更高的可靠性.  51Testing软件测试网eg)AK%c
51Testing软件测试网 zW#i0j8w8C3o
  2)划分等价类的方法:下面给出六条确定等价类的原则.
_P4N'kA)d g&Fne051Testing软件测试网0~&XpoG u9W0WU(S$R
  ①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类.
k.h&hb1|Ll \0
u$Q*jl'LA3o0  ②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类.51Testing软件测试网,^@w#J*y\Go D)g2A

7h.l[;^%^x0  ③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类.51Testing软件测试网o+^1G s1?1L8[*uo
51Testing软件测试网;h0q k)n(o^+qG-KH
  ④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类.51Testing软件测试网 E2|J @'Re

-oo ojy9v(v{0  ⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则).
kHNn$KL7M}O [/s-U0
h z pB\~siwb0  ⑥在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类.51Testing软件测试网Yu1f.Ca*a0y
51Testing软件测试网z(UQhO/j4X
  3)设计测试用例:在确立了等价类后,可建立等价类表,列出所有划分出的等价类:51Testing软件测试网F)[(w [F IKc

&Y$O y@?m:k5c0   输入条件 有效等价类 无效等价类51Testing软件测试网 L*^Vx S id;hh2A
  ... ... ...51Testing软件测试网s0@?&?BD3FDC
  ... ... ...51Testing软件测试网Ba"_M:]N#v]+J z

!B` y ?&U0   然后从划分出的等价类中按以下三个原则设计测试用例:
[hIz"o2D^M0
j-i_3[XzxbF)B6h0  ①为每一个等价类规定一个唯一的编号.51Testing软件测试网&c,l*IRe8we1}D \
51Testing软件测试网%U%Du#p\ | R
  ②设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步.直到所有的有效等价类都被覆盖为止.51Testing软件测试网"eK f"t\Q}

VJ'H;Q6y1O0  ③设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步.直到所有的无效等价类都被覆盖为止.51Testing软件测试网,qI~|}n
51Testing软件测试网U-?.?*Yk]~
边界值分析法
#A,}Di ]051Testing软件测试网D#T%bmlY
  边界值分析方法是对等价类划分方法的补充.
4U iuWC0
BAd,Jm7Xf"`*I~0(1)边界值分析方法的考虑:51Testing软件测试网3h/cLuQ/q`t#ZU a9zi

Y;p T:{K0  长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.51Testing软件测试网j9h fv/g5fi0m

~:w]S4D6a'gCt0  使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.51Testing软件测试网A%k;_#co5{hq
51Testing软件测试网;Hk4P@(sqss
(2)基于边界值分析方法选择测试用例的原则:
Icd@0oi0
#U z)s_P0  1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据.
$?*k/d#t\.wXA051Testing软件测试网_thp.jN
  2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据.
({*F#yW"ZS c2}0
#?iUEE){*xvPk0  3)根据规格说明的每个输出条件,使用前面的原则1).51Testing软件测试网Z7ed)Oe7M

f.{~nC _3Z!K0  4)根据规格说明的每个输出条件,应用前面的原则2).51Testing软件测试网;dZ t,^?-w
51Testing软件测试网j8g,pmq't'W;{Hkm
  5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例.
7T(xf0])T0f051Testing软件测试网J `z `3K;tA
  6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例.51Testing软件测试网2HJ GS5gv_0f
51Testing软件测试网y5c7^-^'`O\%Xv
     7)分析规格说明,找出其它可能的边界条件.51Testing软件测试网oJ)p]L&J;FuM

2|@y%kM C;|h J9d0错误推测法51Testing软件测试网^mT y0V
51Testing软件测试网"mU5cwY
  基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.51Testing软件测试网r0F#@4J B)q gJx`

"U{D$V~(k$[+NO+M4?0  错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.
ol[/W:nuF#`WC,n,L0
dw:h|},c3{#^ j!P0因果图方法
"yh MzDe1f4q0
4^3?I?U F3Y0  前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型).  51Testing软件测试网yz H(m Z)r4X
  因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.  
,r;a|"s7~0
ir bocu3u7g]'a {0  利用因果图生成测试用例的基本步骤:  51Testing软件测试网X"LwQ.ktp

rBL6On8i&f0  (1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符.  51Testing软件测试网l$Tf _9g m-vb
51Testing软件测试网:_ZLb%Q B_7s a*S
  (2) 分析软件规格说明描述中的语义.找出原因与结果之间, 原因与原因之间对应的关系. 根据这些关系,画出因果图.
]aY!Y;Sm P2J`t l0
;R2mo2|8T*y/T;V0  (3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现. 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件.
dj G5i2@2qFM051Testing软件测试网 bc.ecv
  (4) 把因果图转换为判定表.51Testing软件测试网"A(MR3MDIk)t

B9kJ7_)\"l}g't%X*H0  (5) 把判定表的每一列拿出来作为依据,设计测试用例.51Testing软件测试网4i{9SoLNV

j n+C$L2M4WR?YR ?^0  从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加.51Testing软件测试网9`u9p2EJ6xA
51Testing软件测试网v7Hf8}9\"K'`P+i(j
  前面因果图方法中已经用到了判定表.判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确.51Testing软件测试网6W%I:l?YI;_u
51Testing软件测试网)dA+dy)` R9P
  判定表通常由四个部分组成.51Testing软件测试网Fpk2E6W(y T;?
51Testing软件测试网C+DBe ~ l3tX/O
  条件桩(Condition Stub):列出了问题得所有条件.通常认为列出得条件的次序无关紧要.51Testing软件测试网.m U!Ci6|"Z;U

blw({ c e0  动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束.
#Y#g%^\B X1obi0
7G{,|tfp2c0  条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值.51Testing软件测试网h,y8RK%nB6r

cD@H^ P:x0  动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作.51Testing软件测试网7xK,Z#m#BGld

vE:y1Q*M0  规则:任何一个条件组合的特定取值及其相应要执行的操作.在判定表中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列.51Testing软件测试网$f+S0x[7k aAH"Vn[

~y.gi0EDi0  判定表的建立步骤:(根据软件规格说明)
+H+k#\7f2`0
GCa Xb-Tz ?0  ①确定规则的个数.假如有n个条件.每个条件有两个取值(0,1),故有 种规则.  
fY:U:F Lg051Testing软件测试网 t0e#fj?;X0q
  ②列出所有的条件桩和动作桩.51Testing软件测试网9g+M8Oc{I#n

"{/}x-T:C0  ③填入条件项.51Testing软件测试网 ]M&{!}C#}

cA3IS g0  ④填入动作项.等到初始判定表.
a/_ hq8i051Testing软件测试网7gg uR1B2Rs*}
  ⑤简化.合并相似规则(相同动作).51Testing软件测试网fwnt(mSV |
51Testing软件测试网!Vc7WkX-NWf%F?(o
  B. Beizer 指出了适合使用判定表设计测试用例的条件:51Testing软件测试网f;G mUx9Lt]F+Xt

*o m7mzP n:QI0  ①规格说明以判定表形式给出,或很容易转换成判定表.51Testing软件测试网LRRge1w
51Testing软件测试网e$b#Ys l,k~v
  ②条件的排列顺序不会也不影响执行哪些操作.51Testing软件测试网S9U9g5]^HC6vk:e+?
51Testing软件测试网'lkBP)xQk}g
  ③规则的排列顺序不会也不影响执行哪些操作.
:j2C7nqH#_*]XF7x0
T$}5p6Bz&^0  ④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则.
.E(d0cC xB:e0
7O+?:TmZ$J$e0  ⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要.
#SIc#^p.R]@0

TAG: 测试管理

hellowang123的个人空间 引用 删除 hellowang123   /   2012-07-05 10:42:00
zhujiejun1314的个人空间 引用 删除 zhujiejun1314   /   2011-07-22 19:08:53
zhujiejun1314的个人空间 引用 删除 zhujiejun1314   /   2011-07-22 19:05:24
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2020-10-18  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 28229
  • 日志数: 50
  • 建立时间: 2006-12-25
  • 更新时间: 2007-02-06

RSS订阅

Open Toolbar