官术网_书友最值得收藏!

2.3 軟件可測試性

2.3.1 可測試性生命周期過程模型

可測試性(Testability)是指軟件系統或組件或程序片段的屬性能夠被驗證的程度,即一個軟件系統能夠被測試的難易程度或被確認的能力。理論上,對于任何一個軟件,總能找到辦法對其進行測試驗證,但只有那些具有良好可測試性的軟件,才可能得到高效、完備的測試。一個函數如果粒度太大,多功能帶來多入參問題,必然產生多組合驗證等問題,顯著增加測試初始化難度及測試生命周期成本。微服務架構下,如果構建Mock服務的難度和成本過高,會直接造成不可測或測試成本過高等。

基于云原生等技術,軟件系統的規模及復雜性與日俱增,如果被測系統缺乏良好的可測試性,軟件測試將愈發困難,傳統軟件測試方法亦將受到前所未有的挑戰。軟件開發,為測試而設計、為部署而設計、為監控而設計、為擴展而設計、為失效而設計。這是認識和理念的根本轉變。良好的可測試性讓軟件缺陷無處遁形,有利于軟件測試工作有效開展,有利于降低質量風險和測試成本。

軟件可測試性包括需求、架構、設計、代碼、數據等的可測試性。基于設計方法學的軟件設計,基于編碼規則的編碼實現,是保證可測試性的基礎,簡化軟件設計和編碼,是改進可測試性的重要手段。軟件可測試性生命周期過程模型如圖2-9所示。

圖2-9 軟件可測試性生命周期過程模型

可測試性是軟件的通用質量特性之一,與開發同策劃、同設計、同驗證、同改進。需求分析階段,在業務層面對每個用戶故事建立驗收標準,在功能層面基于用戶要求,確定測試性需求;軟件設計階段,從架構設計、接口設計、日志設計等,建立可測試性規范,采用良好的設計模式,遵守高內聚低耦合、面向對象的SOLID等設計原則,為測試提供額外的接口;編碼實現階段,為可測試性設計代碼規范,確保代碼具有良好的可測試性。

例如,避免在構造函數中引入業務邏輯,如實例化和初始化協作對象、調用靜態方法及復雜賦值邏輯等。在一個類中,只傳入所需對象作為參數,避免在傳入對象中進一步挖掘依賴對象。圖2-10所示反例和正例,清晰地說明了軟件的可測試性問題。

圖2-10 一個軟件可測試性的反例和正例

主站蜘蛛池模板: 合肥市| 高阳县| 诸城市| 鹤庆县| 金山区| 思南县| 修武县| 九寨沟县| 抚顺县| 察雅县| 汤阴县| 游戏| 芜湖县| 成武县| 河东区| 平顺县| 桦南县| 建阳市| 江西省| 吉木萨尔县| 雷山县| 泾源县| 太仓市| 苍南县| 章丘市| 西华县| 修水县| 历史| 琼海市| 宿州市| 大庆市| 宁晋县| 上思县| 漳浦县| 元阳县| 遂平县| 定兴县| 冕宁县| 壶关县| 舞钢市| 隆林|