2011年軟件水平考試軟件設(shè)計(jì)師輔導(dǎo)資料(8)
第七章_軟件測(cè)試
本章介紹了軟件測(cè)試的有關(guān)概念、方法及測(cè)試步驟。對(duì)本章提到的概念一定要理解記憶清楚,方法需要領(lǐng)會(huì)和記憶,設(shè)計(jì)測(cè)試用例的設(shè)計(jì)應(yīng)該達(dá)到應(yīng)用層次。本章是重點(diǎn)章。
一、軟件測(cè)試的目的(識(shí)記)
軟件測(cè)試的目的是為了發(fā)現(xiàn)錯(cuò)誤。因此
1、軟件測(cè)試就是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。
2、一個(gè)好的測(cè)試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯(cuò)誤測(cè)試。
3、一個(gè)成功的測(cè)試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)錯(cuò)誤的測(cè)試。
二、軟件測(cè)試方法(識(shí)記和領(lǐng)會(huì))
軟件測(cè)試方法一般分為兩大類(lèi):動(dòng)態(tài)測(cè)試方法和靜態(tài)測(cè)試方法。
靜態(tài)測(cè)試是指被測(cè)程序不在機(jī)器上運(yùn)行,而是采用人工檢測(cè)和計(jì)算機(jī)輔助靜態(tài)分析的手段對(duì)程序進(jìn)行檢測(cè)。
動(dòng)態(tài)測(cè)試是指通過(guò)運(yùn)行程序發(fā)現(xiàn)錯(cuò)誤。一般意義的測(cè)試多指動(dòng)態(tài)測(cè)試。
動(dòng)態(tài)測(cè)試分為黑盒法和白盒法兩種。
黑盒法,是指測(cè)試人員完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過(guò)程,只在軟件接口處進(jìn)行測(cè)試,依據(jù)需求規(guī)格說(shuō)明書(shū),檢查程序是否滿(mǎn)足功能要求。
舉個(gè)例子,一頭豬就我們的測(cè)試對(duì)象,輸入它能吃的東東,輸出它的豬肉和豬糞(有的情況下,輸入其他內(nèi)容可以輸出小豬豬)。并且它能自動(dòng)拒絕吃不能吃的東東(如石頭之類(lèi)),并且不會(huì)直接輸出金元寶之類(lèi)的東東。那么這個(gè)豬是健康的,正常的。我們的測(cè)試不去理會(huì)豬的內(nèi)部有什么花花腸子,怎么把食物變成肉的。這就是黑盒測(cè)試法。
白盒法,是指測(cè)試人員須了解程序內(nèi)部結(jié)構(gòu)和處理過(guò)程,以檢查處理過(guò)程的細(xì)節(jié)為基礎(chǔ),對(duì)程序中盡可能多的邏輯路徑進(jìn)行測(cè)試,檢驗(yàn)內(nèi)部控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)是否有錯(cuò),實(shí)際的運(yùn)行狀態(tài)與預(yù)期的狀態(tài)是否一致。
這就好象是給豬做B超啦,CT啦,胸透啦什么的,把它里面的花花腸子看個(gè)透,并且還要看看吃進(jìn)去的東東都經(jīng)過(guò)哪里,怎么出來(lái)的,通過(guò)這些檢測(cè)來(lái)確定它每個(gè)臟器的功能是否正常,處理食物的狀態(tài)是否和理論上的一致或者發(fā)現(xiàn)它肚子里長(zhǎng)了個(gè)瘤。
呵呵,這種比較太粗鄙了,也不完全像。反正就是這樣,一個(gè)是只看輸入和輸出,另一個(gè)是看里面的細(xì)節(jié)。但是兩種測(cè)試法都不可能對(duì)程序進(jìn)行窮舉測(cè)試。
三、測(cè)試用例的設(shè)計(jì)(簡(jiǎn)單應(yīng)用)
首先來(lái)了解白盒技術(shù)
白盒測(cè)試是結(jié)構(gòu)測(cè)試,所以被測(cè)對(duì)象基本上是源程序,以程序內(nèi)部邏輯為基礎(chǔ)設(shè)計(jì)測(cè)試用例。
使用白盒技術(shù),要盡可能覆蓋最多的路徑,當(dāng)程序內(nèi)部存在判定時(shí),就要考慮邏輯覆蓋。
(1)語(yǔ)句覆蓋:就是要設(shè)計(jì)足夠多的測(cè)試用例(也就是輸入的數(shù)據(jù)),使被測(cè)程序中每個(gè)語(yǔ)句至少執(zhí)行一次。在這里,重點(diǎn)在于每個(gè)語(yǔ)句即每個(gè)語(yǔ)句都要被執(zhí)行過(guò)。設(shè)計(jì)時(shí)要記住這一點(diǎn)。
(2)判定覆蓋:指設(shè)計(jì)足夠的測(cè)試用例,使得程序中每個(gè)判定表達(dá)式至少獲得一次"真"值和"假"值,從而使程序的每一個(gè)分支至少都通過(guò)一次,因此判定覆蓋又稱(chēng)為"分支覆蓋"。它和語(yǔ)句覆蓋有什么不同呢?
就在于判定,語(yǔ)句覆蓋不管是真是假,只要執(zhí)行過(guò)這句就成,而判定覆蓋則必須讓這個(gè)語(yǔ)句的執(zhí)行結(jié)構(gòu)為真和為假都要有測(cè)試用例給出。所以判定覆蓋比語(yǔ)句覆蓋嚴(yán)格些。但是判定覆蓋也不能檢查出全部錯(cuò)誤,因?yàn)橛行l件語(yǔ)句即使寫(xiě)錯(cuò)了,也同樣能夠產(chǎn)生正確真值或假值。
比如 (a=2)or(x>1),由于這個(gè)or的存在,那么把x>1錯(cuò)寫(xiě)成x<1時(shí),如果用例為a=2,語(yǔ)句的值都為"真"。要解決這個(gè)問(wèn)題,就要看下面的覆蓋。
(3)條件覆蓋:是指設(shè)計(jì)足夠的測(cè)試用例,使得判定表達(dá)式中每個(gè)條件的各種可能的值至少出現(xiàn)一次。這就比上面的單是判定覆蓋要嚴(yán)格得多了,如上例,(a=2)
or (x>1);在這里必須使a=2 、x>1,a≠2、x≤1均出現(xiàn)一次。
(4)判定/條件覆蓋:上面條件覆蓋也不一定滿(mǎn)足判定該,因?yàn)橹环蠗l件覆蓋的用例可能會(huì)不滿(mǎn)足每個(gè)判定語(yǔ)句均有真值或假值出現(xiàn)。因此要兩者兼顧,判定條件覆蓋就是指設(shè)計(jì)足夠
的測(cè)試用例,使得判定表達(dá)式中每個(gè)條件的所有可能取值至少出現(xiàn)一次并且每個(gè)判定表達(dá)式所有可能的結(jié)果也至少出現(xiàn)一次。
(5)條件組合覆蓋:是指設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)判定表達(dá)式中條件的各種或能的值的組合都至少出現(xiàn)一次。這就是前面兩個(gè)覆蓋的組合。
(6)路徑覆蓋:是指測(cè)設(shè)計(jì)足夠的測(cè)試用例,覆蓋被測(cè)試程序中所有可能的路徑。
這六種覆蓋進(jìn)行比較有下面一個(gè)表:
條件組合發(fā)現(xiàn)錯(cuò)誤的能力較強(qiáng),凡滿(mǎn)足其標(biāo)準(zhǔn)的測(cè)試用例,也必然滿(mǎn)足前四種覆蓋標(biāo)準(zhǔn)。在實(shí)際的邏輯測(cè)試中,一般以條件組合覆蓋為主設(shè)計(jì)測(cè)試用例,然后再補(bǔ)充部分用例來(lái)達(dá)到路徑覆蓋的測(cè)試標(biāo)準(zhǔn)。
2、循環(huán)覆蓋:當(dāng)程序中存在循環(huán)結(jié)構(gòu)時(shí),要覆蓋所有的路徑是不可能的,但是可以通過(guò)限制循環(huán)結(jié)構(gòu)來(lái)測(cè)試。
3、基本路徑測(cè)試:由于實(shí)際問(wèn)題中,程序的路徑是龐大的,因此要將覆蓋的路徑壓縮到一定限度才能解決這個(gè)問(wèn)題。基本路徑測(cè)試就是在程序控制流程圖的基礎(chǔ)上,通過(guò)分析控制構(gòu)造的環(huán)路復(fù)雜性,導(dǎo)出基本路徑集合從面設(shè)計(jì)測(cè)試用例保證這些路徑至少通過(guò)一次。
再來(lái)看看黑盒技術(shù)
黑盒測(cè)試是功能測(cè)試。測(cè)試的是程序的接口。在設(shè)計(jì)測(cè)試用例時(shí)有以下幾種方法:等價(jià)類(lèi)的劃分、邊界值分析、錯(cuò)誤推測(cè)和因果圖。這幾種方法都不能提供一組完整的測(cè)試用例,在實(shí)際測(cè)試中應(yīng)把各種方法結(jié)合起來(lái)使用。
1、等價(jià)類(lèi)的劃分:是將輸入數(shù)據(jù)按有效的或無(wú)效的(也稱(chēng)合理的或不合理的)劃分成若干個(gè)等價(jià)類(lèi),測(cè)試每個(gè)等價(jià)類(lèi)的代表值就等于對(duì)該類(lèi)其他值的測(cè)試。用該法設(shè)計(jì)測(cè)試用例的步驟為:
(1)劃分等價(jià)類(lèi)(列一個(gè)表)
(2)確定測(cè)試用例:根據(jù)已劃分的等價(jià)類(lèi),按以下步驟設(shè)計(jì)測(cè)試用例:
1)為每個(gè)等價(jià)類(lèi)編號(hào)
2)設(shè)計(jì)一個(gè)測(cè)試用例,使其盡可能多的覆蓋尚未被覆蓋過(guò)的合理等價(jià)類(lèi)。重復(fù)這步直到所有合理等價(jià)類(lèi)被測(cè)試用例覆蓋。
3)設(shè)計(jì)一個(gè)測(cè)試用例,使其只覆蓋一個(gè)不合理等價(jià)類(lèi)。重復(fù)這一步直到所有不合理等價(jià)類(lèi)被覆蓋。
要注意課本上的例子,會(huì)應(yīng)用這種方法設(shè)計(jì)測(cè)試用例
2、邊界值分析:也就是在為設(shè)計(jì)測(cè)試用例時(shí),在等價(jià)類(lèi)范圍內(nèi)選擇一些邊界值作為測(cè)試用例,這樣可以比單用等價(jià)類(lèi)劃分法所選的測(cè)試用例能查出更多錯(cuò)誤,因?yàn)閷?shí)踐表明,程序更容易在處理邊界值時(shí)發(fā)生錯(cuò)誤。
3、錯(cuò)誤推測(cè):通常根據(jù)經(jīng)驗(yàn)或直覺(jué)來(lái)推測(cè)程序中可能出現(xiàn)錯(cuò)誤的情況,并有針對(duì)性的編寫(xiě)檢查這些錯(cuò)誤的測(cè)試用例。
4、因果圖:因果圖能夠有效地檢測(cè)輸入條件的各種組合可能會(huì)引起的錯(cuò)誤。它的基本原理是通過(guò)畫(huà)因果圖,把用自然語(yǔ)言描述的功能說(shuō)明轉(zhuǎn)換為判定表,***為判定表的每一列設(shè)計(jì)一個(gè)測(cè)試用例。
在以上幾種軟件測(cè)試方法,各有所長(zhǎng),但各有所短,在實(shí)際測(cè)試中,應(yīng)該采用綜合策略,通常先用黑盒法設(shè)計(jì)基本的測(cè)試用例,再用白盒法補(bǔ)充一些必要的測(cè)試用例。
本節(jié)具體要掌握的就是等價(jià)類(lèi)劃分及邊界值的測(cè)試用例設(shè)計(jì)。
四、軟件測(cè)試過(guò)程(識(shí)記)
軟件測(cè)試的步驟通常有四步:?jiǎn)卧獪y(cè)試、集成測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試。
1、單元測(cè)試主要針對(duì)模塊的五個(gè)基本特征進(jìn)行測(cè)試:模塊接口、局部數(shù)據(jù)結(jié)構(gòu)、重要的執(zhí)行路徑、錯(cuò)誤處理和邊界條件。單元測(cè)試時(shí)要用到"驅(qū)動(dòng)模塊"和"樁"模塊。注意要概念:驅(qū)動(dòng)模塊是用來(lái)模擬被測(cè)試模塊的上級(jí)調(diào)用模塊。樁模塊則用來(lái)代替被測(cè)試模塊所調(diào)用的模塊。
2、集成測(cè)試有兩種方法:非漸增式測(cè)試和漸增式測(cè)試。
非漸增式測(cè)試是指首先對(duì)每個(gè)模塊分別進(jìn)行單元測(cè)試,再把所有模塊組裝成一個(gè)完整的系統(tǒng)進(jìn)行的測(cè)試。而漸增式測(cè)試就是逐個(gè)把未經(jīng)測(cè)試的模塊組裝到已經(jīng)過(guò)測(cè)試的模塊上去進(jìn)行集成測(cè)試,每加入一個(gè)新模塊進(jìn)行一次集成測(cè)試,重復(fù)此過(guò)程直到程序組裝完畢。漸增式測(cè)試有兩種不同的組裝方法:自頂向下和自底向上結(jié)合。注意兩者區(qū)別。
3、確認(rèn)測(cè)試又稱(chēng)有效性測(cè)試,它的任務(wù)是檢查軟件的功能與性能是否與需求規(guī)格說(shuō)明書(shū)中確定的指標(biāo)相符合。因而需求說(shuō)明規(guī)格說(shuō)明是確認(rèn)測(cè)試的基礎(chǔ).確認(rèn)測(cè)試有兩項(xiàng)工作:進(jìn)行確認(rèn)測(cè)試與軟件配置審查。
4、系統(tǒng)測(cè)試:即要對(duì)軟件所運(yùn)行的整個(gè)系統(tǒng)(包括硬件、外設(shè)、其他軟件和操作人員等)結(jié)合在一起進(jìn)行測(cè)試,確定其是否能夠協(xié)調(diào)工作。
五、調(diào)試(識(shí)記)
軟件測(cè)試的目的是盡可能多地發(fā)現(xiàn)程序中的錯(cuò)誤,而調(diào)試則是在進(jìn)行了成功的測(cè)試之后才開(kāi)始的工作。調(diào)試的目的是確定錯(cuò)誤的原因和位置,并改正錯(cuò)誤,因此調(diào)試也稱(chēng)為糾錯(cuò)(Debug)。
調(diào)試方法有簡(jiǎn)單的調(diào)試方法、歸納法、演繹法和回溯法等。
【編輯推薦】


















