輕鬆聊:系統測試 (SVT) 的三兩事
在 淺談軟體測試的階段與策略 一文有提到 系統驗證測試 (System Verification Test)
的基本概念,基本的想法就是:
功能驗證 (FVT)
:假設功能還沒好,目的是確認商業功能正確性,像是邏輯完整性、資料正確性、驗證與錯誤處理、探索功能的可能性 … 等,強調功能本身的內聚力
。系統驗證 (SVT)
:假設功能都好了,增加外在環境因素
之後,把這些功能
放到不同的環境會有什麼問題?強調外在耦合性
、真實世界 的情境。
這裏整理前一個工作做教育訓練的資料,主要描述的是以 User-Facing
為主的系統,像是 iOS / Android 的差異。這 Slide 用比較自嘲、調侃的方式呈現,配合當時的熱門的話題,時間點是在 iPhone5 (2012/09)
上市的時候。
20230523 更新: 本文部分收錄在 共同著作《軟體測試實務》 第一冊 第五章之中,歡迎大家彭場。
SVT 要做哪一些?
底下 Slide 的截圖內容,有點年代,不過概念應該不難理解。
整理這篇文章的時間是 2018, iPhone 已經出到 iPhone8、iPhoneX,有趣 XDD
重點在這張:
FVT (Functional Verification Test)
:- 假設功能都還沒準備好,確認商業功能,包含邏輯完整性、資料正確性 (integrity)、驗證與錯誤處理
- 強調功能本身的
內聚力 (Cohesion)
- SRE CH17 的 Slogan 概念一樣:
If you haven’t tried it, assume it’s broken. 如果你還沒開始親自測試過某件東西,那麼就假設他是壞的。
- Slide 用
Beta Version
這個詞,是因為當時做IoT
產品,需要跟Hardware Team
同事溝通,他們習慣這樣的階段稱呼,現在純 Software 比較少用這樣的名詞。 - 通常是在
In-House
、Lab
裡面,具備最佳的條件。 - S/N 比是最佳值。這是錄音常用的名詞,通常錄音室用的麥克風規格都會有 S/N Ratio。雜訊越高,資訊越沒意義。
SVT (System Verification Test)
:- 假設功能都好了,增加
外在因素
對功能的影響,通常是環境變因,把這些功能
放到不同的環境會有什麼問題? - 強調功能與外在變因的
耦合力 (Coupling)
使用者端 (User-Facing)
:分成 Desktop、Mobile 兩大類後端系統架構 (Backend)
:考量現代的分散式架構
的問題,有更多像是效能、部署、資安等議題。- 面對的是 真實世界 的問題,外在干擾因素很多的環境。
S/N
Signal Noise 比很高。
- 假設功能都好了,增加
主詞從
功能
換成人
,會變成很有意思的話題:政治
。
其他領域的 SVT
有在留意汽車廣告的人,應該不難發現經常會把車子放在各式各種極端環境下,展現車子的性能,像是雨天、馬路不平、泥濘、涉水 … 等。這些都在強調當外在因素的改變,本身的性能都可以滿足。而引擎的性能通常會在實驗室的理想條件下,有個最佳數據。然後再到真實的環境,給予外在的巨大變因,看看車子本身是否有良好的內聚力。
下圖是些常見的例子:
圖片來源:https://www.lian-car.com/articles/read/24711.html
SVT 在整個測試的範疇
底下這張圖,表達 SVT 在整個測試的範疇,他範圍很大,而且包山包海,但是這就是 真實世界 要面對的問題:
結論
當時 (2012/10) 整理 Slide 時,故意弄的有點好笑,又有點無奈,但實際上,就是這樣,即使現在有雲端,還有各式各樣的自動化測試解決方案,實際上,大家要認知到一件事情:
他有這麼多東西要做、這麼多面向要挑戰,可以省略、有先後次序、權重,但不可以不知。
其實不管是軟體還是人生,都有同樣的面相。
在學校或家裡,是在安全、資源充足(大部分)、干擾少的的情境之下學習,也就是『理想條件』之下的學習。但真實的社會往往不會有『理想條件』這種事,往往是干擾很大 (S/N 比很高)、現實跟理想距離很遠。。。
S/N 比是錄音室的麥克風規格之一,表達的是在一定外在因素之下 (通常是舞台上),麥克風本身能夠維持穩定的性能表現,不會收到太多 Noise。
測試也是一樣,在理想跟真實的條件之下的測試,是全然不一樣的。內聚力強,不管外在變因如何改變,都能夠呈現出穩定的性能,這也就是 SVT 的目的。現代更強調 反脆弱 (Antifragile)
等概念,其實也都是在強調,如何面對極端的外在變因,透過這些。
延伸閱讀
站內文章
- 新書上市 - 共同著作《軟體測試實務 I、II》
- Software QA 的職能條件
- 淺談軟體測試的階段與策略
- 協同合作系統建制與導入 - 以 Redmine 為例
- Slogan in SRE
- 需求管理 (Requirement Management)
- 需求管理與方向
- 真實世界
參考資料
- How to Report Bugs Effectively
- How To Ask Questions The Smart Way (正體中文版) by Eric Steven Raymond