即便組織已經通過了CMM5認證,也未必代表軟體的質量很高。軟體產品的質量應該如何定義?應該如何保證質量?通常經典教科書裡的內容並不能奏效。根本原因是不同的軟體產品對質量的要求不同,是否已商業目標和價值來衡量專案軟體的質量成了重要標準之一。
另外,專案管理中的質量與產品管理的質量也大不同,到底如何平衡收益與代價,越來越值得我們進一步思考。
1質量管理發展階段
第一階段特徵: 事後檢查。將質量檢驗成為一種職能從生產過程中分離出來,成立獨立的質量檢驗部門(QC部門)。
第二階段特徵:強調缺陷預防。添加了質量過程控制,在控制中引用統計數學方法,實施定量的質量管理。
第三階段特徵:同時關注結果和過程質量。
1.質量不僅僅是產品質量,還包括服務、工作質量,質量是全體人員的共同事務。
2.質量不僅僅考慮功能,還要考慮可靠性、經濟性和可維護性等。
4.全員參與。
第四階段特徵: 客戶滿意、預防勝於檢查、質量成本。
2質量的定義
ISO定義:指產品或服務所具有的,能用以鑑別其是否合乎規定要求的一切特性和特徵總和。
六西格瑪定義:是顧客和供應商從商業關係各個角度共同認知的價值理念。
朱蘭博士: 適合使用 ( Fitness to use)。
克勞斯比: 符合要求。
3軟體產品的衡量維度
軟體質量管理計劃的大綱通常包括以下組成部分:
質量元素分析
軟體產品和過程的質量目標
實施質量活動的人員與職責
過程檢查計劃
技術評審計劃
軟體測試計劃
缺陷跟蹤工具
審批意見
衡量產品的基本測量指標:
衡量專案執行與測試的基本測量指標:
1
覆蓋率
覆蓋率(Coverage Ratio) – 度量完整性的一個指標和手段。
覆蓋率 = (至少被執行一次的item數) / item的總數。
1. 需求覆蓋率。
透過設計一定的測試用例,要求每個需求點都被測試到。
需求覆蓋率 = ∑被驗證的需求量(個) / ∑總需求數量(個)。
還可以把需求進一步分解為功能點,每一個功能點對應一個測試用例來衡量。
需要參考:《使用者需求說明書》《需求跟蹤矩陣》。
2. 邏輯覆蓋率。
語句覆蓋
判定覆蓋
條件覆蓋
判定條件覆蓋、
路徑覆蓋等 。
邏輯覆蓋率屬於白盒測試。
覆蓋率使用原則:使用最少測試用例來達到覆蓋。
2
缺陷修復率
衡量解決問題、修復缺陷(BUG)的能力和效率。
缺陷修復率 = ∑修復(關閉)的缺陷數量(個) / ∑有效缺陷數量(個)。
需要參考內部的缺陷管理系統,通常從該系統匯出資料進行分析,或者由系統直接生成報表。
還可以進一步觀察缺陷的分佈情況:
缺陷分佈率 = 本模組的缺陷數(個) / ∑各模組的缺陷數(個)*100%。
通常,還需要收集每一次釋出週期內的缺陷密度(DDD, Defects Density Distribution),做一個趨勢分析。
系統或者模組的缺陷比率 = 本版本的缺陷數(個) / ∑已測各模組數(個)。
透過比較以往每次釋出的缺陷比率(缺陷密度)來評價和預測軟體質量的穩定和趨勢。
3
測試績效指標
如果想衡量我們的測試能力和績效,可以使用一下的測試績效指標來分析。
缺陷探測率。計算內部發現的缺陷數除以內部發現的缺陷數與使用者發現的缺陷數之和,主要檢視內部發現缺陷的能。
缺陷探測率 = 內部發現的缺陷數(個) / (內部發現的缺陷數(個)+使用者發現的缺陷數(個))*100%。
有效缺陷率。計算被開發人員確認的BUG數總和除於本人上報BUG的總和,可用於檢視測試人員的個人測試質量,也可用於檢視整個測試組的測試質量。
有效缺陷率 = 測試人員發現的有效缺陷數(個) /測試人員發現的總缺陷數(個)*100%。
用例執行率。計算測試人員執行的用例數除以執行測試的時間,主要檢視測試人員執行測試的效率。
用例執行率 = ∑測試人員執行的用例數(個) / ∑執行用例的時間(h)。
缺陷發現率。計算測試人員各自發現的缺陷數總和除於各自所花費的測試時間總和。
缺陷發現率 = ∑提交缺陷數(個) / ∑執行測試的有效時間(小時)。
4
軟體上線交付指標
軟體釋出以後,可能會有故障或者功能回滾(Rollback),可以這麼評價。
釋出回滾率。計算計劃上線需求個數減去載入回滾的需求個數之差除以計劃上線需求個數,主要檢視新需求上線交付質量。
釋出回滾率 = (上線需求數(個)-釋出當時回滾需求數(個))/上線需求數(個)*100%。
故障回滾率。計算計劃上線需求個數減去故障回滾的需求個數之差除以計劃上線需求個數,主要檢視新需求上線交付質量。
故障回滾率 = (上線需求數(個)-故障回滾需求數(個))/上線需求數(個)*100%。
5質量保證(SQA)PMI這麼評價質量保證:質量保證旨在建立對未來輸出或未完輸出(正在進行的工作)將在完工時滿足特定的需求和期望的信心。
那麼,質量保證 = 高質量嗎?這大概是天下最大的謊言。
質量保證並不能保證獲得高質量,旨在保證質量的提高。
SQA的目的是為管理者提供有關軟體過程和產品的可視性。包括審計質量要求、評審軟體產品及其活動,以驗證其是否遵守既定的規程和標準,並向有關負責人彙報評審和稽核的結果。還包括檢查在過程執行期間遇到的問題、制約因素,發現非增值活動,實施過程改進。
一句話說,質量保證類似專案管理中的警察,來檢查專案實施的合規性,並且組織活動實施過程改進。
軟體行業的質量保證,可以透過不斷實施一下活動。
正確的配置管理。
階段性的技術評審。
同行評審(Peer Review)。
實施持續整合CI。
除了確保軟體產品的功能完整和正確性,還需要確保達到了所需要的非功能性特徵,如高效能、高負載下時的可用性、高可用性、安全性、易用性等。
雖然技術評審與軟體測試都是為了消除缺陷,但是也有不同:
而後者一定要執行軟體來查詢缺陷。
技術評審在軟體測試之前執行,尤其是在需求開發和系統設計階段。
相比而言,軟體測試的工作量通常比技術評審的大,發現的缺陷也更多。
為了高效、集中的處理檢測出來的缺陷,組織往往會採用某些缺陷跟蹤程式,同時也能更好的分享給其他的成員。
有很多免費的缺陷跟蹤程式可以從網際網路下載。但並不是所有軟體都能提供一些資料分析。
對於缺陷,常用的統計與分析工具有一下:
此外上面耳熟能詳的質量管理七工具,還有新的工具可以使用。
6組織的責任即便大家都認可質量的重要性,在當今社會,依然有很多公司並沒有重視軟體的質量管理,其中一個表現就是不重視質量管理人員, 比如沒有很好的職業發展道路,也不重視和培養質量管理人才。
對於質量,企業應該做好以下幾點:
質量管理、人人有責。不管是開發也好、測試也好、PMO也好,都要參與到努力提高質量並且交付合格的產品。企業有責任普及質量管理知識,也要讓每一位員工意識到質量管理的價值和重要性。
培養優秀的質量管理人才,確保採用核實的流程、方法與工具有效和高效的開展質量管理活動。
對於相關質量保證部門的人,推動質量的改進是困難的,因為他們往往有責物權。如果能做到責權合適,則對於質量活動的開展有極大的推動作用。
即便組織已經通過了CMM5認證,也未必代表軟體的質量很高。軟體產品的質量應該如何定義?應該如何保證質量?通常經典教科書裡的內容並不能奏效。根本原因是不同的軟體產品對質量的要求不同,是否已商業目標和價值來衡量專案軟體的質量成了重要標準之一。
另外,專案管理中的質量與產品管理的質量也大不同,到底如何平衡收益與代價,越來越值得我們進一步思考。
1質量管理發展階段
第一階段特徵: 事後檢查。將質量檢驗成為一種職能從生產過程中分離出來,成立獨立的質量檢驗部門(QC部門)。
第二階段特徵:強調缺陷預防。添加了質量過程控制,在控制中引用統計數學方法,實施定量的質量管理。
第三階段特徵:同時關注結果和過程質量。
1.質量不僅僅是產品質量,還包括服務、工作質量,質量是全體人員的共同事務。
2.質量不僅僅考慮功能,還要考慮可靠性、經濟性和可維護性等。
4.全員參與。
第四階段特徵: 客戶滿意、預防勝於檢查、質量成本。
2質量的定義
ISO定義:指產品或服務所具有的,能用以鑑別其是否合乎規定要求的一切特性和特徵總和。
六西格瑪定義:是顧客和供應商從商業關係各個角度共同認知的價值理念。
朱蘭博士: 適合使用 ( Fitness to use)。
克勞斯比: 符合要求。
3軟體產品的衡量維度
軟體質量管理計劃的大綱通常包括以下組成部分:
質量元素分析
軟體產品和過程的質量目標
實施質量活動的人員與職責
過程檢查計劃
技術評審計劃
軟體測試計劃
缺陷跟蹤工具
審批意見
衡量產品的基本測量指標:
衡量專案執行與測試的基本測量指標:
1
覆蓋率
覆蓋率(Coverage Ratio) – 度量完整性的一個指標和手段。
覆蓋率 = (至少被執行一次的item數) / item的總數。
1. 需求覆蓋率。
透過設計一定的測試用例,要求每個需求點都被測試到。
需求覆蓋率 = ∑被驗證的需求量(個) / ∑總需求數量(個)。
還可以把需求進一步分解為功能點,每一個功能點對應一個測試用例來衡量。
需要參考:《使用者需求說明書》《需求跟蹤矩陣》。
2. 邏輯覆蓋率。
語句覆蓋
判定覆蓋
條件覆蓋
判定條件覆蓋、
路徑覆蓋等 。
邏輯覆蓋率屬於白盒測試。
覆蓋率使用原則:使用最少測試用例來達到覆蓋。
2
缺陷修復率
衡量解決問題、修復缺陷(BUG)的能力和效率。
缺陷修復率 = ∑修復(關閉)的缺陷數量(個) / ∑有效缺陷數量(個)。
需要參考內部的缺陷管理系統,通常從該系統匯出資料進行分析,或者由系統直接生成報表。
還可以進一步觀察缺陷的分佈情況:
缺陷分佈率 = 本模組的缺陷數(個) / ∑各模組的缺陷數(個)*100%。
通常,還需要收集每一次釋出週期內的缺陷密度(DDD, Defects Density Distribution),做一個趨勢分析。
系統或者模組的缺陷比率 = 本版本的缺陷數(個) / ∑已測各模組數(個)。
透過比較以往每次釋出的缺陷比率(缺陷密度)來評價和預測軟體質量的穩定和趨勢。
3
測試績效指標
如果想衡量我們的測試能力和績效,可以使用一下的測試績效指標來分析。
缺陷探測率。計算內部發現的缺陷數除以內部發現的缺陷數與使用者發現的缺陷數之和,主要檢視內部發現缺陷的能。
缺陷探測率 = 內部發現的缺陷數(個) / (內部發現的缺陷數(個)+使用者發現的缺陷數(個))*100%。
有效缺陷率。計算被開發人員確認的BUG數總和除於本人上報BUG的總和,可用於檢視測試人員的個人測試質量,也可用於檢視整個測試組的測試質量。
有效缺陷率 = 測試人員發現的有效缺陷數(個) /測試人員發現的總缺陷數(個)*100%。
用例執行率。計算測試人員執行的用例數除以執行測試的時間,主要檢視測試人員執行測試的效率。
用例執行率 = ∑測試人員執行的用例數(個) / ∑執行用例的時間(h)。
缺陷發現率。計算測試人員各自發現的缺陷數總和除於各自所花費的測試時間總和。
缺陷發現率 = ∑提交缺陷數(個) / ∑執行測試的有效時間(小時)。
缺陷探測率。計算內部發現的缺陷數除以內部發現的缺陷數與使用者發現的缺陷數之和,主要檢視內部發現缺陷的能。
缺陷探測率 = 內部發現的缺陷數(個) / (內部發現的缺陷數(個)+使用者發現的缺陷數(個))*100%。
有效缺陷率。計算被開發人員確認的BUG數總和除於本人上報BUG的總和,可用於檢視測試人員的個人測試質量,也可用於檢視整個測試組的測試質量。
有效缺陷率 = 測試人員發現的有效缺陷數(個) /測試人員發現的總缺陷數(個)*100%。
用例執行率。計算測試人員執行的用例數除以執行測試的時間,主要檢視測試人員執行測試的效率。
用例執行率 = ∑測試人員執行的用例數(個) / ∑執行用例的時間(h)。
缺陷發現率。計算測試人員各自發現的缺陷數總和除於各自所花費的測試時間總和。
缺陷發現率 = ∑提交缺陷數(個) / ∑執行測試的有效時間(小時)。
4
軟體上線交付指標
軟體釋出以後,可能會有故障或者功能回滾(Rollback),可以這麼評價。
釋出回滾率。計算計劃上線需求個數減去載入回滾的需求個數之差除以計劃上線需求個數,主要檢視新需求上線交付質量。
釋出回滾率 = (上線需求數(個)-釋出當時回滾需求數(個))/上線需求數(個)*100%。
故障回滾率。計算計劃上線需求個數減去故障回滾的需求個數之差除以計劃上線需求個數,主要檢視新需求上線交付質量。
故障回滾率 = (上線需求數(個)-故障回滾需求數(個))/上線需求數(個)*100%。
釋出回滾率。計算計劃上線需求個數減去載入回滾的需求個數之差除以計劃上線需求個數,主要檢視新需求上線交付質量。
釋出回滾率 = (上線需求數(個)-釋出當時回滾需求數(個))/上線需求數(個)*100%。
故障回滾率。計算計劃上線需求個數減去故障回滾的需求個數之差除以計劃上線需求個數,主要檢視新需求上線交付質量。
故障回滾率 = (上線需求數(個)-故障回滾需求數(個))/上線需求數(個)*100%。
5質量保證(SQA)PMI這麼評價質量保證:質量保證旨在建立對未來輸出或未完輸出(正在進行的工作)將在完工時滿足特定的需求和期望的信心。
那麼,質量保證 = 高質量嗎?這大概是天下最大的謊言。
質量保證並不能保證獲得高質量,旨在保證質量的提高。
SQA的目的是為管理者提供有關軟體過程和產品的可視性。包括審計質量要求、評審軟體產品及其活動,以驗證其是否遵守既定的規程和標準,並向有關負責人彙報評審和稽核的結果。還包括檢查在過程執行期間遇到的問題、制約因素,發現非增值活動,實施過程改進。
一句話說,質量保證類似專案管理中的警察,來檢查專案實施的合規性,並且組織活動實施過程改進。
軟體行業的質量保證,可以透過不斷實施一下活動。
正確的配置管理。
階段性的技術評審。
同行評審(Peer Review)。
實施持續整合CI。
除了確保軟體產品的功能完整和正確性,還需要確保達到了所需要的非功能性特徵,如高效能、高負載下時的可用性、高可用性、安全性、易用性等。
雖然技術評審與軟體測試都是為了消除缺陷,但是也有不同:
而後者一定要執行軟體來查詢缺陷。
技術評審在軟體測試之前執行,尤其是在需求開發和系統設計階段。
相比而言,軟體測試的工作量通常比技術評審的大,發現的缺陷也更多。
技術評審在軟體測試之前執行,尤其是在需求開發和系統設計階段。
相比而言,軟體測試的工作量通常比技術評審的大,發現的缺陷也更多。
為了高效、集中的處理檢測出來的缺陷,組織往往會採用某些缺陷跟蹤程式,同時也能更好的分享給其他的成員。
有很多免費的缺陷跟蹤程式可以從網際網路下載。但並不是所有軟體都能提供一些資料分析。
對於缺陷,常用的統計與分析工具有一下:
此外上面耳熟能詳的質量管理七工具,還有新的工具可以使用。
6組織的責任即便大家都認可質量的重要性,在當今社會,依然有很多公司並沒有重視軟體的質量管理,其中一個表現就是不重視質量管理人員, 比如沒有很好的職業發展道路,也不重視和培養質量管理人才。
對於質量,企業應該做好以下幾點:
質量管理、人人有責。不管是開發也好、測試也好、PMO也好,都要參與到努力提高質量並且交付合格的產品。企業有責任普及質量管理知識,也要讓每一位員工意識到質量管理的價值和重要性。
培養優秀的質量管理人才,確保採用核實的流程、方法與工具有效和高效的開展質量管理活動。
對於相關質量保證部門的人,推動質量的改進是困難的,因為他們往往有責物權。如果能做到責權合適,則對於質量活動的開展有極大的推動作用。