软件测试技术---黑盒测试
黑盒測(cè)試就是把測(cè)試對(duì)象看做一個(gè)不透明的黑盒子,不必了解程序的內(nèi)部邏輯和結(jié)構(gòu),只需按照需求規(guī)格說(shuō)明書檢查程序的功能是否符合
黑盒測(cè)試主要是為了發(fā)現(xiàn)以下幾點(diǎn)錯(cuò)誤:
(1)是否有不正確或者遺漏的功能
(2)在接口上,輸入能否被正確的接收,是否能輸出正確的結(jié)果
(3)是否有數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤或者外部信息訪問(wèn)錯(cuò)誤
(4)性能上是否能滿足要求
(5)是否有初始化或者終止性錯(cuò)誤
1.等價(jià)類測(cè)試
因?yàn)闇y(cè)試所有的可能輸入數(shù)據(jù)時(shí)不可能的
所以需要在所有的輸入數(shù)據(jù)中選擇合適的代表性的子集來(lái)進(jìn)行測(cè)試
這一過(guò)程需要經(jīng)過(guò)等價(jià)類劃分和選取測(cè)試用例兩個(gè)步驟
所謂的等價(jià)類
就是在所有的測(cè)試數(shù)據(jù)中按照其最終的測(cè)試結(jié)果進(jìn)行劃分
比如說(shuō):
在一個(gè)接受三個(gè)數(shù)據(jù)計(jì)算是否可以構(gòu)成三角形的三個(gè)邊的程序中
如果輸入5,5,5這三個(gè)數(shù)據(jù),那么構(gòu)成了等邊三角形的邊
那么在輸入10,10,10后者20,20,20也是一樣的結(jié)果
所以這三個(gè)數(shù)據(jù)可以劃分為一個(gè)等價(jià)類
在i一個(gè)等價(jià)類中,只要一個(gè)測(cè)試數(shù)據(jù)時(shí)錯(cuò)誤的,那么這個(gè)等價(jià)類中所有的數(shù)據(jù)結(jié)果也都是錯(cuò)誤的,反之亦然
等價(jià)類分為有效等價(jià)類和無(wú)效等價(jià)類
因?yàn)闊o(wú)效的數(shù)據(jù)對(duì)應(yīng)程序的測(cè)試也是必不可少的
等價(jià)類測(cè)試的原則:
(1)如果輸入條件中規(guī)定了數(shù)值的取值范圍或者是個(gè)數(shù),那么可以確立一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類
(2)如果輸入條件中規(guī)定了數(shù)值的集合或者規(guī)定了“必須如何”的條件,那么可以確立一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類
(3)如果輸入條件中規(guī)定了數(shù)值輸入的一組值,而且程序要對(duì)其中每個(gè)數(shù)值進(jìn)行單獨(dú)的處理,可以為每個(gè)數(shù)值確立一個(gè)有效等價(jià)類,然后對(duì)所有的數(shù)值的不允許輸入的數(shù)值確立一個(gè)無(wú)效等價(jià)類
(4)如果輸入條件中規(guī)定了數(shù)據(jù)必須遵守的規(guī)則,則可以確立一個(gè)有效等價(jià)類和若干個(gè)無(wú)效等價(jià)類(以不同的角度違反規(guī)則)
(5)如果一個(gè)等價(jià)類中的元素在程序中的處理方式不同,則進(jìn)一步劃分更小的等價(jià)類
劃分好等價(jià)類,并建立等價(jià)類表列出所有的等價(jià)類之后按照以下原則選擇測(cè)試用例
(1)為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的標(biāo)號(hào)
(2)設(shè)計(jì)一個(gè)新的測(cè)試用例,盡可能多的覆蓋沒(méi)有覆蓋過(guò)的有效等價(jià)類,重復(fù)這一步直至所有有效等價(jià)類都被覆蓋
(3)設(shè)計(jì)一個(gè)新的測(cè)試用例,其實(shí)僅覆蓋一個(gè)沒(méi)有被覆蓋過(guò)的無(wú)效等價(jià)類,重復(fù)這一步使得所有的無(wú)效等價(jià)類都被覆蓋
2.邊界值分析
邊界值分析其實(shí)是讀等價(jià)類劃分的補(bǔ)充
因?yàn)槌绦蛑械拇罅垮e(cuò)誤是發(fā)生在輸入或輸出范圍的邊界上,而不是范圍的內(nèi)部,所以要針對(duì)各種邊界情況設(shè)計(jì)測(cè)試用例
進(jìn)行邊界值分析首先要確定邊界情況
應(yīng)當(dāng)選取正好等于,剛剛大于,或者剛剛小于邊界的值進(jìn)行測(cè)試
進(jìn)行邊界值分析的原則:
(1)如果輸入條件中規(guī)定了值的范圍,則應(yīng)選取這個(gè)范圍的邊界的值以及剛剛超過(guò)這個(gè)范圍的值
(2)如果輸入條件中規(guī)定了值的個(gè)數(shù),則應(yīng)當(dāng)選取最大,最小個(gè)數(shù)以及比最大多一和比最小少一的值
(3)根據(jù)規(guī)格說(shuō)明的每個(gè)輸出條件進(jìn)行原則1
(4)根據(jù)規(guī)格說(shuō)明的每個(gè)輸出條件進(jìn)行原則2
(5)如果規(guī)格說(shuō)明規(guī)定輸出或輸出域是有序集合,則選取集合的第一個(gè)元素和最后一個(gè)元素
(6)如果程序中使用了一個(gè)內(nèi)部的數(shù)據(jù)結(jié)構(gòu),則選取這個(gè)數(shù)據(jù)結(jié)構(gòu)的邊界值
(7)分析規(guī)格說(shuō)明,找出其他可能的邊界條件
3.基于判定表的測(cè)試
判定表又稱為決策表,最適合描述在將多個(gè)邏輯條件取值組合或復(fù)雜條件情況下執(zhí)行哪些不同的動(dòng)作
使用判定表時(shí)
在條件框列出所有的可能的單個(gè)條件
在動(dòng)作框列出對(duì)應(yīng)條件的執(zhí)行動(dòng)作
4.基于因果圖的測(cè)試
等價(jià)類劃分和邊界值分析著重考慮輸入條件,但對(duì)于各個(gè)輸入條件之間的關(guān)系則討論不多
而在某些情況下又需要對(duì)輸入條件之間的關(guān)系和各種組合情況進(jìn)行描述
就要使用到因果圖測(cè)試
因果圖方法最終生成的就是判定表
使用因果圖方法的步驟如下:
(1)根據(jù)規(guī)格說(shuō)明書分析哪些是原因(輸入條件)哪些是結(jié)果(輸出條件),并為每個(gè)原因和結(jié)果賦予一個(gè)標(biāo)識(shí)符
(2)分析規(guī)格說(shuō)明書中的語(yǔ)義,找出原因和結(jié)果之間的對(duì)應(yīng)關(guān)系,畫出因果圖
(3)由于語(yǔ)法和環(huán)境限制,有些原因或者結(jié)果之間的組合情況有著一些限制,為了表明這些特殊情況,在因果圖上用一些記號(hào)標(biāo)明約束條件
(4)把因果圖轉(zhuǎn)換為判定表
(5)把判定表的每一列作為依據(jù),設(shè)計(jì)測(cè)試用例
5.基于狀態(tài)圖的測(cè)試
狀態(tài)圖描述了當(dāng)前測(cè)試對(duì)象和測(cè)試數(shù)據(jù)之間的關(guān)系
狀態(tài)圖的主要圖形元素有:
(1)狀態(tài),用圓圈表示,反映當(dāng)前對(duì)象所處的環(huán)境或者動(dòng)作
(2)轉(zhuǎn)換,用箭頭表示,表示從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的過(guò)程
(3)事件,和特定的轉(zhuǎn)換有關(guān),用來(lái)描述轉(zhuǎn)換的過(guò)程
(4)活動(dòng),以/形式表示
(5)條件,以[]形式表示,說(shuō)明在這個(gè)條件下該狀態(tài)才能被轉(zhuǎn)換
(6)特殊狀態(tài),開始和結(jié)束狀態(tài)
通常需要將狀態(tài)圖轉(zhuǎn)換成狀態(tài)轉(zhuǎn)換樹后者狀態(tài)轉(zhuǎn)換表來(lái)進(jìn)行測(cè)試用例的選擇
從狀態(tài)圖到狀態(tài)轉(zhuǎn)換樹的轉(zhuǎn)換步驟:
(1)將初始或者開始狀態(tài)作為樹的根節(jié)點(diǎn),所處的層次是1
(2)設(shè)當(dāng)前生成狀態(tài)轉(zhuǎn)換樹的層次為k,從左到右檢查所有層次為k的節(jié)點(diǎn),把對(duì)應(yīng)節(jié)點(diǎn)的下一個(gè)可能狀態(tài)作為其子女節(jié)點(diǎn),并將轉(zhuǎn)換作為邊
(3)重復(fù)(2)直至下面兩種情況出現(xiàn):
? ? ? ? ?1)一個(gè)位于k層的節(jié)點(diǎn)出現(xiàn)在j層上,且j<=k,這個(gè)節(jié)點(diǎn)成為最終的葉節(jié)點(diǎn),不需要繼續(xù)生成他的子節(jié)點(diǎn)
? ? ? ? ?2)節(jié)點(diǎn)的狀態(tài)是結(jié)束狀態(tài),也不需要針對(duì)該節(jié)點(diǎn)繼續(xù)進(jìn)行狀態(tài)轉(zhuǎn)換
6.基于功能圖的測(cè)試
功能圖模型由狀態(tài)圖和邏輯功能圖模型構(gòu)成
7.基于用例和場(chǎng)景的測(cè)試
UML通過(guò)用例模型來(lái)描述系統(tǒng)與外界的交互和功能需求
為了給出UML中用例的細(xì)節(jié),還要為每個(gè)用例建立一個(gè)規(guī)格說(shuō)明,描述用例的事件流
典型的事件流有基本事件流(簡(jiǎn)稱基本流),后補(bǔ)事件流和異常事件流(統(tǒng)稱備選流)
在建立了用例模型之后,需要對(duì)每個(gè)用例進(jìn)行場(chǎng)景分析,發(fā)現(xiàn)所包含的基本流和備選流
然后根據(jù)每個(gè)場(chǎng)景和事件流來(lái)設(shè)計(jì)測(cè)試用例
8.基于有向圖的測(cè)試用例設(shè)計(jì)
在面向?qū)ο蠓椒ㄖ?/p>
通常使用用例圖來(lái)建立系統(tǒng)的功能模型
用類圖來(lái)建立數(shù)據(jù)模型
用狀態(tài)圖,順序圖,活動(dòng)圖等建立行為模型
基于有向圖設(shè)計(jì)測(cè)試用例主要針對(duì)行為模型
該過(guò)程中主要包含6個(gè)活動(dòng):
(1)定義圖
(2)定義鏈接
(3)節(jié)點(diǎn)覆蓋
(4)鏈接覆蓋
(5)權(quán)重測(cè)試
(6)圈測(cè)試
9.基于正交實(shí)驗(yàn)設(shè)計(jì)法的測(cè)試
所謂的正交實(shí)驗(yàn)法就是從大量的試驗(yàn)點(diǎn)中挑選出適量的有代表性的點(diǎn)進(jìn)行實(shí)驗(yàn)
首先根據(jù)被測(cè)軟件的需求規(guī)格說(shuō)明,找出影響其功能實(shí)現(xiàn)的操作對(duì)象和外部因素
把他們當(dāng)做因子,將因子的取值作為狀態(tài),構(gòu)造出二元的因素分析表
然后利用正交表進(jìn)行各因子的狀態(tài)組合,建立因果圖
這樣得出的測(cè)試用例集中,測(cè)試用例的數(shù)目將大大減少
10.其他黑盒測(cè)試用例設(shè)計(jì)技術(shù)
轉(zhuǎn)載于:https://www.cnblogs.com/jchubby/p/4429733.html
總結(jié)
以上是生活随笔為你收集整理的软件测试技术---黑盒测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为什么我们使用Nginx而不是Apach
- 下一篇: 接口到底是什么(一语道破)