質量一詞,在百度百科解釋為“質量是物體本身的屬性,物體的質量與物體的形狀、物態及其所處的空間位置無關,質量是物體的一個基本屬性”。

針對軟件,可將質量理解為“軟件產品滿足用戶或規定顯性需求或隱性需求的程度”。

從質量定義可以看出,軟件質量的關鍵點是滿足要求,可使用差、好及優秀等修飾詞進行表述。

針對軟件而言,“滿足要求”包含兩個層次:

一是用戶顯性需求;

二是滿足其隱性需求。

通常情況下,用戶容易表述其顯性需求,如需要何種功能、何種性能表現等,但無法明確其隱性需求,如軟件產品無論在哪種用戶需求背景下,都需滿足法律法規的限制、行業限制、用戶約定俗成習慣,甚至是企業內部的規章制度等。因此,考慮軟件質量時,既需考慮用戶顯性需求,也需考慮其隱性需求,這點測試工程師在分析測試需求時必須考慮。

衡量一個軟件系統的好壞,可從過程質量、內部質量、外部質量、使用質量等幾個方面考察。

  • 過程質量關注軟件產品整個生產流程是否規范;
  • 內部質量關注軟件內部設計及靜態測度是否合格;
  • 外部質量關注軟件產品功能、性能的表現,使用質量則關注軟件系統在使用過程中的易用性、滿意度表現。

對于測試工程師而言,如果從集成測試角度考慮,需關注內部質量、外部質量及使用質量,如果僅做黑盒測試,則可從外部質量及使用質量考慮。

衡量軟件好壞的關鍵在于檢驗被測對象“滿足要求”的程度。這些“要求”對應的是特性,那么衡量軟件好壞的關鍵點轉變為特性的達到程度,如果通過量化指標將這些特性進行量化,便可以根據指標達標情況判斷被測對象的優劣。

國標軟件質量GB/T16260.1—2006/ISO9126:2001定義了衡量軟件質量的6個特性,分別是功能性、可靠性、易用性、效率、可移植、可維護等。

國標GB/T25000.51標準對9126標準做了補充,增加了使用質量評價,關注于用戶滿意度,特別對COTS(商用現貨軟件)規定了基本的質量要求及測試方法,以便于軟件的供應、選擇、采購及測試。

從軟件測試角度而言,測試工程師需要了解每個特性及其子特性,以便于在分析測試需求、提取測試需求及評價被測對象時有的放矢,依據標準開展有效的測試活動。

一、功能性

功能性是指軟件在指定條件下使用時,滿足用戶明確和隱含需求的功能的能力。功能性包含以下5個子特性。

1、適合性:軟件為指定的任務和用戶目標提供一組合適功能的能力。

2、準確性:軟件提供具有所需精確度的正確或相符的結果或效果的能力。

3、互操作性:軟件與一個或更多的規定系統進行交互的能力。

4、保密安全性:軟件保護信息和數據的能力,以使未授權的人員或系統不能閱讀或修改這些信息和數據,而不拒絕授權人員或系統對它們的訪問。

5、功能性依從性:軟件遵循與功能性相關的標準、約定或法規以及類似規定的能力。這些標準要考慮國際標準、國家標準、行業標準、企業內部規范等。

二、可靠性

可靠性是指軟件在指定條件下使用時,維持規定的性能級別的能力。可靠性要求有兩個重要的概念:平均故障修復時間(mean time to repair,MTTR)、平均無故障時間(mean time between failures,MTBF),MTTR值越小,說明故障修復時間越短,故障處理響應速度較快,MTBF值越大,說明軟件故障率低,系統可靠性高。可靠性包含以下4個子特性。

1、成熟性:軟件為避免由軟件中錯誤而導致失效的能力。

2、容錯性:在軟件出現故障或者違反指定接口的情況下,軟件維持規定的性能級別的能力。

3、易恢復性:在失效發生的情況下,軟件重建規定的性能級別并恢復受直接影響的數據的能力。

4、可靠性依從性:軟件遵循與可靠性相關的標準、約定或法規的能力。

三、易用性

易用性是指在指定條件下使用時,軟件被理解、學習、使用和吸引用戶的能力。易用性包含以下5個子特性。

1、易理解性:軟件使用戶能理解軟件是否合適,以及如何能將軟件用于特定的任務和使用環境的能力。

2、易學性:軟件使用戶能學習其應用的能力。

3、易操作性:軟件使用戶能操作和控制它的能力。

4、吸引性:軟件吸引用戶的能力。

5、易用性依從性:軟件遵循與易用性相關的標準、約定、風格指南或法規的能力。這些標準要考慮國際標準、國家標準、行業標準、企業內部規范等,如企業內部的界面規范。

四、效率

效率是指在規定條件下,相對于所用資源的數量,軟件可提供適當性能的能力。效率包含以下3個子特性。

1、時間特性:在規定條件下,軟件執行其功能時,提供適當的響應和處理時間以及吞吐率的能力,即完成用戶的某個功能需要的響應時間。

2、資源利用性:在規定條件下,軟件執行其功能時,使用合適的資源數量和類別的能力。

3、效率依從性:軟件遵循與效率相關的標準或約定的能力。

五、可維護性

可維護性是指軟件可被修改的能力。修改可能包括修正、改進或軟件對環境、需求和功能規格說明變化的適應。可維護性包含以下5個子特性。

1、易分析性:軟件診斷軟件中的缺陷、失效原因或識別待修改部分的能力。

2、易改變性:軟件使指定的修改可以被實現的能力。

3、穩定性:軟件避免由于軟件修改而造成意外結果的能力。

4、易測試性:軟件使已修改軟件能被確認的能力。

5、維護性依從性:軟件遵循與維護性相關的標準或約定的能力。

六、可移植性

可移植性是指軟件從一種環境遷移到另外一種環境的能力。可移植性包含以下5個子特性。

1、適應性:軟件無須采用有別于為考慮該軟件的目的而準備的活動或手段,就可能適應不同指定環境的能力。

2、易安裝性:軟件在指定環境中被安裝的能力。

3、共存性:軟件在公共環境中同與其分享公共資源的其他獨立軟件共存的能力。

4、易替換性:軟件在同樣環境下,替代另一個相同用途的指定軟件產品的能力。

5、可移植性依從性:軟件遵循與可移植性相關的標準或約定的能力。