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