?
軟件測試的對象
軟件=程序+文檔
測試對象:各個階段產生的源程序和文檔。
軟件測試的目的
基于不同的立場,對軟件測試的目的存在著兩種完全對立的觀點。
(1)一種觀點是通過測試暴露出軟件中所包含的故障和缺陷(從用戶的角度);
(2)另一種是希望測試成為表明軟件產品中不存在錯誤的過程,驗證該軟件中已正確地實現了用戶的要求,因此,它們傾向于選取導致程序失敗概率最小的測試實例和數據。
顯然,第二種觀點對完善和提高軟件質量和可靠性毫無價值,因此測試的目的應該是通過軟件測試盡可能多地發現并改正軟件種存在的錯誤。
軟件測試的定義
Glenford J. Myers把這一觀點歸納為:
⑴測試是程序執行的過程,其目的在于發現錯誤。
⑵一個好的測試實例在于發現至今未發現的錯誤。
⑶一個成功的測試是發現了至今未發現的錯誤的測試。
因此,軟件測試(Software Testing)是從引起和發現錯誤的目的出發執行某一程序的過程。
錯誤的類型
(1)功能錯誤:處理功能說明不完整或不確切,致使編程時對功能有誤解而產生的錯誤。
(2)系統錯誤:與外部接口錯誤、子程序調用錯誤、參數使用錯誤等。
(3)過程錯誤:算術運算錯誤和邏輯運算錯誤
(4)數據錯誤:數據結構、實體、屬性錯誤。
(5)編程錯誤:語法錯誤、程序邏輯錯誤、編程書寫錯誤等。
軟件測試過程模型
(1)測試設計
(2)測試執行
(3)測試結果比較
軟件測試技術
測試法分為黑盒法和白盒法。
1.黑盒(Black-box Testing)法
黑盒法又稱為功能測試法,它是根據程序功能的分析,推演出由函數
定義域中有代表性的元素組成測試集,這些數據應包括對程序是有效的和無效的輸入,極端的、正常的和特殊的數據元素。因此,黑盒測試法是從外界來檢查模塊或程序的功能,也即根據模塊的輸入和輸出,得出所得結果得差異。這種測試無須知道模塊的內部邏輯,而是給定一輸入,檢查是否會得到所期望的輸出。功能測試法又具體分為等價類法,邊值分析法,因果圖法和錯誤猜測法等。
2.白盒法
白盒法也稱之為結構測試或邏輯覆蓋法。它是根據對軟件內部邏輯結構的分析,選取測試數據集(即測試用例:Testing Case),而測試數據集對程序邏輯的覆蓋程度決定了測試完全性的程度。常用的幾個覆蓋標準有:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋。
【例題?填空題】黑盒法又稱為_______法,黑盒測試法是從外界來檢查模塊或程序的功能,也即
根據模塊的輸入和輸出,得出所得結果得差異。
【答案】功能測試
路徑測試技術(白盒測試)★依據的是程序的邏輯結構。
(1)控制流程圖
基本元素:過程塊、節點、判定。
鏈、路徑的概念。
注意:控制流程圖和程序流程圖的差別。
(2)測試策略
a)路徑覆蓋:執行所有可能穿過程序控制流程的路徑。最強的測試度量。
b)語句覆蓋:至少執行程序中所有語句一次。最低的測試度量。
c)分支覆蓋:至少將程序中的每個分支執行一次。
d)條件覆蓋與條件組合覆蓋
語句覆蓋≤分支覆蓋≤條件組合覆蓋≤路徑覆蓋
(3)路徑選取與用例設計
最小的強制性測試需求是語句覆蓋率。
【例題】根據下列程序流程圖,設計不超過2組的測試用例,使之滿足語句覆蓋,要求給出每組測試數據的執行路徑、輸入值、輸出值及兩個判定(3)和(5)的判定結果。
【解析】此類題目屬于綜合應用題(每題10分),考核知識點為路徑測試技術。
在本題中,要求設計測試用例,滿足語句覆蓋,即所有語句都必須執行一遍。
A、B、C的值決定了程序執行的順序
A、B、C的值執行順序結果
?
路徑選取的一般原則
(1)選擇最簡單的、具有一定功能含義的入口/出口路徑
(2)在已選取的基礎上,選擇無循環的路徑,選取短路徑、簡單路徑
(3)選取沒有明顯功能含義的路徑,要研究該路徑為什么存在
基于事務流的測試技術
事務流測試的步驟
a)獲得事務流程圖
b)瀏覽、復審
c)用例設計
d)測試執行
等價類法
是根據程序的I/O特性,將程序的輸入劃分為有限個等價區段,使得從每個區段內抽取的代表性數據進
行的測試等價于該區段內任何數據的測試。對于每個輸入條件存在著程序有效輸入的有效等價類和對程序錯
誤輸入的無效等價類。例如,某實數X的取值范圍假設為a<X<b,則所有[a+1,b-1]之間的實數構成了有效
等價類,而任何[-∞,a]或[b,+∞]之間的實數構成了兩個無效等價類。
邊值分析法
是一種根據I/O邊界等價類上或緊靠邊界的條件,選擇測試用例的更有效的方法。例如,給定三個點,
判定能否構成三角形,可選取兩邊之和等于第三邊的實例作為邊值分析法的測試用例。
【例題】有一個學生選課系統:程序的輸入條件為:每個學生可以選修1至3門課程,試用黑盒測試法完成
測試。
(1)按等價類劃分法,設計測試用例(要求列出設計過程);
(2)按邊界值分析法,設計測試用例。
【解析】
(1)等價類法:
課程門數<1?
課程門數>3?
課程門數1~3?
(2)邊界值分析法
課程門數=1?
課程門數=3?
因果圖法
是通過從用自然語言書寫的功能說明表中找出因—輸入條件和果—輸出結果,通過因果圖將功能說明轉
換成一張判定表,然后為每種輸出條件的組合設計測試用例。
錯誤推測法是根據測試人員的經驗和直覺推測程序種可能存在的各種錯誤。
?
軟件測試步驟
軟件測試是按照與系統開發相反的方向來進行的。依次為:單元測試(模塊測試)、集成測試、有效性測試和系統測試
1.單元測試
單元測試(Unit Testing)又稱模塊測試(Module Testing),或模塊分調,用于測試單個程序模塊,確定模
塊的邏輯和功能是否正確。
單元測試采用白盒測試技術。
(1)模塊接口
(2)局部數據結構
(3)重要的執行路徑
(4)錯誤執行路徑
驅動模塊和承接模塊。
2.集成測試
集成測試(Integration Testing)用來測試模塊之間接口的正確性,也即模塊之間的數據和控制傳遞。集成測
試是與單元測試平行進行的。
集成測試采用黑盒測試技術。
(1)自頂向下的集成測試:需要設計承接模塊
(2)自底向上的集成測試:需求設計驅動模塊
3.有效性測試
目的:發現軟件實現的功能與需求規格說明書不一致的錯誤。
方法:采用黑盒測試技術
?