【IT168 資訊】功能測試根據需求進行功能上的測試,而非功能測試則針對更廣泛的質量問題進行測試。在本文中,Dayana Stockdale將幫助讀者弄清這兩種測試的差異,並給出一些舉例和策略。
功能測試與非功能測試的主要區別
在理解功能測試和非功能測試的區別之前,先需要知道功能性和非功能性需求之間的區別:
功能要求:描述軟體系統的行為或執行。
非功能性要求:描述軟體系統的性能或可用性。
功能需求將指定某一功能必須執行某個操作,而非功能需求則是可能會指定某一功能執行該操作。功能要求是WHAT;而非功能性要求是HOW。
因此,功能需求測試就是驗證軟體是否正在執行操作,而非功能測試則有助於驗證客戶的期望是否得到滿足。
功能測試與非功能測試實例
為了使讀者能更加清晰的了解兩者之間的差異,Dayana將詳細介紹一些並行的實例:
功能測試策略
功能測試策略多種多樣,手動和自動測試混合使用是確保功能測試覆蓋率的最佳方法。
最常見的功能測試策略是黑盒測試方法,測試者不需要審查內部原始碼,而是通過測試各種輸入組合來驗證功能。
以下是一些常用的功能測試技術:
1. 安裝測試 — 用於測試桌面或行動應用程式是否正確安裝。
2. 邊界值分析 — 數值輸入邊界測試。
3. 等價劃分 — 分組測試,以減少類似功能測試的重疊。
4. 錯誤猜測 — 評估功能問題最有可能被發現,並比其他領域更廣泛地進行測試。
5. 單元測試 — 在軟體的最小級別上執行測試。不是將系統作為一個整體運行,而是在單元上測試。
6. API測試 — 檢查內部和外部API是否正常運行,包括數據傳輸和授權。
7. 回歸測試 — 用於驗證新軟體更改沒有對現有功能(最常見的自動化技術)產生不利影響的測試。
所有的功能測試都有一個特定的輸出。所有的功能測試都可以用非常明確的通過或者失敗標準來編寫。
非功能性測試策略
非功能性測試有時可能會比功能性測試要麻煩很多,因為您正在測試客戶對整體質量體驗的期望,而不是指定輸入數據輸出確定的結果。
以下是主要的非功能性測試技術:
1. 負載測試 — 在模擬環境中執行的測試,以測試系統在預期條件(不同數量的用戶)期間的行為。
2. 壓力測試 — 在資源不足時測試性能,例如伺服器問題或設備上硬碟空間不足。
3. 擴展性測試 — 檢查系統的規模,以便隨著使用率的增加和性能受到何種程度的影響而進行擴展。
4. 容量測試 — 用大量的數據測試性能,不一定是數量龐大的用戶,但可以是一個用戶執行高容量的任務,例如多文件上傳。
5. 安全性測試 — 進行測試以發現系統受到攻擊的脆弱程度,以及數據的保護程度。
6. 災難恢復測試 — 檢查系統在崩潰或重大問題後能在多久時間內的恢復速度。
7. 一致性測試 — 根據某一套標準(無論是行業法規還是公司的標準)來測試軟體系統。
8. 可用性測試 — 測試GUI是否一致,以及整個應用程式是否直觀且易於使用。
雖然一些非功能性測試技術可以具有通過/失敗的標準(如批量測試),但相比之下,其他測試技術能夠基於測試人員的意見(如可用性測試)因此更加客觀。
傾聽客戶反饋對於更新非功能性需求至關重要。雖然在收集意見過程中,可能會識別到某些擴展性和安全因素,但客戶反饋可以擴展這些檢查集合,包括更好地測試應用程式在崩潰後應該如何恢復,或應用程式如何在設備上佔用最小的存儲空間。
客戶反饋有助於進行功能測試的風險評估。但對於非功能性測試來說,用戶反饋更有價值,因為反饋有助於設定柵,而功能測試已經設定好了柵。