之前在社群和人家討論測試自動化的目的, 不知怎麼就討論到 testability, 所以今天就來聊聊這個話題
 
很多人都知道要讓程式可測性高一點, 可是卻不知道何謂可測性. 如果你不知道什麼叫做可測性, 那你要如何提高它呢?
 
也有人說他就是設計程式時, 加入 SOLID 概念, 多利用 IOC, 並且讓程式變得比較小, 這樣就比較好測試了. 這個作法我同意, 不過這是實施的方式, 這些實作方式是要滿足可測性的什麼條件呢? 這些是我想談的. 因為實作方式可依地制宜, 但是可測試性地條件是不變的.
 
 
何謂 軟體可測試性(Software testability) 呢? 是指一個軟體工件(軟體系統、模組、需求文件或設計文件等) 在一給定的測試環境下, 可支援測試的程度.
 
在 wiki 中提到, 軟體元件(模組或類別)的可測試性和以下因素有關: (我只挑幾個最有用解釋的 XD)
 
 
(1) 可控制性
  • 是否可以將待測元件的狀態控制到如測試條件要求. 
  • 例如: 有些系統很複雜, 一但啟動執行, 便是一連串的步驟都一起做. 如果可以控制執行多少步, 這樣是不是比較好知道地方是否如我們想像地運作. 就像在 debug 時, 你會需要單步執行一樣.
  • 控制的方法很多, 有些受測程式是提供 API, 有些是改設定檔, 有些則是改資料庫內容. 提供越多, 就越方便控制.
 
(2) 可觀察性
  • 是否可以觀察(中間或最後的)測試結果
  • 例如像是要觀察執行速度, 有些狀況不到一秒, 你想按碼表也無法得知, 這時候如果受測系統可以在畫面上顯示執行時間, 或者是在 debug log 中可以看的這樣的資訊, 是否會覺得比較好測.
 
(3) 可隔離性
  • 待測元件是否可以隔離測試
  • 有些受測系統分成多個部分, 如果每個部分可以單獨執行或測試, 這樣測試工作就比較簡單進行.
  • 例如 google 地圖之類的軟體, 如果有提供預先下載地圖模式, 這樣你就不一定要有網路才能測試地圖查詢功能.
 
(4) 易懂性
  • 待測元件是否有說明文檔,或是本身可讀性很高
  • 有些受測系統 Online help 給的全, 或者是畫面提示很好, 你就很容易操作. 
 
 
 
 
參考資料:軟體可測試性
arrow
arrow
    全站熱搜

    kojenchieh 發表在 痞客邦 留言(0) 人氣()