1. QA、QC的定義
QA是英文Quality Assurance 的簡稱,中文含義是品質保證;QC是英文 Quality Control的簡稱,中文含義是品質控制。
按照ISO9000:2000,QA的定義是“品質管理的一部分,致力於提供品質要求會得到滿足的信任”,QC的定義則是“品質管理的一部分,致力於滿足品質要求”。
標準中的定義都言簡意賅,難以長篇大論,這可能會導致定義不太容易清晰理解。簡言之,QC是對人事、對物,直接致力於滿足品質要求:QA則是對人、對過程,致力於使管理者、顧客和其他相關方相信有能力滿足品質要求。
在軟體/資訊化方面的一些標準中,QA的定義包括:“品質保證是指為使軟體產品符合規定需求所進行的一系列有計劃的必要工作。”(GB/T 12504-1990電腦軟體品質保證計劃規範);“為使某項目或產品符合已建立的技術需求提供足夠的信賴度,而必須採取的有計劃和有系統的全部動作的模式。”(GB/T11457—1995軟體工程術語)。在這兩個標準中都沒有直接關於QC的定義。
按照不同的目的、從不同的角度對同一個術語的定義往往存在差異,例如GB/T 12504-1990、GB/T11457—1995分別對QA的定義就存在差異,按照GB/T 12504-1990的QA定義涵蓋的範圍較寬,包含了QC的內容。
2. QA與QC的側重點比較
在一個軟體組織或項目團隊中,存在QA和QC兩類角色,這兩類角色工作的主要側重點比較如下:
QA與QC的其他重大區別還包括:
具備必要資質的QA是組織中的進階人才,需要全面掌握組織的流程定義,熟悉所參與項目所用的工程技術;QC則既包括軟體測試設計員等進階人才,也包括一般的測試員等中、初級人才。國外有軟體企業要求QA應具備兩年以上的軟體開發經驗,半年以上的分析員、設計員經驗;不僅要接受QA方面的培訓,還要接受履行專案經理職責方面的培訓。
在項目組中,QA獨立於專案經理,不由專案經理進行績效考核;QC受專案經理領導,通常在項目運行周期內QC的績效大部分由專案經理考核決定。
QA活動貫穿項目啟動並執行全過程;QC活動一般設定在項目啟動並執行特定階段,在不同的控制點可能由不同的角色完成。
對稱職的QA,跟蹤和報告項目運行中的發現(Findings)只是其工作職責的基礎部分,更富有價值的工作包括為項目組提供過程支援,例如為專案經理提供以往類似項目的案例和參考資料,為項目群組成員介紹和解釋適用的流程定義檔案等;QC的活動則主要是發現和報告產品的缺陷。
3. QA的工作內容
國際標準、國家標準都是通用的,軟體組織是具體的、鮮活的。不同組織中QA的工作職責和內容會有共同性,也會有特異性,可以分層次考慮QA的工作內容和特點:
3.1 過程遵從性
保證過程遵從性是QA的根本職責,即保證項目組按組織規定的過程運行。通常各類組織,不僅是軟體組織中的QA都致力於保證過程遵從性,以證實能以穩定的品質提供產品和服務,得到具備滿足品質要求能力的信任。
3.2 計劃符合性
保證項目的計劃符合性首先是專案經理的責任,不是QA的根本職責。有些組織中QA不必認真關注計劃符合性;但是,項目的規模、工作量、進度、缺陷等方面的計劃符合性是高層管理者的關注重點,QA作為高層管理者的耳目有必要跟蹤和報告計劃符合性。在許多軟體組織中跟蹤和報告計劃符合性是QA的常規工作內容。
3.3 工件正確性
工作產品(Work Product)簡稱工件,指項目運行中產生的各種文檔、代碼、程式等。在多數軟體組織中,QA通常不直接跟蹤和報告工件正確性。其根本原因是這樣做將會導致QA在項目工作中陷得太深,不利於保持QA的獨立性和客觀性。其他原因還包括QA的能力、時間資源都可能不足以支援其去跟蹤和報告工件正確性。
4. 基於實際情況理解和處理QA的工作內容
怎樣定義QA的具體職責範圍是各組織自己的事,品質管理標準和流程改善模型都只會要求某個職責要有機構、角色履行,不會要求組織一定要設立某個機構、某種角色,或某種角色必須是怎樣的職責。即使在同一個組織中,根據不同的應用目的也可以作不同的處理。
例如,在一個通過了SW-CMM三級的軟體組織, QA計劃的最小範圍只包括支援、跟蹤和報告項目組的活動,當項目工件中存在外包組件時要跟蹤和報告外包組件開發方的相關活動,當項目與特定顧客的需求、部署和實施有關時要負責與該顧客就品質管理問題,包括產品和服務缺陷等問題進行溝通。組織內部使用的QA與需求管理計劃、組態管理計劃、工件評審計劃、溝通計劃、風險管理計劃、培訓計劃、測試計劃、開發計劃等是分離的;但對大型的公司資訊化建設項目,如果顧客需要,提交給顧客以展示主要組織品質保證能力的QA計劃需要包括包括QA、QC的多方面計劃,例如評審計劃和測試計劃,比較接近GB/T 12504-1990中的QA活動範圍。