1、因果图实例讲解1.引言51Testing软件测试网_0O5v4?_1N.0d51Testing软件测试网M_K0e_z;R 等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系、相互组合等。考虑输入条件之间的相互组合,可能会产生一些新的情况。但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。这就需要利用因果图(逻辑模型)。51Testing软件测试网 t1B#A_W因果图(Cause-EffectGraphing)提供了一个
2、把规格转化为判定表的系统化方法,从该图中可以产生测试数据。其中原因是表示输入条件,结果是对输入执行的一系列计算后得到的输出。51Testing软件测试网3g$_h4H_R 因果图方法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。)m F2N7Q8A_u6W_l!V051Testing软件测试网O_h O3h_g C$D2.因果图介绍51Testing软件测试网#T!l$m h&V:?0_|51Testing软件测试网2f_h .B9y_v_o7G7Q2.1图例说明51Testing软件测试网_A4xR.?_S_G:s5X_i_S 51Testing软件测试网_hr b8Z2)P
3、0Z_Od V1、4种符号分别表示了规格说明中向4种因果关系。如图2-1所示。%C-.bK_vK K_E_A00 B!f_v_F_G_$|051Testing软件测试网_h O:N_t%T5L 图2-1 因果图关系51Testing软件测试网_pg K$e_c rD51Testing软件测试网_v;P)|_S_d_a6A2、因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。51Testing软件测试网1o#t_o2 J.o:R_H_j3、ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。ci和ei均可取值0或1,0表示
4、某状态不出现,1表示某状态出现。51Testing软件测试网)e!_J_#Ab_N3o0x x2b(r5g_T%P02.2因果图概念_k_s_i$S4x3j_w0&A;H_H_M&K _x_m01、关系(图2-1 因果图关系)*v:k4V_C_j_R d*p0 恒等:若ci是1,则ei也是1;否则ei为0。:X_O:e#u_z-q_O0 非:若ci是1,则ei是0;否则ei是1。_x30d9I_m$V_e+w_W0 或:若c1或c2或c3是1,则ei是1;否则ei为0。“或”可有任意个输入。_t4 ?_Y*p0 与:若c1和c2都是1,则ei为1;否则ei为0。“与”也可有任意个输入。_A c
5、-8e)c6B7H0+O0g_M6DD(h02、约束_N ?_z_u7? ;Z)v/0 输入状态相互之间还可能存在某些依赖关系,称为约束。例如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。如图2-2所示。51Testing软件测试网_x_W7V!s(a_v51Testing软件测试网_c0z_kl_m_h_a;Q_Y02Y? r_O_j_I0 图2-2因果图约束51Testing软件测试网_U5t_v_I.W_j51Testing软件测试网%*i D6G_a*E (r_CA.输入条件的约束有以下4类:%c_ R,_P_j0 E约束(异):a
6、和b中至多有一个可能为1,即a和b不能同时为1。l h_iAz ?0 I约束(或):a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。51Testing软件测试网w7_ Ny _ I_R -v O约束(唯一);a和b必须有一个,且仅有1个为1。51Testing软件测试网_R4y_Sq_E,C p9_R约束(要求):a是1时,b必须是1,即不可能a是1时b是0。51Testing软件测试网_B_y_o_D_V_R51Testing软件测试网3v i6M_C_a,d3m_B.输出条件约束类型51Testing软件测试网_Y_h_X2qo_b)L输出条件的约束只有M约束(强制):若结果
7、a是1,则结果b强制为0。51Testing软件测试网2j)m p0R_L.O1E51Testing软件测试网_t_C4h_f_F.Ye_|2.3因果图法设计测试用例步骤-G:R_B4m o$H5X0.t*|_n_e_Y_n_i01、分析待测得系统规格,找出原因与结果51Testing软件测试网_G z#G h a$L 分析软件规格说明描述中,那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符。3c%x%M;P_p+V$e l_HOTa02、画出因果图51Testing软件测试网(f3B_v_Rc,k6?_G 分析软件规格说明描述中的语义。
8、找出原因与结果之间,原因与原因之间对应的关系。根据这些关系,画出因果图。_D.C_W O/_j A)U:A03、标记约束或限制条件51Testing软件测试网_P_w n$z_H4G c 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况下不可能出现。 为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。# u/f%b8_H*O,j4J04、把因果图转换为判定表。51Testing软件测试网e_m_S_v_u_ZZ_V5、用判定表中的每一项生成测试用例。%h V7I_F#L_O7z7y-051Testing软件测试网*K5O2M;Y_c/_3.因果图实例,ED_e).A$
9、J$p_c_E_y051Testing软件测试网$m_F/.w*_L nG_l/K3.1实例一8_|-T)d_H5G_L w92D051Testing软件测试网 A T_gO1S0n.u 4_5R某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。51Testing软件测试网_O_I5j(E_b_T_T1N_e_w/z_K6dN_H;L_X01、对说明进行分析,得到原因和结果:51Testing软件测试网_w_H*_w_Y&D_0A Z W1)(?!D_E-2d:
10、I Bk 0原因:51Testing软件测试网 e_o7#f_S1:第一列字符是A;_a2?6uUG&_i!M3v02:第一列字符是B;51Testing软件测试网_iO_Q-i_ Z&h)b3:第二列字符是一数字。51Testing软件测试网_r.e_x;A-F_X2_t_x,y0qN _j%aP c0结果:_R_R_f;v_z X_h,m.E021:修改文件;51Testing软件测试网 _S*e.A_F_V,e22:给出信息L;51Testing软件测试网_b_:A9n_e _f23:给出信息M。73l6o_G_| M_V051Testing软件测试网0Y/j M_w_L_c52、其对应
11、的因果图如下:11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束,如图3-1所示。51Testing软件测试网t_JM_g_v_? D51Testing软件测试网R!O_E%p_n_i o_m/g E#!Y0+e 2c_r_p;v _:tM L_i*0图3-1实例一的因果图_9s1z_ J09Vi i_s, t_w_4Cn8C03、根据因果图建立判定表。51Testing软件测试网_r !kj O,A9u 7B)bW1f_N28m051Testing软件测试网_v _E&HZ#q_H)S51Testing软件测试网_g_c O_L/F_B Z_h_K S 表中8种情况
12、的左面两列情况中,原因和原因同时为1,这是不可能出现的,故应排除这两种情况。0IZ2g*q J_ w0L&_P9C051Testing软件测试网u-E/N-f o03o+K(_f4、把判定表的每一列拿出来作为依据,设计测试用例51Testing软件测试网_t2K3am_x_G_w._i_v 我们把表的最下一栏给出了6种情况的测试用例,这是我们所需要的数据。8b1O RA)?)J4K&y0(v5U)g_E2r4P;UD03.2实例二t&V:d_w_|_X-L051Testing软件测试网_L_J_C6O$o有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。7 _oo_n_r_d_d_?
13、0其规格说明如下:51Testing软件测试网_L_$g_h8VJ)D_o若投入5角钱或1元钱的硬币,押下橙汁或啤酒的按钮,则相应的饮料就送出来。51Testing软件测试网)r_v_B3Z_R3|若售货机没有零钱找,则一个显示零钱找完的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;#e_J,h_f.p(0若有零钱找,则显示零钱找完的红灯灭,在送出饮料的同时退还5角硬币。51Testing软件测试网_U_Da0J:G*T_H z_yj_s_D_N n01、分析这一段说明,列出原因和结果:51Testing软件测试网! q4B;q_N_v3s.c_V(x)o_q这本身
14、只是一个实例,只是用来学习,其实其设计说明还是存在好多漏洞的,例如:如果售货机里没有饮料了怎么办?51Testing软件测试网_O_p)_8m_e n3S_M51Testing软件测试网 n!I$B_s D*Q原因:_nmw2p_V#g_ _F_H_p01、售货机有零钱找51Testing软件测试网_|1|_s0b*O_R2、投入1元硬币_o ? ej_Y.1t03、投入5角硬币$x/v_P:k _X04、押下橙汁按钮51Testing软件测试网0B61_B_s_J 4Z_D_Z)o5、押下啤酒按钮51Testing软件测试网_x_U,_X_K0x_IP51Testing软件测试网_Y_KyA
15、_PY1B结果:8Z,U+U*9b E_m;B8i1l021、售货机零钱找完灯亮9R;:F)_P_|/T022、退还1元硬币51Testing软件测试网9h _N-z+L sR23、退还5角硬币51Testing软件测试网l_B)M_r M_U_u24、送出橙汁饮料51Testing软件测试网_j_S4;_T!y1P_d_V e-N_t25、送出啤酒饮料51Testing软件测试网_D_k)| 4_s.3T_S51Testing软件测试网_b_D(L_H_b_N_D_e2、画出因果图,如图3-2所示。51Testing软件测试网_&L Sr_n_F_I_R_U所有原因结点列在左边,所有结果结点
16、列在右边。建立中间结点,表示处理的中间状态。中间结点:&c.ya7c_I c_B011、投入1元硬币且押下饮料按钮51Testing软件测试网0n_my_L_r_m_m _u12、押下橙汁或啤酒的按钮51Testing软件测试网7+M_l_j_f_R13、应当找5角零钱并且售货机有零钱找u%T_A&w8_F_n_T014、钱已付清51Testing软件测试网3v5A_D_v_I_X51Testing软件测试网2_L_C_?1r_S*c51Testing软件测试网/P_xi_|_x_6|_O51Testing软件测试网8b+H_2UH 图3-2 售货机因果图51Testing软件测试网*S_Z1
17、j_G-W:_K_S_wV9L$a C-m/T_P_B03、转换成判定表:51Testing软件测试网J t2c+C5X-_W T51Testing软件测试网0 l%_O_x_L +B_V_f_b51Testing软件测试网$_X%.Yy7d k_D4、在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16列与第32列因什么动作也没做,也删去。最后可根据剩下的16列作为确定测试用例的依据。)%f_ ;m:r0k_e$K:T Fj_IL_s u _N03.3实例三)M_a_E3f,T_I_|_bU051Testing软件测试网_J#_V$z7w)C6k)oNextData函数的精
18、简决策表_p,ta_n.O:(t s9r_e E_0M1月份: 每月有30天51Testing软件测试网(_g_r_G_4EM2月份: 每月有31天, 12月除外51Testing软件测试网_P8z_R_9aM3月份: 2月2a m y_w ;_N_g_k0M4月份:12月&A!u:W_d_q_q0D1日期:1=日期=27$k dSMt(GL_?0D2日期:28&f t_c q6R_O30D3日期:2951Testing软件测试网_T_M_E4u4O_t_D4日期:30c_W_X_u_v_S2O1w:p_+N:f0D5日期:3151Testing软件测试网_H_d_s _Q)j_|Y1 年:年
19、是闰年_e_g 0D_J,P_b0Y2 年:年不是闰年51Testing软件测试网_)M_qe _f*k_E_输入变量间存在大量逻辑关系的NextData决策表。9rW_D_F_x_H_o&c5V0_6C#l_S8M_n5G_0分析这一段说明,列出原因(条件)和结果:51Testing软件测试网%a,W0f$b(M_B_z6P_p3Y_A/D tk S+r0原因(条件):51Testing软件测试网)_i;R v,q%W/N.X&J8RM1月份: 每月有30天+s4_o6Nj_l0M2月份: 每月有31天, 12月除外%N0D#t(t1d z i_|0M3月份: 2月51Testing软件测试
20、网7o8s7F-C1_Q_k_K$u*aw)M4月份:12月51Testing软件测试网#K+x_Y8t_D_?_D1日期:1=日期=27_r/y.%e9_v0D2日期:28,r!S6F;m4Q_C0D3日期:29_P_E_|J&pT n/J;X+W(|0D4日期:30v h*t_*M8?1o:_f7m0D5日期:3151Testing软件测试网k1|_w4_N GY1 年:年是闰年;*Z_(Z s1P_b_S_O(g0Y2 年:年不是闰年51Testing软件测试网3.y_X/s_J5d Q3J2AY w T_ a7t_L7H;P_1D_l0结果:-&d_f S_H/p F$M0输入的日期无
21、效,例如:2008-4-30;2007-2-29;2008-2-30;2008-2-31;/G_y_t_j)?+m_$o0日前为1;_B m;yg_L%a_zZ_U0月份为1;,K_j;H_D_v_PQ_J0日期+1;(2f#z _n_b&W_P5n0月份+1;51Testing软件测试网_Q_)R_m,C:h&v;C年份+1;.e_f%_b)N051Testing软件测试网&g_W_C _(E&q$tn|_n+_o3S01m_S;u_T_b2p3_V+d0 该图没有考虑无效日期的情况。_a_v zzJ.PV W-051Testing软件测试网_N_x u_Y_l-B输入条件过于庞大,个人觉得
22、将其分成4部分利于编写判定表,每个Mi对应一张表。这里就不过多描述了。51Testing软件测试网_g2Q_b_Q_C_b_V这里大家可以尝试用正交试验法解决。51Testing软件测试网e_.c_|_/_N51Testing软件测试网y#F$f_l_ R_S3.4实例四f)rf ?_u_E.K!_u051Testing软件测试网9_J!L6O N_J以中国象棋中马的走法为例子,具体说明:51Testing软件测试网!K;U5l_B&m_h;f1、如果落点在棋盘外,则不移动棋子;:OC j_c.l_E_Y_,A02、如果落点与起点不构成日字型,则不移动棋子;;?_t s4 a_v_p t9s0
23、3、如果落点处有自己方棋子,则不移动棋子;Y/i7s)_H+?5y+k_C_I04、如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子;51Testing软件测试网_i7X)w_q_f3xzn5、如果不属于1-4条,且落点处无棋子,则移动棋子;51Testing软件测试网1s_ny9*u_%m0|6、如果不属于1-4条,且落点处为对方棋子 (非老将) ,则移动棋子并除去对方棋子;_a/v | s O_h07、如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。g$_h_t0 &K_o y_4u5?01、对说明进行分析,得到原因和结果:51Testing软件测试网
24、_L_u!m_N2t_s p51Testing软件测试网1Z_U)Q2u_A-e o h$P9U原因:51Testing软件测试网_e_U9T3cB_*o1、落点在棋盘外;51Testing软件测试网_9k-_W*I1Q)-2、不构成日字;|,C+ M_K_Y03、落点有自方棋子;51Testing软件测试网)x)h*_f%g9q_S4、绊马腿;&|:F6K1#u$e a.Q05、落点无棋子;%u.u0A3v_06、落点为对方棋子;_f_Q$_J0f_I3t_M_Y07、落点为对方老将。51Testing软件测试网2y-q9O_q_v;D4X L z_R_/m_t_a_Q!w_k/s0结果:5
25、1Testing软件测试网K_%_y_P_t0P21、不移动;1Y_o_H_lF_;s022、移动;51Testing软件测试网_r3D_L_v_C_y+N-r23、移动己方棋子消除对方棋子;4T J3P_H#p,r024、移动并战胜对方。2u_V u42q$_:M0#y_g5E_J_)Z_c02、根据分析出来的原因和结果,我们可以画出因果图,如下:51Testing软件测试网%H)G6c_2F1+_51Testing软件测试网_q_O_qx S_|g_p51Testing软件测试网G%u-B_i c7)D_j51Testing软件测试网(C _UV2E0T/a 11这个结点称做中间结点,是为
26、了让因果图的结构更加明了,简化因果图导出的判定表。+v%d(f%x s_ix!W_q_D0组合过于庞大(2的7次方)通过中间结点11,将判定表分成两部分,简化判定表如下:_m1P_Z+*?_K051Testing软件测试网_Eo6B317sS51Testing软件测试网E_b3U-_gq*r0_:Gl_C9L2S_p2_V0 将无用的组合去掉。.G_k B_v4I_t Ss0 将上面两张表根据潜在的约束条件,再次修整,得到如下图:,S_H3ZB#Gb?_y0._L;K_O_k6_E051Testing软件测试网7$s;t#n5e+q_c_D7j_e51Testing软件测试网_Z_Z7z_l,
27、g 4.因果图法优缺点51Testing软件测试网c%|_BP_z4&Y2g,i0XC3e_|_b04.1优点51Testing软件测试网_Z7g_G_OQ1、因果图法能够帮助我们按照一定步骤,高效的选择测试用例,设计多个输入条件组合用例Wy_t_Q/F_x_i_y F02、因果图分析还能为我们指出,软件规格说明描述中存在的问题l6v)Q0l3t_E_r)g)D01_Y_V6d0ti c04.2缺点51Testing软件测试网_I-w/s%w#_O.?0V1、输入条件与输出结果的因果关系,有时难以从软件需求规格说明书得到。51Testing软件测试网_V;_U_k4P1n_r2、即时得到了这些因果关系,也会因为因果关系复杂导致因果图非常庞大,测试用例数目及其庞大。51Testing软件测试网5o_t%Q6B_8t_H_UA
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1