軟體開發過程中的qa與
qc
judy shen
在實際質量工作中,經常會碰到乙個問題,即
質量保證(
quality assurance)和
質量控制(
quality control
)關係比較容易混淆。qa和
qc由於都屬於質量管理的範疇,同時
在工作中由於二者的工作存在部分交叉、共同的工作內容,因此在專案成員中容易造成職責上的混淆。為了讓專案組成員了解二者的區別,並協調一致地開展工作、共同提高軟體質量,筆者結合多年的測試經驗對這兩種角色的關係進行了研究和闡述。qa和
qc各司其職,相輔相成,統一於質量管理(
quality management
)。拿一部汽車來做比喻吧,質量控制(
qc)就是所有那些告訴你汽車當前運動狀態的儀器儀表;質量保證(
qa)包括各類標準,是告訴你所有部件操作方法的使用者手冊;而質量管理(
qm)則是你要追求的目標,比如希望能平安、高速地駕駛汽車。可以看出,為了實現質量管理的目標,質量保證和質量控制都是不可或缺的部分。
了解了qa和qc
的重要性後,我們需要詳細了解一下qa和
qc的具體區別,如表一所示:
qa
qc
全
稱
quality assurance
(質量保證)
quality control
(質量控制)
角
色
qa工程師
測試工程師、評審員
定
義
為了確保軟體開發過程和結果符合預期的結果,依照過程和計畫採取的一系列活動及其結果評價。
為了發現軟體產品的錯誤、缺陷而進行工作的過程。
目
的
減少並糾正實際的軟體開發過程和軟體開發結果與預期的軟體開發過程和軟體開發結果的不符合情況。
為了尋找錯誤、缺陷,並盡可能的為修復錯誤提供更多的資訊。
職
責
監控公司質量保證體系的執行狀況,審計專案的實際執**況和公司規範之間的差異,並出具改進建議和統計分析報告。
是過程、產品質量審計者。
對每乙個階段或者關鍵點的產出物(工件)進行檢測,評估產出物是否符合預計的質量要求。關注各階段的評審和測試缺陷。
是產品質量檢查者。
表一qa與qc
基礎資訊對照表
在了解了qa和
qc的不同之處後,那問題來了:qa和
qc該如何在專案各階段中既關注職能領域、又共同為專案的質量目標協調、一致地開展工作呢?
根據不同的專案階段,筆者將二者的工作內容和工作產品進行了劃分,如表二所示。在實際專案中,qa或
qc工作人員,可以依據專案所處階段,快速清楚本階段的工作內容和產出物。
類別
專案階段
qa
qc
工作內容
工作產品
工作內容
工作產品
專案啟動
定義產品質量指標
參與專案規劃的評審
產品質量指標
專案計畫
編制qa
計畫過程審計
專案qa
計畫qa
階段工作報告
測試計畫管理
參加評審
測試計畫
需求分析
階段交付物審計
過程審計
qa階段工作報告
分析測試需求
參加評審
測試需求
設
計
階段交付物審計
過程審計
qa階段工作報告
設計測試用例
參加評審
可能的話參與部分設計
測試用例
編
碼
階段交付物審計
過程審計
qa階段工作報告
單元測試
整合測試
參加評審
缺陷報告
測試報告
測
試
階段交付物審計
過程審計
qa階段工作報告
整合測試
系統測試
效能測試
回歸測試
測試管理工作
使用者手冊驗證
測試指令碼
缺陷報告
測試報告
使用者手冊驗證報告
實
施
產品質量狀態評估
過程審計
專案交付審計
產品質量評估報告
qa階段工作報告
內部接收測試
驗收測試
缺陷報告
測試報告
表二qa與qc
各個階段工作內容及工作產品對照表
質量保證(
qa)與質量控制(
qc)的關係,一直以來都比較讓人困惑。本文主要是將二者在實際工作中,如何有效完成各自的使命進行了闡述。當然了,在不同公司,可能有不同的適用情況,所以,本文介紹的內容,僅僅只是個例子,供拋磚引玉用。
雖然不同公司有不同的情況,但是原則都是一樣的。
qa是從過程和標準來控制開發過程,從而達到提高軟體質量的目的。而
qc則是通過測試、評審等驗證、確認手段來發現軟體中的缺陷,並確保該缺陷得到解決,從而達到提高軟體質量的目的。
軟體開發過程
1.程式設計師寫出自認為沒有bug的 2.軟體測試,發現了20個bug。3.程式設計師修改了10個bug,並告訴測試組另外10個不是bug。4.測試組發現其中5個改動根本無法工作,同時又發現了15個新bug。5.重複3次步驟3和步驟4。6.鑑於市場方面的壓力,為了配合當初制定的過分樂觀的發布時間表,...
軟體開發過程
1.程式設計師寫出自認為沒有bug的 2.軟體測試,發現了20個bug。3.程式設計師修改了10個bug,並告訴測試組另外10個不是bug。4.測試組發現其中5個改動根本無法工作,同時又發現了15個新bug。5.重複3次步驟3和步驟4。6.鑑於市場方面的壓力,為了配合當初制定的過分樂觀的發布時間表,...
軟體開發過程
軟體生命週期 1 問題定義 使用者需要解決什麼問題?2 可行性分析 使用者需要解決的問題是否可行 技術可行性 市場可行性 3 需求分析 將使用者提出的問題進行細化 4 系統設計 確定細化問題的實現方法 5 編碼 依據需求和設計穩定進行開發,解決問題 6 測試 驗證是否已經解決使用者提出的問題 單元測...