一、基本概念
軟件測試:
a.實際輸出與預期輸出間的審覈或者比較過程
b.描述一種用來促進鑑定軟件正確性、完整性、安全性和質量的過程
c.在規定的條件下對程序進行操作,以發現程序錯誤,衡量軟件質量,並對其是否能滿足設計要求進行評估的過程
測試原則:
a.測試應該儘早進行,最好在需求階段就開始介入
b.軟件測試應由第三方負責,避免程序員自己檢查
c.設計測試用例時應該考慮合法的輸入、不合法的輸入以及各種邊界條件,特殊情況下還要考慮製造極端狀態和意外狀態
d.應該充分注意測試中羣集現象
e.對錯誤結果應該有個確認過程
f.制定嚴格的測試計劃
g.妥善保存測試計劃、測試用例、出錯統計及最終分析報告,便於維護
測試目標:
a.發現一些可以通過測試避免的開發風險
b.實施測試來降低所發現的風險
c.確定測試何時可以結束
d.在開發項目的過程中將測試看做時一個標準項目
測試對象:
程序、數據、文檔
測試過程:
1.對要執行測試的產品/項目進行分析,確定測試策略,制定測試計劃。計劃被審覈批准後才能轉向第2步。
2.根據測試需求和測試策略設計測試用例。進度壓力不大時應詳細設計,否則也應該保證覆蓋關鍵性測試需求。該測試用例被批准後轉第3步。
3.執行測試。主要搭建測試環境,執行測試用例,同時要進行進度控制、項目協調等工作
4.提交缺陷,主要進行缺陷審覈和驗證等工作
5.消除軟件缺陷。開發經理需要審覈缺陷,進行缺陷分配。程序員完成修改後進入迴歸測試階段。如果滿足“完成準則”,正常結束測試
6.撰寫測試報告。
二、黑盒測試
測試者在不考慮程序內部結構情況下,僅依據程序功能需求規範來設計測試用例。包括等價類劃分和邊界值分析等方法
等價類劃分:
原理:等價類把程序分爲若干部分,從每個部分選擇少許代表性數據當做測試用例。
等價類劃分情況:
有效等價類,即合理的,有意義的輸入數據集合
無效等價類,即不合理的,無意義的輸入數據集合
等價類劃分設計測試用例原則:
1.爲每個等價類規定唯一編號
2.設計一個新的測試用例,使其儘可能覆蓋尚未被覆蓋的有效等價類,重複,直至所有有效類都被覆蓋
3.設計一個新的測試用例,使其僅覆蓋一個尚未被覆蓋的無效等價類,重複直至所有無效等價類都被覆蓋
邊界值分析:
原理:對等價類劃分的進一步補充,通過選擇等價類邊界值的測試用例來發現更多的錯誤,因爲大量錯誤發生在輸入輸出的邊界上,而不是其取值範圍內
原則:
1.如果輸入條件規定了取值範圍,則選擇該範圍的邊界值及剛剛超過和低於邊界值的測試用例
2.如果規定是輸入值的個數,則選擇最大個數、最小個數以及最大+1和最小-1的個數的數
3.如果規定的是輸入域或輸出域的有序集合,則選擇第一個和最後一個作爲測試用例
4.分析規格說明書,找到其他可能的邊界值條件
5.根據規格說明書的每個輸出條件,按第1原則選擇測試用例
三、白盒測試
通過檢查軟件內部的邏輯結構,對軟件中的邏輯路徑進行覆蓋測試;在程序的不同地方設立測試點,檢查程序的狀態,以確定實際運行狀態和預期是否一致
包括語句覆蓋、判定覆蓋、條件覆蓋、判定條件覆蓋、條件組合覆蓋、路徑覆蓋六種。
1.語句覆蓋:
最起碼的結構覆蓋要求,設計足夠多的測試用例,使得每條語句至少被執行一次。
2.判定覆蓋:
又稱分支覆蓋,設計足夠多的測試用例,使得程序中每個判定至少有一次爲真有一次爲假
3.條件覆蓋:
設計足夠多的測試用例,使得判定中每個條件獲得各種可能的結果,即每個條件至少一次真一次假。
4.判定/條件覆蓋
設計足夠多的測試用例,使得判定中每個條件的所有結果至少出現一次,每個判定本身所有結果也至少出現一次。
5.條件組合覆蓋:
設計足夠多的測試用例,使得每個判定中條件結果的所有組合至少出現一次。
6.路徑覆蓋:
設計足夠多的測試用例,覆蓋程序中所有路徑。
四、圈複雜度
概念:衡量代碼複雜程度的標準
圈複雜度越高的危害:
說明代碼的判斷邏輯越複雜,可能質量低
需要更多的測試用例,難以測試和維護
圈複雜度的表現:
分支循環語句多;表達式複雜(含三元表達式)
計算方法:
- V(G) = E + 2 -N
E:控制流程圖的邊數;N:控制流程圖的節點數
2.從起點到終點的路徑條數