軟體可測試性

軟體可測試性 （ Software testability ） 是指一個軟件工件 （ 軟體系統 、 模組 、 需求文件或設計文件等 ） 在一給定的測試環境下 ， 可支援測試的程度 。 許多軟體系統是不可測試的 ， 或是無法立即測試 。 例如Google的ReCAPTCHA ， 若沒有任何有關圖的元資料 ， 則無法成爲可測試的系統 。 不過若針對每一張圖 ， 都有對應說明應有結果的標籤 ， 就可以測試此一系統 。 因此軟件工件的可測試性不是性質 ， 不像軟體大小一様可以直接量測 。 軟體可測試性是外在性質 ， 由待測試的軟體及測試目標 、 方法及測試資源 （ 測試環境 ） 之間的相互關係來決定 。 「 可測試性 」 和設計良好程度的相關性可由以下現象看出 ： 低內聚性 、 高耦合力 、 存在多餘程式碼 ， 以及缺乏封裝的程式往往也是不容易測試的程式 。 若軟體的可測試性低 ， 可能會造成測試工作的增加 。 在一些極端的情形下 ， 缺乏可測試性可能會使部份甚至全部的測試或對的評估無法進行 。 爲了要找到可測試性以及利用測試找到系統中潛在錯誤 （ 假設有錯誤時 ） 的難度的關係 ， 有一種評估可測試性的相對指標 ， 是每一次需要多少的測試用例才能形成完整的測試套件 （ 在測試了所有測試用例後 ， 所得到的結果可以確定此係統符合某規格 ， 或不符合某規格 ， 不會有模糊地帶 ） 。 若數量不大 ， 表示程式的可測試性高 。 依照此方式 ， 已有提出可測性等級 （ testability hierarchy ） 。