黑盒测试的定义
黑盒测试又称功能测试 ,它是通过一系列测试用例来检测软件的功能是否正常。在黑盒测试中,我们把软件看成是一个黑盒子(不关注内部的实现原理),通过关注软件的输入输出结果,来判断软件是否存在问题。
黑盒测试主要有以下几种方法:
等价类划分法
等价类划分法将程序所有可能输入的数据 划分为若干部分(子集),然后从每个子集中选取具有代表性的数据作为测试用例,测试用例包含有效等价类 和无效等价类 ,二者间的区别为:
等价类 输入 关注点 有效等价类 合理的、有意义的 功能和性能 无效等价类 不合理的、无意义的 异常处理
例如一个Web登录界面中,需要输入用户的邮箱,那么有效等价类可以理解为符合邮箱格式规范的字符串集合,例如123@126.com
、10000@qq.com
等,无效等价类可以理解为不符合邮箱格式规范的字符串集合,例如123456
、abbbc@@
等字符串。
等价类划分法是一种典型的、常用的测试方法。在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。软件不能只接收合理的数据,还要经受意外的考验,接受无效的或不合理的数据,这样软件才能具有较高的可靠性。
等价类划分方法
等价类划分主要有4种方法:
按双边区间划分 如果输入条件规定了取值范围,或者值得个数,则可以确定一个有效等价类 和两个无效等价类 。 例如一个用户的ID的取值范围是
[
1000
,
9999
]
[1000,9999]
[ 1 0 0 0 , 9 9 9 9 ] ,那么有效等价类为区间
[
1000
,
9999
]
[1000,9999]
[ 1 0 0 0 , 9 9 9 9 ] 中所有得ID,无效等价类为
(
−
∞
,
1000
)
(-∞,1000)
( − ∞ , 1 0 0 0 ) 和
(
10000
,
+
∞
)
(10000,+∞)
( 1 0 0 0 0 , + ∞ )
按取值划分 如果规定了输入数据的一组值(假定n
个),且程序要对每一个输入值分别进行处理的情况下,可确定n
个有效等价类(每个值确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。 例如,程序输入x
取值于一个固定的枚举类型
{
1
,
3
,
7
,
10
}
\{1,3,7,10\}
{ 1 , 3 , 7 , 1 0 } ,且程序中对这4个数值分别进行了处理。那么有效等价类为
x
=
1
,
3
,
7
,
10
x=1,3,7,10
x = 1 , 3 , 7 , 1 0 ,无效等价类为
x
≠
1
,
3
,
7
,
10
x≠1,3,7,10
x = 1 , 3 , 7 , 1 0 。
按单边区间划分 如果输入条件规定了输入值的集合,这时可确立一个有效等价类和一个无效等价类。 例如,在头像上传API中,规定头像大小不能超过100KB,那么有效等价类为小于等于100K的图片,无效等价类为大于100K的图片。
按限制条件/规则划分 如果规定了输入数据必须遵守的规则或限制条件,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。 例如规定了输入数据为非0正整数,那么有效等价类为非0的正整数,无效等价类为0、字符串、负数、小数等。
等价类测试的类型
等价类测试的类型按照测试用例的完整性划分,具体可以划分为两个大类:弱等价类测试 ,强等价类测试 。其中,强等价类测试可以再划分为弱一般等价类测试 和弱健壮等价类测试 。强等价类测试可以划分为强一般等价类测试 、强健壮等价类测试 。
<v:documentProperties v:langID=“2052” v:metric=“true” v:viewMarkup=“false”/>
<v:pageProperties v:drawingScale=".039" v:pageScale=".039" v:drawingUnits=“24” v:shadowOffsetX=“8.504” v:shadowOffsetY="-8.504"/>
<v:foreignData v:orgSize=“85852” v:data=“data:metafile;base64,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 mTbWQon9ORkZ0DkTlDn1X1F0LGnARcdwu7/fRGgdFvWNHNC/Wr2umm0T9OwrUW+L3HWet1S64urJJzW8kO+Qb5oMB2caLRd/ 3/5O6VdtwdPP5VG+6G/+vthRkL/n7T3H11/KAQd72Qu1V4jxZwV6IVJ5Zow33z0qHA9s1xZ45TcEXliIN4NJ/zOdd/jzx44q d5nkDrmkDPydIH67FghyhjkGkmcqCxtvl5IP/Qy1r7tkGuUc/tQpkaj9XZ1H6Yl5laJLfOR7CwMnx+G/nC9IyHeVzPTy6aoH vawKH3rjwHtrb/o9eH8D55XQ8cvbGAz+XtyP5fXk32NfP2WeyXefDDo9HWL2MGXpl8aR2310me8ANrpemeX0O9/MH6bBg/FP vpdeDdyPE6YVsXSeq7I1cDjtT+A8N19+tP3Qnj9TZnfnXk+L8O4x/Kz+b5tYdNSa56Ef5v3t872DmMXz9+ZtF3Xtf1NMzj+Y Pv3zD8f9b+lHB/HV8LVRdywudvOnfw/WlzwpS32Jcb7SoZ9adH9HWkC76jTkHfdpIX+GWz2YDF+HHjupNFiaVwnHseZQ8O+c VjMwYgjgEGPF0Na0h3FHu8jr41nj3quudEm83Xvp1nl83q575Zm12mdcxmo3zPWGgoMW2W2+oSaN8xxFMu02bvGFLeapvlHt bQKWKz5v1mm90wz16bhdxle9BmS7TYNptA2Cysiwvmf/3g/J+P/dGJ51t1x1hutf3qeujUmHvm/FrbYi6cW3XMtWq/3G4roM 1j730y7bdx0n2tdnoft1+Mueb9ZvudUvzNiLl+LRJz79esxtzHH7pU3Dbeyoi5oHtOjbl22ax+bqfEXG6r9+M6+QW56+QXWm 3zBeM6ue3+djb7/W9GzAWbhZgby2ZVxdxMfvKeLrGY6xT7jX091i2cs5WLZ/rRp+5iem3O2RrsUhEzZyuM+fL4y3mnKmdmwV hvwBPzOvCfliSPyVnyQM2IV+aPrn15/uhtfPtpvg/qlA+zw9eBl3UbWAhtuN4L/aCGcVCP3X13EOqn/HlB6Ae5WcPjeA3HgR qOC3XOkjeqoR/UY6PmbPW0cOBmcnO2wjVcyHhAX//N4udr4v1ar/8u8cW//vtm+PpvFjvrK2LG67/7tXjXfy9rb/rSXEt40c cBRshnTI3L4j2aQpe1ptB+TVbOVureg2vXrzOjPzLee6B/ak3JXusk/X6t29Kt+v16O4v8Xn0J632GttH/UvlbY81d1f0OMj mId7+D26AvOjdfX2urL24TVg2xaoZ2ncPud6D0hcr3S839VuuLm9AXWRxE0xc3o/PvXbp6jfQvLsTqMrSd4l9i6UuzoH+h5q 7Sv8jiQPT+ty+u0DriRnxuQ7tO0v0WFF8UDpV8yZKHlXjw+WU6HngQq8fQdlo8+JKwbyoeUHNXGQ9kcWAlHpw+9zfS1hMQa4 Kh7bR4YNaXkGA8oOau0r/I4sCKfzl5ton0L4mINdHQdpp/CRH6QvkXau4q/YssDqz4l+ONtH9JQqxJhrbT/At1PzblX6i5q/ QvsjgQXW++c+oqqSNexOc1tO1Yb1I4VPIlSx5W4sHBk1fJeNAJsXYytJ0SD0TyuVPxgJq7ynggiwMr8WDficukrevPK3c2tJ 0SD0TeT0X5F2ruKv2LLA6s+Jf641+S/kV/3r2Loe0U/xJiN/c+M2ruKv2LLA5i+RezjtT94RKpI8mIL9nQlrV+oPiicKjkS5 Y8rMSD6vcukvGgK2Ltamg7JR5Es+sTHYgH1NxVxgNZHFiJB5VHLpC2noJYUwxtJ8WD78XRF8q/UHNX6V9kcWDFv2w+/AXpX7 oh1m6GtpP8i1lfPu6Af6HmrtK/yOJA9PrD+rfOkzqSivhSDW07rj9QOFTyJUseVuLBytfPkfGgO2Ltbmg7KR58HMe+qXhAzV 1lPJDFgZV4sOyNz0lb74FYexjaTooHun48aSEeUHNX6V9kcWDFvyx+7TPSv9yGWG8ztJ3gX74rqC+Uf6HmrtK/yOJA9PrDgj 2NpI70RHw9DW07rj9QOFTyJUseVuLBE7WfkPHgdsR6u6HthHhgtu+5FuIBNXeV8UAWB1biQWnFKdLWeyHWXoa2E+LBXEF9of wLNXeV/kUWB1b8y+yKk6R/6Y1YexvaTvAvsfTlRgf8CzV3lf5FFgei1x+eLKdjUBriSzO07bj+QOFQyZcseViJBz8u/5iMB+ mINd3QdlI8OBXHvql4QM1dZTyQxYGleLDrU9LWfYjVZ2g7KR6Y9SXUgXhAzV2lf5HFgRX/Mm/rJ6R/8SNWv6HtJP8SiqMvlH +h5q7Sv8jiQPT6w/QqOgb1QXx9DG07rj9QOFTyJUseVuLBD6v+SMaDvoi1r6HtpHigl68txANq7irjgSwOrMSDWdv+Qtp6P8 Taz9B2QjxYIKgvlH+h5q7Sv8jiQPh6tMmnmHUkA/FlGNp2xAMKh0q+ZMnDSjyYWBUi40EmYs00tJ0QD8z2HbIQD6i5q4wHsj gQvV4UT0dQ5uEPbPdn9lwvonCoztchQx6x+KLy4V/nJ73s6Hz4oTy28HCeN8CE8y/x7Xw+/UK9Nudfqpy2KWb+JRgzceLE0V VVVUEY6w0kxMy/dHhZ8pjG4a9V/8+++aPH85Kbk1vzLN8H9fRhkTz8F0uyCqFdOa1/IfSDGsZB/e6uu4NQ5/vzgtBP++DhII yDGo4DNRwX6sbhuTXQD2oY1z7/UkIbDm5VrqUGHpw2p9M5jBoyZqVrmcH0b/Gi5z6q5cwF44w7nRNM9+bO4mVzyzhvLmMpfn qcNzfgP51T4q/lRR/3Le4US+KM0zJL/A0ZAV5S/LJzLUVbJ5nt2E34jRv8wMsxH7kTn13r6LMl1NxVrs1kcSC6lk5KSoqpI8 0cxG942eCO1DewvUXxWjoeDlV8yZSHKF8pKSkkXysQ3wrEt8ImvigcKvmSJQ9Rvnr16kXytRLxrUR8K23ii8Khki9Z8hDlq2 /fviRfqxDfKsS3yia+KBwq+ZIlD1G+srOzSb5WI77ViG+1TXxROFTyJUseVq4FDR48uM1YlwnrGsS6BrGukbg+lf2sfEdyp8 Sbu6prCzI5EL0WNGzYMFJHyhBfGeIrk2jfFF8UDpV8yZKHKF+5ubkkX2sR31rEt9YmvigcKvmSJQ9RvvLz80m+1iG+dYhvnU 18UThU8iVLHqJ8jRs3juRrPeJbj/jW28QXhUMlX7LkIcpXUVERyddLiO8lxPeSTXxROFTyJUseonxNnjyZ5GsD4tuA+DbYxB eFQyVfsuQhytfUqVNJvjYivo2Ib6NNfFE4VPIlSx6ifM2YMYPkaxPi24T4NtnEF4VDJV+y5CHKV2lpKcnXZsS3GfFttokvCo dKvmTJQ5SvOXPmkHxtQXxbEN8Wm/iicKjkS5Y8RPlatGgRyddWxLcV8W21iS8Kh0q+ZMlDlK/FixeTfJUjvnLEV24TXxQOlX zJkocoX0uXLiX5qkB8FYivwia+KBwq+ZIlD1G+li9fTvJVifgqEV+lTXxROFTyJUseonyVlZWRfG1DfNsQ3zab+KJwqORLlj xE+SovLyf5qkJ8VYivyia+KBwq+ZIlD1G+ampqSL62I77tiG+7TXxROFTyJUseonzV19eTfFUjvmrEV20TXxQOlXzJkocoX/ v27SP5qkF8NYivxia+KBwq+ZIlD1G+Dhw4QPJVi/hqEV+tTXxROFTyJUseonwdPnyY5GsH4tuB+HbYxBeFQyVfsuQhytexY8 dIvuoQXx3iq7OJLwqHSr5kyUOUr4aGBpKvnYhvJ+LbaRNfFA6VfMmShyhfZ86cIfnahfh2Ib5dNvFF4VDJlyx5iPJ1/vx5kq /diG834tttE18UDpV8yZKHlVwSFy+2ffeK+d7wesRaj1jrHfT8m8i7Gan70am5q7wfXRYHos8PNDU1kTqyB/HtQXx7bHp+gM Khki9Z8hDlq7m5meRrL+Lbi/j22sQXhUMlX7LkEYsvKjfA0/yk8xydG+AaPJLNvIHEmM/ov9Pw/pglZ35XM/fIvWOe4AX2He L7wuf3Dwg/o793/6DCF3ifszsHF0I/qGEc1APfchdAPe+RHgXQL5DVrwDGQQ3HgRqOCzUcC/qF5cDHtX9GP3GhLoupH60N6T yJPpOv256G+9Z+1PZeO/Nz6fqz//qz/GkZvK3Rz8inZcxmL2Y0hQZlNoX0Z+tf4ZJu4v+nxk3IbQodyp3NDuV6NX3coVzGgg n0+Q7lnkqYkFuc+EpOcaI+bhAPtsWJ9LgXM4oT0zJOJaRlBBP0Z/n15/TvRzl9pUXG1PAB01n0Z/ZByCI5AMy2A9/yjjDn2I 75nKFT3UbN+mzxSE+g1U/pOSP6YD2WlwCujxJwDaRhMdoYyPdlrX3bINeo53ahTI3H6mxqP8zLTC3iy45iPhX989vIIu4ZD/ P0r320dOnBFcfWA0OBQ+9deY7/4/L+j14fwvv0faanr3kBYyv7X5l8aR1jv7yaHG4Pmus9doPXdb9/70o0nzpmYKR/abrnRW jfMcRTC/XyB+uzYfxQ7KfXgXcj59Xfe6uLJPXdkasBR2r/geG6+/Wn7oTxepszvzpy/Nqwfg/lduOp9bCGTlUvwv/N+3sHO4 fx68c/XfSd15lhTZt1/uD7Nwz/n7U/Jdxfx9dC1YWc8Pmbzh18f9qcyOudjTGsF26D/vQw2I4h9rpg3Qwl4Iq8Z6eU1w8ZsB g/GsZCFsWmYUzuoxFZ6hi6mmJZu9w2wLGADer65kw79dtop/5bYqfLtI7ZaZT1zkJDiWmn3D53QLtxkmeUTDttnDSq1R5HcT tNjtipeb/ZTjPH22unkDtppivS51E+cEIMO00g7BRicsH8rx+c//OxPzrxfESm5iJqvz21yHokvv36HWO/UfNXsSMjOwci6w zo8+b5d0IGM2SQA6rbT28UGNeDuo1Pvck14jvn32y3RjR+Z5mEnMF3kcd5vRF/SwQdaOBrrIaMQz5vLhTYLk40fp/o6BpqNP rrRgetm9rxGXCNMvN5+uqnbfjc8LP0wowFfy+42fX9p1dPC3HndUW4+w3eNw3cLc4sTlycOdwXzIEC2zfH3T/a+rfooW6jPv jBz/LsiKv6uTsaVz+Kvf51PT+5aILupc1xNa/rgaMQZwJvR/br69+z2C/z4IdHqbjK42n4oWS+Dl4pM66Wpq9sjZ8rPWwKxl Xz/nbr3x/bE1fhlBBXp/ByHz8OvHlnO6+bY8RVNxFXH4msfx8c8ouFDwxAHAMkrIV13XOkzaYOts9m8dw3a7OGtbCQzVpdC3 NbXQVtvibeLdNm7xiyu9U2dxu/s7bdb7bZDT+w12ZhLVyNNgtr4eabXgvPHJFtiPN6ueX2i3ro1Jh74Z51tsVcOLfqmHsT32 XDN67y2BuUab+Nk4Ktdho0fpdtu99sv1PmfDNirl+LxNz7Nasx9/GHLhUvGiU75oLuOTXm2mazeG6nxFxuqwW4Ti6Tu04ua7 XNMuM6ue3+djY77ZsRc8FmIebGslnxmLvwgZuJuZn85D1dYjHXKfYb+zdSt3D+dC6e6UefuovptTl/erBLRcz86TDmy+Mv55 2qnJkFY72BpJi/zf5pSfKYnCUP1Ix4Zf7o2pfnj97Gt5/m+6BO+TA7/Nvssm4DC6Ed7HJnIfSDGsZBPXb33UGon/LnBaEfxx cMj+M1HAdqOC7UOUveqIZ+UMO49r/NJrVw4GbRr7/dqpzq8DssZCGif4fNYiMymkI/yWj9HbZW4HfY0zlNIW9uFvPmFjFjTv X9Wryc6pe10zlprlpe9HE/4TjTXPS4ERlprrSMy1paxn5Ndk71aPcDXrt+nRn9kfF+wL+iA9uASv4Vtp3w/hK4d2w7i9xDdg nrfYZ2vHsQ481d1T2IMjmwcg/i19fa6ovbhFVDrBpi1Zgz3mdl1o9Y+uIi9IWau6p7pGRyYCUn7qWr10j/4kKsLsTqcpB/ia UvzYL+hZq7Sv8iiwPRe9K/uELriBvxuRGfm6l/P1I8HCr5kiUPK/Hg88t0PPAgVg9i9TgwHnxJ2DcVD6i5q4wHsjiwEg9On/ sbaesJiDUBsSY4MB6Y9UUkR3q8uav0L7I4sOJfTp5tIv1LImJNRKyJDvQvIUJfKP9CzV2lf5HFgRX/cryR9i9JiDUJsSY50L 9YeQdDvLmr9C+yOBBdb75z6iqpI17E50V8XmbPepPCoZIvWfKwEg8OnrxKxoNOiLUTYu3koHgg8o4VKh5Qc1cZD2RxYCUe7D txmbT1zoi1M2Lt7KB4IPLOSMq/UHNX6V9kcWDFv9Qf/5L0L10QaxfE2sVB/iXErL9jNN7cVfoXWRyIPrNb94dLpI4kI75kxJ cscf1A8UXhUMmXLHlYiQfV710k40FXxNoVsXZ1UDyIZtcnOhAPqLmrjAeyOLASDyqPXCBtPQWxpiDWFIfFg+/F0RfKv1BzV+ lfZHFgxb9sPvwF6V+6IdZuiLWbw/yLWV8+7oB/oeau0r/I4kD0+sP6t86TOpKK+FIRXyqz5/oDhUMlX7LkYSUerHz9HBkPui PW7oi1u8Piwcdx7JuKB9TcVcYDWRxYiQfL3victPUeiLUHYu3hsHig68eTFuIBNXeV/kUWB1b8y+LXPiP9y22I9TbEeptD/M t3BfWF8i/U3FX6F1kciF5/WLCnkdSRnoivJ+Lryey5/kDhUMmXLHlYiQdP1H5CxoPbEevtiPV2h8QDs33PtRAPqLmrjAeyOL ASD0orTpG23gux9kKsvRwSD+YK6gvlX6i5q/Qvsjiw4l9mV5wk/UtvxNobsfZ2iH+JpS83OuBfqLmr9C+yOBC9/vBkOR2D0h CfngMwjdlz/YHCoZIvWfKwEg9+XP4xGQ/SEWs6Yk13WDw4Fce+qXhAzV1lPJDFgaV4sOtT0tZ9iNWHWH0OiwdmfQl1IB5Qc1 fpX2RxYMW/zNv6Celf/IjVj1j9DvMvoTj6QvkXau4q/YssDkSvP0yvomNQH8TXB/H1YfZcf6BwqORLljysxIMfVv2RjAd9EW tfxNrXYfFAL19biAfU3FXGA1kcWIkHs7b9hbT1foi1H2Lt55B4sEBQXyj/Qs1dpX+RxYHw9WiTTzHrSAbiy0B8GTbFAwqHSr 5kycNKPJhYFSLjQSZizUSsmQ6JB2b7DlmIB9TcVcYDWRyIXi+idMQg8/AH8PVn6q8XxcOhii+Z8ojFV6x31Pyj5Rx+7hfPjp z12a9syeWvn7sjudSgr9g7N8KSDOcIm4I51cyfe8Y/9gTwWPfduTuhH+Qmi6YjhvylkDIK8iC+CrW8/KWvtuZMe9WYv7Tt/n b5S2fc+lxqcKyOvHMDkjJ3x9hj9Z0b9zw6bmSsnP3R8n6L5jzU9c2ZdnrORjs9d0vsNPo7Nyg7tZyn9DVoN07yjJdpp42Txr fa43hjntK2+9vlBp9lr51Cvr0nsc807Va8c2PISNF3bkSz3zpetgjZ7zmp9usNeD26rCAvIIusjVL/OeBtZ3PGHHzmdUo1vk vPbF//xKosr1PMMuuDdgcycxl8Atyn31PXY9z+PxlBsM4=”/>
弱一般
等价类测试
弱健壮
等价类测试
强
等价类测试
强一般
等价类测试
强健壮
等价类测试
弱
等价类测试
所谓弱,是指从各个等价类中选取值时只考虑等价类自身,查出的缺陷属于“单缺陷”,即单一因素造成的缺陷。所谓强,是指考虑了等价类之间的相互影响,查出的缺陷属于多种因素造成的“多缺陷”。
从测试用例的选型上来看:
弱:单缺陷假设,不考虑取值组合 的情况 强:多缺陷假设,考虑取值组合的情况
在“一般”和“健壮”上:
一般:不考虑无效值(无效等价类,即异常区域) 健壮:考虑无效值
综上所述,这四种等价类测试类型可以理解为:
弱一般等价类测试 单缺陷假设(取值不组合),不考虑异常区域。在设计测试用例上: 1、对于有效输入,取每个有效等价类的一个值 2、对于无效数据,不考虑(不取无效等价类)
强一般等价类测试 多缺陷假设(取值组合),不考虑异常区域测试用例的设计时需要考虑等价类之间的相互作用,选取等价类的笛卡尔积的元素值来实现。在设计测试用例上: 1、对于有效输入,考虑有效等价类之间的组合 2、对于无效输入,不考虑
弱健壮等价类测试(传统的等价类测试类型 ) 基于单缺陷假设,考虑无效等价类,选取的测试用例要覆盖每一个有效等价类和无效等价类,但时不能同时覆盖两个无效等价类。
强健壮等价类测试 每个无效等价类和有效等价类的组合都要覆盖到,考虑所有的有效和无效情况。
边界值分析法
软件的很多错误都是发生在输入或者输出范围的边界上,而不是输入输出范围的内部,所以边界值分析法也就诞生了。边界值分析法是一种对输入或输出的边界值进行测试 的一种黑盒测试方法,是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
边界点
边界点分为上点 、内点 和离点 :
下面一系列图片中,蓝色的为上点,橘色为离点,绿色为内点:
边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。
设计测试用例的方法
如果输入条件规定了值的范围 则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。 例如程序的需求文档中提到:“如果身高在170cm至180cm,则…”,那么测试数据应当选取170
和180
,还应当选取170.1
、169.9
、179.9
、180.1
等。
如果输入条件规定了值的个数 则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。 例如ID的范围应当是
[
1
,
1000
]
[1,1000]
[ 1 , 1 0 0 0 ] ,那么测试数据可以取值为1
、1000
、0
、1001
。
如果输出条件规定了值的范围 则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
如果输出条件规定了值的个数 则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
分析需求,找出其它可能的边界条件
边界值分析法类型
假设变量
x
1
x_1
x 1 、
x
2
x_2
x 2 的取值范围分别是
[
a
,
b
]
[a,b]
[ a , b ] 、
[
c
,
d
]
[c,d]
[ c , d ]
一般边界条件测试用例设计法 该方法生成的测试用例有
4
n
+
1
4n+1
4 n + 1 个,分别是
{
a
,
b
,
c
,
d
,
a
+
,
b
−
,
c
+
,
d
−
,
n
o
r
m
a
l
}
\{a,b,c,d,a+,b-,c+,d-,normal\}
{ a , b , c , d , a + , b − , c + , d − , n o r m a l }
健壮性边界条件测试用例设计法 取值包含
{
a
,
b
,
c
,
d
,
a
+
,
a
−
,
b
−
,
b
+
,
c
+
,
c
−
,
d
+
,
d
−
,
n
o
r
m
a
l
}
\{a,b,c,d,a+,a-,b-,b+,c+,c-,d+,d-,normal\}
{ a , b , c , d , a + , a − , b − , b + , c + , c − , d + , d − , n o r m a l } ,一共是
6
n
+
1
6n+1
6 n + 1 个测试用例
最坏边界条件测试用例设计法 测试用例一共有
5
n
5^n
5 n 个
健壮最坏边界条件测试用例设计法 测试用例包含
7
n
7^n
7 n 个
判定表
等价类划分法和边界值分析方法比较适合输入变量或输入条件相互独立的情况,但是当输入变量或输入条件相互依赖、相互制约的时候,采用等价类划分法和边界值分析方法是难以描述的,测试效果也很难保障,而判定表驱动法就是为了解决这类问题。
什么是判定表驱动法? 判定表驱动法(或决策表法) 是根据需求描述建立判定表后,导出测试用例的方法。在所有的黑盒测试方法中,基于判定表的测试是最为严格、最具有逻辑性的测试方法,并且可以设计出完整的测试用例集合。
什么是判定表? 判定表(也称决策表)是一个用来表示条件和行动的二维表,是分析和表达多逻辑条件下执行不同操作的情况的工具。
判定表类型
有限条目判定表 所有条件都是二值条件,即真或假 扩展条目判定表 条件可以有多个值
实例——阅读指南判定表
上述判定表可以简化,简化规则主要有:
规则合并 若两条或多条规则的动作项相同,条件项只有一项不同,则可将该项合并,合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。 如图a表示了两个柜子的动作项一致,条件项中的第三条件的取值不同,这表示在第一、第二条件分别取真值和假值时,第三条件不论取何值,都执行同一动作。就是说要执行的动作与第三条件的取值无关。这样,我们将这两条规则合并,合并后的第三条件取值用“—”表示,以示与取值无关。 规则包含 无关条件项“-”在逻辑上又可包含其他的条件项取值, 具有相同动作的规则还可进一步合并。
按照上述规则,我们可以对“阅读指南判定表”进行合并: 合并后:
继续合并:
判定表的建立步骤
列出所有条件桩和动作桩 在上述例子中,条件桩有:你觉得疲倦吗?、你对内容感兴趣吗?书中内容使你糊涂吗? 动作桩有:请回到本章开头重读、继续读下去、跳到下一章去读、停止阅读休息 确定规则的个数 在上述例子中,规则个数为12 填入条件项 填入动作项 简化判定表
因果图法
当输入条件过多时,使用判定表会产生大量测试用例,而且也不能覆盖条件之间的先后关系,因果图法就解决了这个问题。
因果图法(Cause-Effect Graphics)是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法。
因果图提供了一个把需求转化为判定表的系统化方法 因果图法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。
与判定表法相比,因果图法存在以下优缺点:
优点: 能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。 可以指出需求规格说明书的不完整性和不明确之处。 缺点: 不能表达重复执行的动作,例如循环结构。
当条件和动作关系不明确,先使用因果图 如果需求是以判定表形式给出的、项目在设计阶段就采用了判定表,则直接用判定表设计测试用例。
因果图关系符号
因果图关系符号有4种:恒等、非、或、与
c
c
c 表示原因,通常在图的左部,
e
e
e 表示结果,通常在图的右部。
c
c
c 和
e
e
e 均可取值为0或1,0表示状态不发生,1表示状态发生。
恒等 表示原因和结果之间一对一的关系,若原因出现,则结果出现;若原因不出现,则结果也不出现。 如图,在
c
1
=
1
c_1=1
c 1 = 1 的情况下
e
1
=
1
e_1=1
e 1 = 1 ,在
c
1
=
0
c_1=0
c 1 = 0 的情况下
e
1
=
0
e_1=0
e 1 = 0 。 非 表示原因与结果之间的一种否定关系。若原因出现,则结果不出现;若原因不出现,反而结果出现。 如图,在
c
1
=
1
c_1=1
c 1 = 1 的情况下
e
1
=
0
e_1=0
e 1 = 0 ,在
c
1
=
0
c_1=0
c 1 = 0 的情况下
e
1
=
1
e_1=1
e 1 = 1 。 或 表示若几个原因中有一个出现,则结果出现;只有当这几个原因都不出现时,结果才不出现。 如图,如果
c
1
c_1
c 1 或者
c
2
c_2
c 2 或者
c
3
c_3
c 3 是1,那么
e
1
=
1
e_1=1
e 1 = 1 ,只有在
c
1
=
c
2
=
c
3
=
0
c_1=c_2=c_3=0
c 1 = c 2 = c 3 = 0 的情况下
e
1
=
0
e_1=0
e 1 = 0 。 与 表示若几个原因都出现,结果才出现;若几个原因中有一个不出现,结果就不出现。 当
c
1
=
c
2
=
1
c_1=c_2=1
c 1 = c 2 = 1 时,
e
1
=
1
e_1=1
e 1 = 1 ,其它情况
e
1
=
0
e_1=0
e 1 = 0 。
因果图约束符号
约束(异/互斥) 表示几个原因不会同时成立,可能他们都不成立,但最多有一个成立。 如图,a和b中至多有一个可能为1,即a和b不能同时为1。 约束 表示几个原因中至少有一个必须成立,当然也可能都成立。 如图,a、b和c中至少有一个必须是1,即 a、b 和c不能同时为0。 约束(唯一) 表示几个原因中必须有且仅有一个成立。 如图,a和b必须有一个,且仅有1个为1。 约束(要求) 表示当a出现时,b必须也出现。 如图,a是1时,b必须是1,即不可能a是1时b是0。 约束(屏蔽) 表示当a是1时,b必须是0;而当a为0时,b的值不一定
设计用例的步骤
分析软件需求规格说明中哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。 分析软件规格说明中的语义,找出原因与结果之间、原因与原因之间对应的关系, 根据这些关系画出因果图。 由于语法或环境的限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。 把因果图转换为判定表。 根据判定表中的每一列设计测试用例。
案例
某软件的一个模块的需求规格说明书中描述:
年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。 非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。
请绘制出因果图和判定表,并给出相应的测试用例。
首先分析原因和结果:
原因 结果 C1:年薪制员工 A1:扣年终风险金的4% C2:非年薪制员工 A2:扣年终风险金的2% C3:严重过失 A3:扣当月薪资的8% C4:过失 A4:扣当月薪资的4%
然后画出因果图:
根据因果图也可将其转换为决策表: