邊界值分析法就是對(duì)輸入或輸出的邊界值進(jìn)行測(cè)試的一種黑盒測(cè)試方法启具。通常邊界值分析法是作為對(duì)等價(jià)類劃分法的補(bǔ)充蕊玷,這種情況下,其測(cè)試用例來(lái)自等價(jià)類的邊界扣讼。根據(jù)大量的測(cè)試統(tǒng)計(jì)數(shù)據(jù)缺猛,很多錯(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是發(fā)生在輸入/輸出范圍的中間區(qū)域椭符。因此針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例荔燎,可以查出更多的錯(cuò)誤。
邊界值分析法
??邊界值分析不是從某等價(jià)類中隨便挑一個(gè)典型值或者任意值作為測(cè)試數(shù)據(jù)销钝,而是著重測(cè)試已劃分出的等價(jià)類的每個(gè)邊界有咨,選取正好等于、剛剛大于或剛剛小于邊界的值作為測(cè)試數(shù)據(jù)蒸健。也就是邊界值方法中常說的邊界5點(diǎn)座享,即上點(diǎn)婉商、內(nèi)點(diǎn)和離點(diǎn)。
(1)上點(diǎn):是指邊界上的點(diǎn)渣叛,如果域的邊界是閉區(qū)間的丈秩,上點(diǎn)就是在域范圍內(nèi),如果是開區(qū)間的話淳衙,上點(diǎn)就是在域范圍外蘑秽。
(2)離點(diǎn):是指離上點(diǎn)最近的點(diǎn),如果域的邊界是是開區(qū)間箫攀,那么離點(diǎn)就在范圍域內(nèi)肠牲,如果是閉區(qū)間,那么離點(diǎn)就在域范圍外匠童。
(3)內(nèi)點(diǎn):域內(nèi)的任意一個(gè)點(diǎn)都是內(nèi)點(diǎn)埂材。
??舉例說明邊界值中上點(diǎn)、離點(diǎn)汤求、內(nèi)點(diǎn)的取值俏险。如下:
(1)區(qū)間為正整數(shù)值域[66,88],上點(diǎn)就是66扬绪,88竖独,并且都是在域范圍內(nèi)。內(nèi)點(diǎn)就是域內(nèi)得任意點(diǎn)挤牛,離點(diǎn)是65莹痢,89。
(2)區(qū)間為正整數(shù)值域(66,88]墓赴,這種情況上點(diǎn)是66竞膳,88,其中一個(gè)是域內(nèi)诫硕,一個(gè)是域外坦辟,內(nèi)點(diǎn)就是域內(nèi)的任意點(diǎn),離點(diǎn)是:67章办,89锉走。
(3)區(qū)間為正整數(shù)值域(66,88),這樣的情況上點(diǎn)還是66藕届,88挪蹭,只是都是在域外,內(nèi)點(diǎn)還是域內(nèi)的任意點(diǎn)休偶,離點(diǎn)此時(shí)為:67梁厉,87。
再做進(jìn)一步說明踏兜,如下:
(1)上點(diǎn)词顾、離點(diǎn)的確定和這個(gè)域的邊界是開區(qū)間還是閉區(qū)間有關(guān)只冻,不論邊界是開區(qū)間還是閉區(qū)間,上點(diǎn)和離點(diǎn)總有一個(gè)在域范圍內(nèi)计技,一個(gè)在域范圍外。如邊界是開區(qū)間山橄,上點(diǎn)在域范圍內(nèi)垮媒,離點(diǎn)在域范圍外,如果是閉區(qū)間航棱,則相反睡雇。
(2)上點(diǎn)、離點(diǎn)的選擇還和區(qū)間的數(shù)據(jù)類型有關(guān)饮醇。如果是整數(shù)它抱,可以通過在上點(diǎn)的基礎(chǔ)上加1或者減1確定離點(diǎn)。如果是實(shí)數(shù)朴艰,可以人為設(shè)置一個(gè)精度观蓄,在這個(gè)精度下選擇一個(gè)最靠近的點(diǎn)。
(3)總結(jié)祠墅。不論是開區(qū)間還是閉區(qū)間侮穿,上點(diǎn)就是邊界值。離點(diǎn)是在閉區(qū)間下毁嗦,上點(diǎn)取值減去1或者人為設(shè)置的精度亲茅。如果是開區(qū)間,上點(diǎn)取值是加1或者人為設(shè)置的精度狗准。內(nèi)點(diǎn)就是域范圍內(nèi)的任意一個(gè)點(diǎn)克锣。
邊界值使用場(chǎng)景
??下面根據(jù)不同場(chǎng)景的輸入或輸出條件下,基于邊界值分析方法選擇測(cè)試用例的原則如下:
(1)如果輸入條件規(guī)定了值的范圍腔长,則應(yīng)取剛達(dá)到這個(gè)范圍的邊界的值以及剛剛超越這個(gè)范圍邊界的值作為測(cè)試輸入數(shù)據(jù)袭祟。例如,如果程序的規(guī)格說明中規(guī)定:"重量在10公斤至50公斤范圍內(nèi)的郵件饼酿,其郵費(fèi)計(jì)算公式為……"榕酒。考慮重量是實(shí)數(shù)故俐,設(shè)置精度為0.01想鹰,則邊界取值為10、50(上點(diǎn))药版,9.99辑舷、50.01(離點(diǎn)),10.01(內(nèi)點(diǎn))槽片。
(2)如果輸入條件規(guī)定了值的個(gè)數(shù),則用最大個(gè)數(shù),最小個(gè)數(shù),比最小個(gè)數(shù)少一,比最大個(gè)數(shù)多一的數(shù)作為測(cè)試數(shù)據(jù)何缓。例如肢础,一個(gè)輸入文件應(yīng)包括1~255個(gè)記錄,因?yàn)槿≈祩€(gè)數(shù)是整數(shù)碌廓,所以邊界值取值為1传轰、255(上點(diǎn)),0谷婆、256(離點(diǎn))慨蛙,126(內(nèi)點(diǎn))。
(3)將規(guī)則(1)和(2)應(yīng)用于輸出域纪挎,即設(shè)計(jì)測(cè)試用例使輸出值達(dá)到邊界值及其左右的值期贫。例如,某程序的規(guī)格說明要求計(jì)算出“每月保險(xiǎn)金扣除額為0至1165.25元"异袄,則邊界取值為可0.00通砍、1165.25(上點(diǎn)),0.01烤蜕、1165.26(離點(diǎn))封孙,1165.24(內(nèi)點(diǎn))。
(4)如果程序的規(guī)格說明給出的輸入域或輸出域是有序集合玖绿,則應(yīng)選取集合的第一個(gè)元素和最后一個(gè)元素作為測(cè)試用例敛瓷。
(5)如果程序中使用了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu),則應(yīng)當(dāng)選擇這個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)的邊界上的值作為測(cè)試用例斑匪。
(6)分析規(guī)格說明呐籽,找出其它可能的邊界條件。