




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、軟件工程導(dǎo)論 本章學(xué)習(xí)目標(biāo): 了解軟件測試的目標(biāo)及準(zhǔn)則 識記軟件測試方法的分類 掌握軟件測試過程 掌握常用的軟件測試用例設(shè)計方法 了解軟件調(diào)試的途徑第7章 軟件測試第7章 軟件測試 7.1 軟件測試目標(biāo) 7.2 軟件測試準(zhǔn)則 7.3 軟件測試方法 7.4 軟件測試過程 7.5 測試用例的設(shè)計 7.6 軟件調(diào)試1979 Myers Art of Software Testing為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程重要觀點: 測試是為了證明程序有錯,而不是證明程序無錯誤; 一個好的測試用例在于它能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤; 一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。7.1 軟件測試目標(biāo) 所有測試都應(yīng)該能追
2、溯到用戶需求; 測試開始之前制定測試計劃; Pareto原理可應(yīng)用于軟件測試; 從小規(guī)模測試開始,并逐步進(jìn)行大規(guī)模測試; 窮舉測試是不可能的; 由獨立的第三方從事測試工作。 7.2 軟件測試準(zhǔn)則(1)測試時是否需要執(zhí)行被測軟件? 靜態(tài)測試 動態(tài)測試(2)測試是否針對內(nèi)部結(jié)構(gòu)和具體實現(xiàn)算法? 黑盒測試(Black-box testing) 白盒測試( White-box testing ) 灰盒測試(Gray-box testing)7.3 軟件測試方法 定義: 對被測程序進(jìn)行特性分析的方法的總稱,這些方法的主要特性是無須執(zhí)行被測代碼,而是借助專用的軟件測試工具評審軟件文檔或程序,度量程序靜態(tài)復(fù)
3、雜度,檢查軟件是否符合編程標(biāo)準(zhǔn),借以發(fā)現(xiàn)編寫的程序的不足之處,減少錯誤出現(xiàn)的概率。7.3.1 靜態(tài)測試 主要方法: - 個人代碼走查 - 小組代碼檢查 - 代碼評審 - 靜態(tài)結(jié)構(gòu)分析 - 代碼質(zhì)量度量7.3.1 靜態(tài)測試 定義: 實際運行被測程序,通過輸入相應(yīng)的測試用例,判定執(zhí)行結(jié)果(輸入/輸出的對應(yīng)關(guān)系)是否符合要求,從而檢驗程序的正確性、可靠性和有效性。7.3.2 動態(tài)測試 主要方法: - 白盒測試 又稱結(jié)構(gòu)測試、邏輯驅(qū)動測試或基于程序的測試。它依賴于對程序內(nèi)部細(xì)節(jié)的嚴(yán)密檢驗,針對特定條件設(shè)計測試用例,對軟件的邏輯路徑進(jìn)行測試。因此采用白盒測試技術(shù)時,必須有設(shè)計規(guī)約及程序清單。 - 黑盒測
4、試 又稱功能測試、數(shù)據(jù)驅(qū)動測試或基于規(guī)格說明的測試。它是一種從用戶觀點出發(fā)的測試。用這種方法進(jìn)行測試時,把被測程序當(dāng)作一個黑盒,不考慮程序內(nèi)部結(jié)構(gòu)和特性,測試者只考慮程序輸入輸出和程序功能,根據(jù)需求規(guī)格說明書來設(shè)計測試用例,推斷測試結(jié)果的正確性。 7.3.2 動態(tài)測試白盒測試黑盒測試測試規(guī)劃根據(jù)程序的內(nèi)部結(jié)構(gòu),如語句的控制結(jié)構(gòu)、模塊間控制結(jié)構(gòu),以及內(nèi)部數(shù)據(jù)結(jié)構(gòu)等進(jìn)行測試根據(jù)用戶規(guī)格說明,以及體現(xiàn)它們的輸入與輸出之間的對應(yīng)關(guān)系,特別是針對功能進(jìn)行測試特點優(yōu)點對程序內(nèi)部邏輯進(jìn)行覆蓋測試。能站在用戶立場,針對軟件功能進(jìn)行測試缺點無法檢驗程序的外部功能特性無法對程序內(nèi)部欠缺部分進(jìn)行測試無法測試程序內(nèi)部
5、邏輯方法舉例語句覆蓋判定覆蓋條件覆蓋判定-條件覆蓋條件組合覆蓋基本路徑覆蓋 等價類劃分邊界值分析錯誤推測因果圖法白盒測試與黑盒測試兩類方法的對比 7.4 軟件測試過程- 軟件測試過程與開發(fā)過程是一個相反的過程。- 開發(fā)過程經(jīng)歷需求分析、概要設(shè)計、詳細(xì)設(shè)計到編碼等一系列逐步細(xì)化的過程,那么測試的單元測試、集成測試到系統(tǒng)測試是一個逆向的求證過程。- 測試過程主要是指代碼調(diào)試之后的動態(tài)測試過程,測試的過程一般分為單元測試、集成測試、系統(tǒng)測試,有時還要增加用戶的驗收測試,在每次測試的過程中可能伴隨著回歸測試。7.4 軟件測試過程軟件測試的V模型7.4.1 單元測試- 概念 將每個模塊作為一個獨立的實體
6、來測試。用詳細(xì)設(shè)計描述作指南,對重要的程序執(zhí)行通路進(jìn)行測試,以便發(fā)現(xiàn)模塊內(nèi)部的錯誤。發(fā)現(xiàn)編碼和詳細(xì)設(shè)計的錯誤。- 測試重點 模塊間的接口 局部數(shù)據(jù)結(jié)構(gòu) 重要的執(zhí)行通路(選擇、循環(huán)等) 出錯處理通路 邊界條件 不正確或不一致的數(shù)據(jù)類型說明 使用尚未賦值或尚未初始化的變量 錯誤的初始值或錯誤的缺省值 變量名拼寫錯誤或書寫錯誤 不一致的數(shù)據(jù)類型 調(diào)用本模塊的輸入?yún)?shù)是否正確; 本模塊調(diào)用子模塊時輸入給子模塊的參數(shù)是否正確; 全局/局部變量的定義和用法是否一致; 出錯的描述是否難以理解 出錯的描述是否能夠?qū)﹀e誤定位 顯示的錯誤與實際的錯誤是否相符 對錯誤條件的處理正確與否 在對錯誤進(jìn)行處理之前,錯誤條
7、件是否已經(jīng)引起系統(tǒng)的干預(yù)等 7.4.1 單元測試 程序中是否存在死代碼; 誤解或錯誤的計算優(yōu)先級; 精度錯誤; 表達(dá)式符號表示錯誤; 循環(huán)變量的使用錯誤; 普通合法數(shù)據(jù)是否正確處理; 普通非法數(shù)據(jù)是否正確處理; 邊界內(nèi)最接近邊界的(合法)數(shù)據(jù) 是否正確處理; 邊界外最接近邊界的(非法)數(shù)據(jù)是否正確處理等。7.4.1 單元測試- 單元測試環(huán)境 驅(qū)動模塊(Drive): 用來模擬被測試模塊的上一級模塊。驅(qū)動模塊在單元測試中接收數(shù)據(jù),將相關(guān)的數(shù)據(jù)傳送給被測試模塊,啟動被測試模塊,并打印相關(guān)結(jié)果。 樁模塊(Stub): 用來模擬被測試模塊工作中所有的調(diào)用模塊,它們一般只進(jìn)行很少的數(shù)據(jù)處理,如打印入口和
8、返回,以便于檢驗被測試模塊與其下級模塊的接口。 7.4.2 集成測試- 概念 按照概要設(shè)計的要求組裝獨立模塊成為子系統(tǒng)或系統(tǒng),同時經(jīng)過測試來發(fā)現(xiàn)接口錯誤的一種系統(tǒng)化的技術(shù)。單元測試完成后為什么還需要集成測試? 數(shù)據(jù)穿過接口時可能丟失; 一模塊對另一模塊由于疏忽而造成的有害影響; 子功能組合起來可能不產(chǎn)生預(yù)期的主功能; 個別看來可接受的誤差積累到不能接受的程度; 全程數(shù)據(jù)結(jié)構(gòu)可能有問題等錯誤。- 集成測試的模式(1)非漸增式測試方法 分模塊測試一次性組裝所有模塊集成測試(2)漸增式測試方法(集成測試中較多使用) 分模塊測試逐個模塊組裝直到集成測試 漸增方式集成策略:自頂向下和自底向上。7.4.2
9、 集成測試(1)自頂向下集成 從主控制模塊開始,沿著程序的控制層次向下移動,逐漸把各個模塊結(jié)合起來。把模塊組裝到程序結(jié)構(gòu)中去時,或者使用深度優(yōu)先的策略,或者使用寬度優(yōu)先的策略。7.4.2 集成測試自頂向下集成方法示意圖寬度優(yōu)先策略 沿軟件結(jié)構(gòu)水平地移動,把處于同一控制層次上的所有模塊組裝起來。深度優(yōu)先策略先組裝在軟件結(jié)構(gòu)的一條主控制通路上的所有模塊,然后構(gòu)造其他控制通路存根程序深度優(yōu)先:M1-M2-M5-M8-M6-M3-S7-S4寬度優(yōu)先:M1-M2-M3-S4-M5-M6-S7-M87.4.2 集成測試M1M4M3M2M6M5程序模塊示意圖S5M1S1S1S1S2S2S2S3S3S3第一步
10、,測試主控模塊M1設(shè)計樁模塊S1、S2、S3,模擬被M1調(diào)用的M2、M3、M4。M2M3M4第二步,依次用M2、M3、M4替代樁模塊S1、S2、S3,每替代一次進(jìn)行一次測試。S4S4S4S5S5第三步,對由主控模塊M1和模塊M2、M3、M4構(gòu)成的子系統(tǒng)進(jìn)行測試,設(shè)計樁模塊S4、S5。M5M6第四步,依次用模塊M5和M6替代樁模塊S4、S5,并同時進(jìn)行新的測試。組裝測試完畢。自頂向下集成:7.4.2 集成測試(2)自底向上集成 從“原子”模塊(即在軟件結(jié)構(gòu)最低層的模塊)開始組裝和測試。(1)把低層模塊組合成實現(xiàn)某個特定的軟件子功能的族;(2)寫一個驅(qū)動程序(用于測試的控制程序),協(xié)調(diào)測試數(shù)據(jù)的輸
11、入和輸出;(3)對由模塊組成的子功能族進(jìn)行測試;(4)去掉驅(qū)動程序,沿軟件結(jié)構(gòu)自下向上移動,把子功能族組合起來形成更大的子功能族。7.4.2 集成測試自底向上結(jié)合驅(qū)動程序7.4.2 集成測試24M3M6M5D1D2D3D1D1D2D2D3D3M2M4M1第四步,把已測試的子系統(tǒng)按程序結(jié)構(gòu)連接起來完成程序整體的組裝測試。D4D4D4D5D5D5M1M4M3M2M6M5程序模塊示意圖第一步,對最底層的模塊M3、M5、M6進(jìn)行測試,設(shè)計驅(qū)動模塊D1、D2、D3來模擬調(diào)用。第三步,設(shè)計驅(qū)動模塊D4、D5 和D6模擬調(diào)用,分別對新子系統(tǒng)進(jìn)行測試第二步,用實際模塊M2、M1和M4替換驅(qū)動模塊D1、D2、D
12、3D6自底向上集成:7.4.2 集成測試自頂向下集成測試方法:優(yōu)點:減少了驅(qū)動模塊開發(fā)的工作量;功能的可行性較早得到驗證,而且能較早發(fā)現(xiàn)上層模塊的接口錯誤;可以較早驗證主要的控制和判斷點;如果選用深度方向組裝的方式,可以首先實現(xiàn)和驗證一個完整的軟件功能;支持故障隔離。缺點:樁模塊的開發(fā)和維護是測試過程中的最大成本;底層組建行為的驗證被推遲了;底層組件的增加會使得整個系統(tǒng)變得越來越復(fù)雜,導(dǎo)致底層組件的測試不充分,尤其是那些被重用的組件。適用范圍:(1)控制結(jié)構(gòu)比較清晰和穩(wěn)定的產(chǎn)品;(2)高層接口變化較小的產(chǎn)品;(3)底層接口未定義或經(jīng)??赡鼙恍薷牡漠a(chǎn)品;(4)控制組件具有較大技術(shù)風(fēng)險,需要盡早被
13、驗證的產(chǎn)品;(5)希望盡早能夠看到產(chǎn)品的系統(tǒng)功能行為。7.4.2 集成測試自底向上測試方法:優(yōu)點:減少了樁模塊開發(fā)的工作量;測試用例的設(shè)計亦相對簡單;支持故障隔離;允許對底層組件行為的早期驗證,涉及復(fù)雜算法和真正輸入/輸出的模塊最先得到集成和測試,進(jìn)而把最容易出問題的部分得到提前解決;可實施多個模塊的并行測試,提高了測試效率。缺點:驅(qū)動模塊開發(fā)的工作量很龐大;對高層的驗證被推遲到最后,設(shè)計上的錯誤不能及時發(fā)現(xiàn)。適用范圍:(1)底層接口比較穩(wěn)定、變動較少的產(chǎn)品;(2)高層接口變化比較頻繁的產(chǎn)品;(3)底層組件較早被完成的產(chǎn)品。7.4.2 集成測試(3)三明治集成 三明治集成也稱為混合式集成,該策
14、略在測試過程中將系統(tǒng)分為三層,中間一層為目標(biāo)層,對目標(biāo)層的上面采用自頂向下的集成策略,對目標(biāo)層的下面采用自底向上的集成策略,最后,測試在目標(biāo)層匯合。 該集成測試策略的缺點在于對中間層的測試不充分,適用于大部分軟件開發(fā)項目。7.4.2 集成測試7.4.2 集成測試三明治集成測試策略 - 概念 系統(tǒng)測試是指將經(jīng)過集成測試的軟件作為整個基于計算機系統(tǒng)的一個元素,與計算機硬件、外設(shè)、支持軟件、數(shù)據(jù)和人員等元素結(jié)合在一起,對計算機系統(tǒng)進(jìn)行一系列的組裝測試和確認(rèn)測試。系統(tǒng)測試的依據(jù)是軟件需求規(guī)格說明書,測試的內(nèi)容主要包括功能測試和性能測試兩方面。7.4.3 系統(tǒng)測試 功能測試 圖形界面測試、功能測試 性能
15、測試 配置測試、時間性能測試、壓力測試、容量測試、 安全性測試、恢復(fù)測試、兼容性測試、備份測試、 可用性測試 7.4.3 系統(tǒng)測試 - 概念 確認(rèn)測試又稱“驗收測試”、“有效性測試”,其任務(wù)是驗證軟件的功能和性能及其它特性是否與用戶的要求一致。 需求分析階段產(chǎn)生的軟件需求規(guī)格說明書,是軟件有效性的標(biāo)準(zhǔn),是進(jìn)行確認(rèn)測試的基礎(chǔ)。7.4.4 確認(rèn)測試 - 分類Alpha測試(開發(fā)者+用戶) 由用戶在開發(fā)者的場所進(jìn)行,并且在開發(fā)者對用戶的“指導(dǎo)”下進(jìn)行測試。開發(fā)者負(fù)責(zé)記錄發(fā)現(xiàn)的錯誤和使用中遇到的問題。Alpha測試是在受控的環(huán)境中進(jìn)行的。Beta測試(用戶+開發(fā)者) 由軟件的最終用戶們在一個或多個客戶
16、場所進(jìn)行。開發(fā)者通常不在Beta測試的現(xiàn)場。Beta測試是軟件在開發(fā)者不能控制的環(huán)境中的“真實”應(yīng)用。用戶記錄在Beta測試過程中遇到的一切問題,并把這些問題報告給開發(fā)者。7.4.4 確認(rèn)測試 概念: 重新執(zhí)行已經(jīng)做過的測試的某個子集,以保證上述這些變化沒有帶來非預(yù)期的副作用。實施條件: 當(dāng)新模塊結(jié)合進(jìn)來,程序發(fā)生如下變化:建立新的數(shù)據(jù)流路徑;出現(xiàn)新的I/O操作;激活新的控制邏輯。作用: 保證由于調(diào)試或其他原因引起的變化,不會導(dǎo)致非預(yù)期的副作用。7.4.5 回歸測試 回歸測試集(已執(zhí)行過的測試用例的子集)包括的測試用例: (1)檢測軟件全部功能的代表性測試用例; (2)針對可能受修改影響的軟件
17、功能的附加測試; (3)針對被修改過的軟件成分的測試。7.4.5 回歸測試 測試用例設(shè)計的基本目的是確定一組最有可能發(fā)現(xiàn)某個錯誤或某類錯誤的測試數(shù)據(jù),好的測試用例可以在測試過程中重復(fù)使用,但不可能測試程序的每一條路徑,也不可能把所有的輸入數(shù)據(jù)都試一遍。 測試用例的設(shè)計人員必須努力以最少量的測試用例來發(fā)現(xiàn)最大量的可能錯誤。7.5 測試用例的設(shè)計(1)測試用例由輸入數(shù)據(jù)和預(yù)期的輸出數(shù)據(jù)兩個部分組成。這樣便于對照檢查,做到有的放矢。(2)測試用例不僅選用合理的輸入數(shù)據(jù),還要選擇不合理的輸入數(shù)據(jù)。這樣能更多地發(fā)現(xiàn)錯誤,提高程序的可靠性。(3)長期保留測試用例。測試用例必須作為文檔保存,因為修改后的程序
18、可能有新的錯誤,需要進(jìn)行多次反復(fù)測試,同時為以后的維護提供依據(jù)。7.5.1 測試用例的設(shè)計原則7.5.2 白盒測試方法用例的設(shè)計邏輯覆蓋 語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋 循環(huán)覆蓋 單循環(huán)嵌套循環(huán)基本路徑測試 使用基本路徑測試技術(shù)設(shè)計測試用例的步驟 :根據(jù)詳細(xì)設(shè)計結(jié)果或源程序畫出相應(yīng)的程序圖(也稱為流圖) ;計算程序圖G的環(huán)形復(fù)雜度V(G) ;確定線性獨立路徑的基本集合;導(dǎo)出測試用例 ;準(zhǔn)備測試用例,確?;韭窂郊械拿恳粭l路徑的執(zhí)行 7.5.2 白盒測試方法用例的設(shè)計1.邏輯覆蓋 邏輯覆蓋法是一組方法的總稱,這組方法強調(diào)程序內(nèi)部邏輯結(jié)構(gòu)的覆蓋程度,測試過程是
19、逐漸進(jìn)行越來越完整的通路測試。 白盒測試中的邏輯覆蓋方法有以下6種: - 語句覆蓋 - 判定覆蓋 - 條件覆蓋 - 判定條件覆蓋 - 條件組合覆蓋 - 路徑覆蓋(1) 語句覆蓋 基本思想是:設(shè)計若干測試用例,運行被測程序,使程序中每個可執(zhí)行語句至少執(zhí)行一次。被測試模塊的流程圖 為了使每個語句都執(zhí)行一次,程序的執(zhí)行路徑應(yīng)該是sacbed,為此只需要輸入下面的測試數(shù)據(jù):A=2,B=0,X=47.5.2 白盒測試方法用例的設(shè)計語句覆蓋的優(yōu)缺點:【優(yōu)點】:可以很直觀地從源代碼得到測試用例,無須細(xì)分每條判定表達(dá)式。【缺點】:由于這種測試方法僅僅針對程序邏輯中顯式存在的語句,但對于隱藏的條件是無法測試的。
20、如在多分支的邏輯運算中無法全面的考慮。語句覆蓋是最弱的邏輯覆蓋。7.5.2 白盒測試方法用例的設(shè)計(2) 判定覆蓋 基本思想是:設(shè)計若干測試用例,運行被測程序,使得程序中每個判斷的取真分支和取假分支至少經(jīng)歷一次,即判斷真假值均曾被滿足。被測試模塊的流程圖(1)覆蓋sacbd路徑:A=3,B=0,X=3(2)覆蓋sabed路徑:A=2,B=1,X=17.5.2 白盒測試方法用例的設(shè)計判定覆蓋的優(yōu)缺點:【優(yōu)點】:判定覆蓋具有比語句覆蓋更強的測試能力。同樣判定覆蓋也具有和語句覆蓋一樣的簡單性,無須細(xì)分每個判定就可以得到測試用例。【缺點】:往往大部分的判定語句是由多個邏輯條件組合而成,若僅僅判斷其整個
21、最終結(jié)果,而忽略每個條件的取值情況,必然會遺漏部分測試路徑。判定覆蓋仍是弱的邏輯覆蓋。7.5.2 白盒測試方法用例的設(shè)計(3) 條件覆蓋 基本思想是:設(shè)計若干測試用例,執(zhí)行被測程序以后要使每個判斷中每個條件的可能取值至少滿足一次。被測試模塊的流程圖(1)覆蓋sacbed路徑:A=2,B=0,X=4(2)覆蓋sabd路徑:A=1,B=1,X=17.5.2 白盒測試方法用例的設(shè)計條件覆蓋的優(yōu)缺點:【優(yōu)點】:增加了對條件判定情況的測試,增加了測試路徑?!救秉c】:條件覆蓋不一定包含判定覆蓋。條件覆蓋只能保證每個條件至少有一次為真,而不考慮所有的判定結(jié)果。7.5.2 白盒測試方法用例的設(shè)計(4) 判定-
22、條件覆蓋 基本思想是:設(shè)計足夠的測試用例,使得判斷條件中的所有條件可能至少執(zhí)行一次取值,同時所有判斷的可能結(jié)果至少執(zhí)行一次。被測試模塊的流程圖(1)覆蓋sacbed路徑:A=2,B=0,X=4(2)覆蓋sabd路徑:A=1,B=1,X=17.5.2 白盒測試方法用例的設(shè)計判定-條件覆蓋的優(yōu)缺點:【優(yōu)點】:能同時滿足判定、條件兩種覆蓋標(biāo)準(zhǔn)?!救秉c】:判定/條件覆蓋準(zhǔn)則的缺點是未考慮條件的組合情況。7.5.2 白盒測試方法用例的設(shè)計(5) 條件組合覆蓋 基本思想是:設(shè)計足夠的測試用例,使得每個判定表達(dá)式中條件的各種可能組合都至少執(zhí)行一次。被測試模塊的流程圖(1)A1, B=0(2)A1, B0(3
23、)A1, B=0 (4)A1, B0(5)A=2, X1(6)A=2, X1(7)A2, X1(8)A2, X17.5.2 白盒測試方法用例的設(shè)計 對于上圖的例子來說,共有以下八種可能的條件組合:(1) A1,B=0 屬第一個判斷的取真分支;(2) A1,B0 屬第一個判斷的取假分支;(3) A1,B=0 屬第一個判斷的取假分支;(4) A1,B0 屬第一個判斷的取假分支;(5) A2,X1 屬第二個判斷的取真分支;(6) A2,X1 屬第二個判斷的取真分支;(7) A2,X1 屬第二個判斷的取真分支;(8) A2,X1 屬第二個判斷的取假分支。7.5.2 白盒測試方法用例的設(shè)計49下面的四組
24、測試數(shù)據(jù)可以使上面列出的八種組合每種至少出現(xiàn)一次:(1) A=2,B=0,X=4 (針對1,5兩種組合,執(zhí)行路徑sacbed);A=2,B=1,X=1 (針對2,6兩種組合,執(zhí)行路徑sabed); A=1,B=0,X=2 (針對3,7兩種組合,執(zhí)行路徑sabed); (4) A=1,B=1,X=1 (針對4,8兩種組合,執(zhí)行路徑sabd)。7.5.2 白盒測試方法用例的設(shè)計 在此例中條件組合覆蓋并未要求第一個判定的四個組合與第二個判定的四個組合再進(jìn)行組合,要那樣的話,就需42=16個測試用例了。顯然,滿足條件組合覆蓋標(biāo)準(zhǔn)的測試數(shù)據(jù),也一定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標(biāo)準(zhǔn)。因此,條件組
25、合覆蓋是前述幾種覆蓋標(biāo)準(zhǔn)中最強的。但是,滿足條件覆蓋標(biāo)準(zhǔn)的測試數(shù)據(jù)并不一定能使程序中的每條路徑都執(zhí)行到,如上述四組測試數(shù)據(jù)都沒有測試到路徑sacbd。7.5.2 白盒測試方法用例的設(shè)計條件組合覆蓋的優(yōu)缺點:【優(yōu)點】:條件組合覆蓋準(zhǔn)則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準(zhǔn)則?!救秉c】:線性地增加了測試用例的數(shù)量。7.5.2 白盒測試方法用例的設(shè)計(6) 路徑覆蓋 基本思想是:設(shè)計所有的測試用例,來覆蓋程序中的所有可能的執(zhí)行路徑 。 【優(yōu)點】:這種測試方法可以對程序進(jìn)行徹底的測試,比前面五種的覆蓋面都廣。 【缺點】:需要設(shè)計大量、復(fù)雜的測試用例,使得工作量呈指數(shù)級增長,不見得把所有的條件組合都覆
26、蓋。7.5.2 白盒測試方法用例的設(shè)計 某商場在“五一”期間,顧客購物時收費有4種情況:普通顧客一次購物累計少于100元,按A類標(biāo)準(zhǔn)收費(不打折),一次購物累計多于或等于100元,按B類標(biāo)準(zhǔn)收費(打9折);會員顧客一次購物累計少于1000元,按C類標(biāo)準(zhǔn)收費(打8折),一次購物累計等于或多于1000元,按D類標(biāo)準(zhǔn)收費(打7折)。測試對象是按以上要求計算顧客收費模塊。要求:(1)計算顧客收費模塊流程圖。 (2)按照路徑覆蓋法設(shè)計測試用例。 7.5.2 白盒測試方法用例的設(shè)計(1)計算顧客收費模塊流程圖。(2) 按照路徑覆蓋法設(shè)計測試用例如下: 測試用例:是會員,累計消費900元 預(yù)期結(jié)果:覆蓋路徑
27、126 測試用例2:是會員,累計消費2000元 預(yù)期結(jié)果:覆蓋路徑127 測試用例3:不是會員,累計消費80元 預(yù)期結(jié)果:覆蓋路徑134 測試用例4:不是會員,累計消費300元 預(yù)期結(jié)果:覆蓋路徑1357.5.2 白盒測試方法用例的設(shè)計7.5.2 白盒測試方法用例的設(shè)計邏輯覆蓋 語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋 循環(huán)覆蓋 單循環(huán)嵌套循環(huán)基本路徑測試 使用基本路徑測試技術(shù)設(shè)計測試用例的步驟 :根據(jù)詳細(xì)設(shè)計結(jié)果或源程序畫出相應(yīng)的程序圖(也稱為流圖) ;計算程序圖G的環(huán)形復(fù)雜度V(G) ;確定線性獨立路徑的基本集合;導(dǎo)出測試用例 ;準(zhǔn)備測試用例,確保基本路徑集中的每
28、一條路徑的執(zhí)行 循環(huán)的類別:簡單循環(huán)嵌套循環(huán)串接循環(huán)無結(jié)構(gòu)循環(huán)2. 循環(huán)覆蓋7.5.2 白盒測試方法用例的設(shè)計簡單循環(huán)的測試案例選取策略:設(shè):n為允許通過循環(huán)的最大次數(shù),應(yīng)使用如下測試集來測試簡單循環(huán),1)跳過整個循環(huán)2)只有一次通過循環(huán)3)兩次通過循環(huán)4)m次通過循環(huán) (mn-1)5)使循環(huán)次數(shù)是n-1,n和n+1各通過一次循環(huán)簡單循環(huán)7.5.2 白盒測試方法用例的設(shè)計嵌套循環(huán)的測試案例選取策略:如果采用簡單測試的方法,將會使測試案例成幾何級增長。所以采用:1)從內(nèi)層循環(huán)開始,將其它循環(huán)值設(shè)置為最小;2)對內(nèi)層使用簡單循環(huán)測試方法,并為范圍外的值添加適當(dāng)?shù)臏y試;3)由內(nèi)向外構(gòu)造下一個循環(huán)測試
29、,對已經(jīng)測過的內(nèi)層循環(huán)設(shè)為典型值;4)繼續(xù)以上測試方式,直至全部嵌套循環(huán)結(jié)束。嵌套循環(huán)7.5.2 白盒測試方法用例的設(shè)計串接循環(huán)的測試案例選取策略:1)如果串接循環(huán)彼此獨立,采用簡單循環(huán)測試策略2)如果多個循環(huán)的循環(huán)計數(shù)是串接方式的,采用嵌套循環(huán)的測試策略無結(jié)構(gòu)循環(huán):應(yīng)該重新設(shè)計循環(huán)結(jié)構(gòu),使之成為其它循環(huán)方式7.5.2 白盒測試方法用例的設(shè)計串接循環(huán)7.5.2 白盒測試方法用例的設(shè)計邏輯覆蓋 語句覆蓋 判定覆蓋 條件覆蓋 判定條件覆蓋 條件組合覆蓋 路徑覆蓋 循環(huán)覆蓋 單循環(huán)嵌套循環(huán)基本路徑測試 使用基本路徑測試技術(shù)設(shè)計測試用例的步驟 :根據(jù)詳細(xì)設(shè)計結(jié)果或源程序畫出相應(yīng)的程序圖(也稱為流圖)
30、;計算程序圖G的環(huán)形復(fù)雜度V(G) ;確定線性獨立路徑的基本集合;導(dǎo)出測試用例 ;準(zhǔn)備測試用例,確?;韭窂郊械拿恳粭l路徑的執(zhí)行 i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 23456187910111213以處理代碼為基礎(chǔ),畫流圖處理部分白盒路徑測試技術(shù):基本路徑測試確定流圖的環(huán)復(fù)雜度average 流圖23
31、456187910111213V(G)= 6個區(qū)域V(G)=17邊-13個節(jié)點 + 2 = 6V(G)=5個判定節(jié)點 + 1 = 6白盒路徑測試技術(shù)確定線性獨立路徑的一個基本集average 流圖23456187910111213路徑1:1-2-10-11-13路徑2:1-2-10-12-13路徑3:1-2-3-10-11-13路徑4:1-2-3-4-5-8-9-2.路徑5:1-2-3-4-5-6-8-9-2.路徑6:1-2-3-4-5-6-7-8-9-2.根據(jù)環(huán)復(fù)雜度計算,6條路徑足夠覆蓋所有的測試路徑。選取獨立路徑6條:白盒路徑測試技術(shù)64準(zhǔn)備測試案例,強制執(zhí)行基本集中的每條路徑準(zhǔn)備路徑1
32、:1-2-10-11-13 測試案例: i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 注意:滿足(2)直接到(10)的條件是:valuei=-999 或者 total.input =100 但是,如果一次都沒有執(zhí)行 DO WHILE 則不會執(zhí)行 (11),因為 total.valid = 0 ,所以路徑1無法獨立測
33、試,需要結(jié)合其它路徑的測試來完成路徑1測試案例:valuek=有效輸入valuei=-999 (其中ki)預(yù)期結(jié)果:基于k的正確平均值和總和白盒路徑測試技術(shù)準(zhǔn)備路徑2:1-2-10-12-13 測試案例: i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 路徑2測試案例:valuei=-999預(yù)期結(jié)果:平均值=-999
34、準(zhǔn)備測試案例,強制執(zhí)行基本集中的每條路徑白盒路徑測試技術(shù)準(zhǔn)備路徑3:1-2-3-10-11-13 測試案例: i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 路徑3測試案例:前100個數(shù)值應(yīng)該有效預(yù)期結(jié)果:正確的100個數(shù)的平均值和總和測試多于100個值的情況準(zhǔn)備測試案例,強制執(zhí)行基本集中的每條路徑白盒路徑測試技術(shù)6
35、7準(zhǔn)備路徑4:1-2-3-4-5-8-9-2. 測試案例: i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 路徑4測試案例:valuek=有效輸入 (其中k100)valuei 最小值 (其中ik)預(yù)期結(jié)果:基于k-1的正確平均值和總數(shù)準(zhǔn)備測試案例,強制執(zhí)行基本集中的每條路徑白盒路徑測試技術(shù)準(zhǔn)備路徑5:1-2-3-4
36、-5-6-8-9-2. 測試案例: i = 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 路徑5測試案例:valuek=有效輸入 (其中k 最大值 (其中ik)預(yù)期結(jié)果:基于k-1的正確平均值和總數(shù)準(zhǔn)備測試案例,強制執(zhí)行基本集中的每條路徑白盒路徑測試技術(shù)準(zhǔn)備路徑6:1-2-3-4-5-6-7-8-9-2.測試案例: i =
37、 1;Total.input = total.valid = 0; Sum = 0;DO WHILE valuei -999 AND total.input = minimum AND valei 0 THEN average = sum / total.valid; ELSE average = -999; ENDIF 路徑6測試案例:valuek=有效輸入 (其中k100)預(yù)期結(jié)果:基于k的正確平均值和總數(shù)準(zhǔn)備測試案例,強制執(zhí)行基本集中的每條路徑白盒路徑測試技術(shù) 功能測試黑盒測試概念示意圖7.5.3 黑盒測試方法用例的設(shè)計 常用測試種類: 等價分類法 邊界值分析 錯誤猜測法 因果圖法7.5
38、.3 黑盒測試方法用例的設(shè)計(1)等價劃分(經(jīng)典的黑盒測試方法)定義: 等價分類,就是把輸入數(shù)據(jù)的可能值劃分為若干等價類(輸入域的子集合,各個輸入數(shù)據(jù)對于揭露程序中的錯誤都是等價的)。在每一個等價類中取一個數(shù)據(jù)作為測試的輸入條件,這樣就可以少量的代表性測試數(shù)據(jù),來取得較好的測試結(jié)果。7.5.3 黑盒測試方法用例的設(shè)計 是指對于程序的規(guī)格說明來說,是合理的 有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用它可以檢 驗程序是否實現(xiàn)預(yù)先規(guī)定的功能和性能。 有效等價類 是指對于程序的規(guī)格說明來說,是不合理 的,是無意義的輸入數(shù)據(jù)構(gòu)成的集合。程序員 主要利用這一類測試用例來檢查程序中功能和 性能的實現(xiàn)是否不符合規(guī)格說明
39、要求。 無效等價類 7.5.3 黑盒測試方法用例的設(shè)計 1、如果輸入條件規(guī)定了取值范圍,或者是值 的個數(shù),則可以確立一個有效等價類和兩個無效 等價類。確定等價類的原則:例如: 序號值可以從 1到999 一個有效等價類: 1 序號值 999 兩個無效等價類: 序號值 999 7.5.3 黑盒測試方法用例的設(shè)計 2、如果輸入條件規(guī)定了輸入值的集合,或 者是規(guī)定了“必須如何”的條件,這時 可確立一 個有效等價類和一個無效等價類。例如:在 C 語言中對變量標(biāo)識符規(guī)定為 “以字母打頭的 串”。 所有以字母打頭的構(gòu)成為有效等價 類; 而不在此集合內(nèi)(不以字母打頭)歸于無效等 價類。7.5.3 黑盒測試方法
40、用例的設(shè)計 3、如果規(guī)定了輸入數(shù)據(jù)是一組值, 而且程 序要對每個輸入值分別進(jìn)行處理。這時可為每一 個輸入值確立一個有效等價類此外再針對這組確 立一個無效等價類,它應(yīng)是所有不允許輸入值的 集合。例如:在教師分房方案中規(guī)定對教授、副教授、講師 和助教分別計算分?jǐn)?shù),做相應(yīng)的處理。因此可 以確定4個有效等價類為教授、 副教授、講師 和助教,以及 1個無效等價類它應(yīng)是所有不符 合以上身份的人員的輸入值的集合。7.5.3 黑盒測試方法用例的設(shè)計 4、如果規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī) 則,則可以確定一個有效等價類(符合規(guī)則) ,和若干個無效等價類(從不同角度違反則)。 例如:在C 語言中規(guī)定了“一個語句必須以
41、分號; 作為結(jié)束”,這時,可以確定一個有效等價 類,以 “;”結(jié)束,而若干個無效等價類應(yīng) 以“:,、” 等。7.5.3 黑盒測試方法用例的設(shè)計 5、如果輸入條件是一個布爾量,則可以確 定一個有效等價類和一個無效等價類。7.5.3 黑盒測試方法用例的設(shè)計 6、如果確知,已劃分的等價類中各元素 在程序中的處理方式不同, 則應(yīng)將此等價類 進(jìn)一步劃分成更小的等價類。7.5.3 黑盒測試方法用例的設(shè)計 根據(jù)等價類來設(shè)計測試用例,其過程如下: (1) 為每個等價類規(guī)定一個惟一的編號。 (2) 設(shè)計一個新的測試用例,使其盡可能多地覆蓋未被覆蓋的有效等價類,此項工作重復(fù)進(jìn)行,直到所有的有效等價類都被覆蓋為止。
42、 (3) 設(shè)計一個新的測試用例,使其覆蓋一個(而且僅僅一個)尚未被覆蓋的無效等價類,此項工作重復(fù)進(jìn)行,直到所有的無效等價類都被覆蓋為止。7.5.3 黑盒測試方法用例的設(shè)計黑盒等價劃分測試技術(shù)舉例: 某一報表處理系統(tǒng),要求用戶輸入處理報表的日期。 假設(shè)日期限制在1990年1月至1999年12月,即系統(tǒng)只能對該段時期內(nèi)的報表進(jìn)行處理。如果用戶輸入的日期不在此范圍內(nèi),則顯示輸入錯誤信息。該系統(tǒng)規(guī)定日期由年、月的6位數(shù)字字符組成,前4位代表年,后2位代表月。請用等價類劃分法設(shè)計測試用例,來測試程序的“日期檢查功能”。 黑盒等價劃分測試技術(shù) 劃分等價類并編號: 劃分成 3 個有效等價類,7 個無效等價類
43、,如表所示。 為合理等價類設(shè)計測試用例,對于表中編號為1,5, 8 對應(yīng)的3個合理等價類, 用一個測試用例覆蓋。 輸入條件有效等價類無效等價類出生年月的類型及長度 6位數(shù)字 有非數(shù)字字符 少于6位數(shù)字字符 多于6位數(shù)字字符出生年月數(shù)值199001199912間 小于199001 大于199912月份0112間 等于00 大于12 為每一個不合理等價類至少設(shè)計一個測試用例: 測試數(shù)據(jù) 期望結(jié)果 覆蓋范圍測試用例1 99MAY 輸入無效 2測試用例2 19995 輸入無效 3測試用例3 1999005 輸入無效 4測試用例4 198912 輸入無效 6測試用例5 200001 輸入無效 7測試用例
44、6 199900 輸入無效 9測試用例7 199913 輸入無效 10黑盒等價劃分測試技術(shù)經(jīng)驗:邊界值最容易出錯!測試數(shù)據(jù): 邊界值 邊界值的相鄰值注:通常設(shè)計測試方案時聯(lián)合使用等價劃分和邊界值分析兩種技術(shù)。(2)邊界值分析7.5.3 黑盒測試方法用例的設(shè)計邊界值分析舉例: 程序功能說明書指出,某程序的輸入條件為:每個學(xué)生可以選修1至3門課程,試用黑盒法設(shè)計測試用例。【要求】(1)按等價類劃分法設(shè)計測試用例(要求列出設(shè)計過程)(2)按邊界值分析法設(shè)計測試用例。7.5.3 黑盒測試方法用例的設(shè)計(1)按等價類劃分法設(shè)計測試用例合理等價類(擇一): 選修1-3門 不合理等價類: 沒選課 選3門以上
45、 等價類劃分法設(shè)計測試用例:測試數(shù)據(jù):選修1 預(yù)期結(jié)果:有效輸入選修0 預(yù)期結(jié)果:無效輸入選修=4 預(yù)期結(jié)果:無效輸入7.5.3 黑盒測試方法用例的設(shè)計(2)按邊界值分析法設(shè)計測試用例。測試數(shù)據(jù):選修=0 預(yù)期結(jié)果:無效輸入測試數(shù)據(jù):選修=1 預(yù)期結(jié)果:有效輸入測試數(shù)據(jù):選修=3 預(yù)期結(jié)果:有效輸入測試數(shù)據(jù):選修=4 預(yù)期結(jié)果:無效輸入 7.5.3 黑盒測試方法用例的設(shè)計直覺+經(jīng)驗 基本思路:列舉出程序中可能有的錯誤和容易發(fā)生錯誤的特殊情況,并且根據(jù)他們選擇測試方案。7.5.3 黑盒測試方法用例的設(shè)計(3)錯誤推測總結(jié): 首選“邊界值分析法”必要時“等價劃分法”錯誤推測作為補充邏輯覆蓋對照檢查
46、7.5.3 黑盒測試方法用例的設(shè)計 定義: 利用圖解法分析輸入的各種組合情況從而來設(shè)計測試用例。 設(shè)計測試用例步驟: 找出SRS中的原因和結(jié)果,并分別加以標(biāo)識; 分析語義,找出原因-結(jié)果、原因-原因之間關(guān) 系,畫出因果圖,并標(biāo)明約束和限制條件; 將因果圖轉(zhuǎn)換為判定表; 依據(jù)判定表每列,設(shè)計測試用例。7.5.3 黑盒測試方法用例的設(shè)計(4)因果圖法 圖中,Ci,Ei 取值為0或1,0表示條件不成立或某狀態(tài)不出現(xiàn),1表示條件成立或某狀態(tài)出現(xiàn)。4種符號分別表示規(guī)格說明中4種因果關(guān)系 :7.5.3 黑盒測試方法用例的設(shè)計輸入輸出條件之間的約束關(guān)系表示為 : E約束(異):a和b中至多有一個可能為1,即a和b不能同時為1 I約束(或):a、b和c中至少有一個必須是1,即 a、b 和c不能同時為0O約束(唯一);a和b必須有一個,且僅有1個為1R約束(要求):a是1時,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供貨合同買賣合同范本
- 礦資源贈送合同范本
- 2025年多翼式鼓風(fēng)機項目合作計劃書
- 單位長期包車合同范本
- 寫轉(zhuǎn)賬合同范本
- 買賣介紹居間合同范本
- 2025年單相電能表項目建議書
- 農(nóng)村基建安全施工合同范本
- 個體企業(yè)轉(zhuǎn)讓合同范本
- 模具加工報價合同范本
- 煤層氣開發(fā)-第2章-煤層氣地質(zhì)
- 美羅華(利妥昔單抗)課件
- 稅務(wù)簡易注銷課件
- 人教版五年級數(shù)學(xué)下冊第六單元分層作業(yè)設(shè)計
- 肺葉切除術(shù)和全肺切除術(shù)的麻醉課件
- 智能制造在食品加工業(yè)的應(yīng)用
- BI軟件工程師個人年終工作總結(jié)
- CH:火花塞功能、結(jié)構(gòu)類型及檢測
- “中小學(xué)教師全員遠(yuǎn)程培訓(xùn)”的實效性研究-以山西省J市為例的中期報告
- 工業(yè)旅游項目策劃
- 自主選擇頂崗實習(xí)申請表
評論
0/150
提交評論