軟件企業質量保證的基石――QA,QC的良性協作

2023年7月13日 608點熱度 0人點贊 0條評論

這是2007年我在CSDN雜志上發表的一篇老文章,現在看來也不算過時,在日常講授ISTQB基礎級課程中也會介紹QA和QC的互動模型,這也算是一種另類的記錄吧。

軟件企業質量保證的基石――QA、QC的良性協作

國內的軟件產業發展了20多年的時間,已經由個人英雄時代步入到中、小團隊協作時代。相信不久的將來,國內一定會出現航母級的軟件企業,那時候我們會迎來集團軍作戰的時代。不同的時代表明軟件規模的不同,也標志著軟件質量管理的復雜度急劇上升,同時對軟件質量的保障方法也提出了更高的要求。

本文并不打算系統的闡述軟件企業的質量保證體系,而是想從另一個側面同大家分享軟件企業在軟件開發過程中兩個重要角色之間的協作關系,以兩個角色之間高效的互動來說明在開發過程中,我們如何來有效的保障軟件產品的質量。

軟件企業的質量保證體系

我們知道質量保證體系的建設是一個系統工程,質量的保障不是某些人或者某些部門的工作,而是整個企業的文化,理念的貫徹。如果一個企業在進行質量保證體系的建設和推廣過程中,只是在強調方法,強調規范,而不是把質量意識,企業文化貫穿其中,那質量保證體系是否能持續的發揮作用,并形成為企業的核心競爭力就值得懷疑了。

一般軟件企業在規劃質量保證體系的時候都會選擇一個模型,目前比較流行的模型有:ISO9000:2000、CMMI、RUP、XP等,具體選用那種模型,還需要看企業的實際情況,并且能充分的協調:人、技術、過程三者之間的關系,使之能充分的發揮作用,促進生產力的發展。

在軟件企業的質量保證體系建設過程中,一般需要獨立完成以下幾個流程:

項目管理流程、軟件開發流程、軟件測試流程、質量保證流程、配置管理流程。

以上這些流程需要相輔相成,各自之間都有相應的接口,通過項目管理流程將所有的活動貫穿起來,共同來保證軟件產品的質量。

整個軟件質量保證體系中,所有的流程圍繞軟件開發流程展開,唯一的目標就是保證軟件開發的質量,所以在眾多的流程中,軟件開發流程為質量保證體系中的主流程,其它的流程為輔助流程。之所以我們需要建立眾多的輔助流程,就是為了讓軟件開發過程透明、可控,通過多角色之間的互動,來有效的降低軟件開發過程中的風險,持續不斷的提高軟件產品的質量。

QA、QC的職責

在我們開始討論QA、QC的職責之前,我們先假定一個前提條件,即:企業內部的質量保證體系已經建設完畢,即上述的五個流程已經編寫完畢,并且通過了試運行,目前正在按部就班的執行。

  • QA的英文為:Quality Assurance 我們翻譯為“質量保證”
  • QC的因為為:Quality Control 我們翻譯為“質量控制”

我們將這兩個角色之間進行一下職責劃分,以方便我們后續的討論

  • QA監控公司質量保證體系的運行狀況,審計項目的實際執行情況和公司規范之間的差異,并出具改進建議和統計分析報告,對公司的質量保證體系的質量負責。
  • QC對每一個階段或者關鍵點的產出物(工件)進行檢測,評估產出物是否符合預計的質量要求,對產出物的質量負責。

通過上面的職責劃分,我們發現,如果我們將軟件的生產比喻成一條產品加工生產線的話,那QA只負責生產線本身的質量保證,而不管生產線中單個產品的實際質量情況。QA通過保證生產線的質量來間接保證軟件產品的質量。

而QC不管生產線本身的質量,而只關注生產線中生產的產品在每一個階段的質量是否符合預期的要求,如果我們生產的是杯子,那QC只關注:生產的材料是否是預期的,每個杯子瓶口的直徑是否符合要求,杯子把手是否符合設計要求等等具體的、可量化的點。

針對軟件企業的軟件開發過程而言:

  • QA可以進一步明確為SQA,即:軟件質量保證,只負責軟件開發流程的質量,企業內相對應的角色為:軟件質量保證人員,有的企業就直接稱之為SQA。
  • QC可以進一步明確為SQC,即:軟件質量控制,只負責軟件開發過程中各個階段產出的工件的質量,產出的工件可能是相關的文檔或者代碼等,企業內相對應的角色為:軟件測試人員。

由于各個企業采用的開發流程和測試流程不一樣,在各個階段SQC的對應人員不一定都為測試人員,如在需求階段,產生的工件為《需求規格說明書》,對該文檔的主要質量控制手段為評審,這時候在此階段擔任SQC職責的就是評審小組的成員。

QA、QC的良性協作

通過以上分析發現,SQA和SQC雖然主要的工作都是為了保證軟件的質量,但是著眼點不盡相同。

SQA通過控制過程來保證軟件產品的質量,而SQC是通過控制每個階段的“結果”來保證軟件產品的質量。

如果在軟件開發過程中我們只要SQA或者SQC是否可以保證軟件產品的質量那?答案一定是不可以的,通過下面的分析我們看看原因到底是什么。

?軟件企業中只有SQA的角色

如果企業中只有SQA的角色而沒有SQC,我們假設企業對SQA的投入力度很大,于是企業得到了一個很好的流程(生產線),但是這個時候軟件的產品是否就沒有問題了那?如果我們的生產源頭沒有得到有效的控制,進入生產線的材料是殘次品,那不管我們的流程控制的多好,那最終的產品的質量都不會高。

可能有朋友會說,如果我進行了很好的流程控制,對原材料的控制方法當然也納入到了我們的流程之中,原材料沒有了問題,那這件事情是不會發生的。

如果是制造業,這件事情可能會存在,但是在軟件產業中,這件事情幾乎不會發生。

因為在軟件產品的開發過程當中,幾乎所有的原材料都是自己生產的,如需求規格說明書、概要設計、詳細設計等,單靠過程的控制無法得到無缺陷的“原材料”。由于軟件開發的固有特性,我們在每一步的生產加工過程中,都會引入新的缺陷,不管我們的流程規劃的多么完美。所以,在每一階段完成后,都需要對上一階段的工作產品進行檢驗,評估這個階段的工作產品是否符合預定的質量要求,只有這樣才能保證最終軟件產品的質量。

軟件企業中只有SQC的角色

如果企業當中只有SQC而沒有SQA的角色,我們也假設企業對SQC的投入力度很大,在每一個階段SQC都找出了相應的缺陷,這時候企業的質量保證是否就沒有問題了那?

如果純從質量保證的觀點來看,在理想情況下,上述的軟件企業的質量的確是沒有問題,因為在每一個階段,通過大量專業SQC(測試)的努力工作,找出了軟件產品中的“全部”缺陷,這樣的產品的質量當然沒有問題了。

但是我們從另外一個角度看一下這個問題:首先軟件中的缺陷在理論上是不可能被全部找出來的,由于軟件測試的不可遍歷性。其次,如果我們維護一個上述的軟件測試團隊,成本是相當高的,目前國際上還沒有那個商業性的公司能夠維護的起(微軟的產品還會有大量的缺陷),也就是說在實際操作過程中幾乎沒有公司會同意上述的做法。另外,如果我們在軟件生產的過程中,只單一的強調對結果的檢驗環節,而忽視過程控制,會造成持續的返工、極大的推遲交付產品的日期,最終造成軟件開發的失敗。這樣的做法就像我們想減肥,不是去節食、多做運動,而是去不斷的稱體重想達到減肥的目的一樣可笑。所以,我們想提高軟件的質量,不是持續不斷的進行測試,而是要改變軟件開發的方式,改變我們的流程,在過程中保證軟件產品的質量。

通過以上分析發現,如果想有效的保證軟件產品的質量,SQA和SQC缺一不可,兩種角色必須相互配合,在“過程”和“結果”都正確的基礎上,才能有效改善軟件產品的質量。

質量的持續改進

軟件質量的提高,過程的改進是一個循序漸進的過程,不可能一蹴而就。針對軟件企業而言,如何調配有限的資源,針對質量保證的短板,來有針對性的做出質量改進的規劃才是企業迫切需要解決的問題。

  • 首先,企業必須對軟件質量的保證提出切實的目標,質量保證的目標絕對不是為了過級,拿到認證,這些只是附帶的結果。企業質量保證的目標應該是提高產品的競爭力,重塑企業的文化。
  • 其次,在質量保證的技術層面,SQA人員和SQC人員的互動,會為企業選擇質量保證的短板提出建設性的意見。

SQC(測試)人員在工作過程中會產生出大量的過程數據,SQA人員通過對這些數據的統計分析,發現企業的問題所在,進而反饋到流程的改進活動中,再通過SQC人員搜集的大量數據來驗證流程改進的有效性,最終達到質量的持續改進。

質量是企業的根本,不管我們現在的產品銷售情況如何,企業之間的競爭早晚會過渡到質量的競爭上來,所以只有我們自己練好內功,才有希望打造出我們自己的百年老店。

領測老賀

領測軟件測試網站長,ISTQB認證高級培訓師,TMMi認證咨詢師。深耕軟件測試行業20余年,領測老賀聊軟件測試制造者。

文章評論

欧美性爱a片,国产精品va在线观看无码电影,好爽好紧免费30分钟视频