QA、QC,傻傻分不清楚!
文章推薦指數: 80 %
簡單來說,品質保證——即QA的目的,是要在產出產品的過程中,使用正確的方法來進行,而QC 的作用,則是當產品完成時,會去檢查所產出的產品是否正確。
從 ...
移至主內容
文/王建興
|
2014-03-06發表
自己從事軟體開發工作不算久,但也有十幾年的時間了,在這十幾年來,有時候會看到一個奇怪的誤解,關於這個誤解,我時常覺得,有點不吐不快,但是,似乎又不是三言兩語可以說清楚,所以,在這十幾年來,也就一直很少在工作場合裡,向合作的伙伴或同事解釋。
直到最近,覺得還是可以利用撰寫一篇文字的方式,來表達我的看法。
這個誤解是什麼呢?其實也是我們很常會遇到的,就是關於QA(QualityAssurance)和QC(QualityControl)的分別。
我在工作中最常遇到的情況是,把軟體測試的部門或團隊稱為QA部門。
或許在有些人的想法裡:「QA就是品質確保,而軟體測試的目的就是要確保品質啊!軟體測試當然是屬於QA的工作呀!」
在之前,我甚至看過大學教授在軟體測試的課程中,將軟體測試工作列為QA領域的一環。
好吧,就且看我一一道來。
從軟體品質的定義,來細部剖析QA和QC之間的不同之處
首先,什麼是品質?
對軟體產品而言,品質就是其功能及特性滿足所制定需求的能力。
我舉一些更實際的例子,像是軟體規格裡的全部功能都有、所有的功能執行起來都不會發生錯誤、軟體不會突然意外的異常中斷、還有軟體執行的效能符合制定的要求、……等等。
簡單地說,像是該有的功能都有、也都能正常運作、而且還運作得夠快,就是品質好。
想到品質,許多人腦海中首先會浮現的,恐怕是像「ISO品質標準」之類耳熟能詳的詞語。
沒錯,ISO,也就是國際標準化組織,它制定了許多標準,包括我們也同樣時常聽到的ISO9000的品質標準。
有些公司會強調,他們已經通過ISO9000的標準,表示他們的產品是有品質的。
在ISO9000裡,對QualityAssurance的定義是:「為了提供實體滿足品質要求的足夠信心,而實作的所有計畫性以及系統性的活動」。
同樣的,ISO9000裡也定義了何謂QualityControl,也就是「為達品質要求而採用的作業性技術及活動」。
或許看完這定義,你還是不見得能理解其義。
簡單來說,品質保證——即QA的目的,是要在產出產品的過程中,使用正確的方法來進行,而QC的作用,則是當產品完成時,會去檢查所產出的產品是否正確。
從這個角度,你可以回頭來檢測一件事‥我們所熟知的軟體測試工作,究竟是屬於QA?還是QC的一部份呢?
答案其實很明顯,軟體測試是透過檢測已完成的軟體,找出其中不符合軟體規格的瑕疵,以便有機會予以修正,所以,測試工作是在檢查所完成的軟體產品是否正確,因此,這應該屬於QC工作過程的一部份。
如果了解到二者的差異,你可以很容易明白,QA的重點放在製造方法,有了正確(能滿足品質要求)的方法,照著執行,就應該要能夠產出滿足要求的產品。
而QC的重點,則放在開發完成的結果,無論如何,針對最後的產物來做檢查,看看是否當中能夠滿足要求。
所以說,QA是事前的、是在產品完成之前的整個過程,而QC是事後的,當產品完成後檢查工作。
QA目標是在預防產品發生瑕疵,而QC則在找出完成的成品中潛在的瑕疵。
在有些人的軟體開發工作中,或許大家所接觸到最多的,其實可能都歸在QC裡頭,因為大家所意識到的軟體品質,大多都是透過軟體測試來達成。
開發團隊透過各種型態的測試,來找出待測產品中所含的問題,並且搭配瑕疵追蹤機制,監看、管理瑕疵被找出來以及被修正、被檢驗的情況。
那麼,在軟體工作中的QA,又該是什麼呢?
我們回歸到原意,QA的重點是方法,而產出軟體的方法是什麼?就是我們的產品開發方法及開發流程(process),或者,甚至像所用的技術,都在範圍內。
所以,在軟體QA中的工作,主要應該是確保使用了正確的開發方法、流程,以及技術、……等等。
所以說,執行QC工作的人員,通常是開發團隊中的成員,受團隊管理者所領導及管理,因為QC工作通常是軟體開發階段中的一環。
但QA工作人員通常是獨立於開發團隊之外,因為,他們關心的重點,主要包括:像是所用的方法和流程是否正確,是否能更好,以及開發團隊是否有依據所制定的方法、流程、甚至是規範,來開發軟體。
產品開發規範的制定與落實,屬於軟體品質保證的範疇
我們在軟體的開發過程,可能會制定很多規範,其中包含了一些小地方,像是程式碼中的命名慣例、排版原則,或像版本控制系統的使用規範,大到軟體需求規格書的寫法、設計書的內容、測試案例、……等等。
更大的範圍,則可能涉及到開發的方法和流程,例如,採XP方法開發,所以,必須要做搭檔編程、也必須測試先行、更必須執行重構、……等等。
而且,我們為什麼需要這些規範?是因為,我們相信這麼做,可以產出符合品質要求的軟體。
因此,這些規格、流程,都應該是產出正確軟體的方法,所以,讓開發團隊使用正確的方法,並且,確保開發團隊都照著這些方法來做,就應該是落在QA的工作範疇裡。
單就以開發流程來看,QA的工作過程中,可能就包括了:制定流程、監控管理開發團隊是否依據流程來進行工作,以及收集開發團隊對於流程的回饋,進而甚至持續改善流程。
因此,QA的工作中,可能就包括了為數不少的審查,例如:審查計畫書、審查規格書、審查設計書、審查程式碼、審查測試案例、……等等,它們施行的目的,就是在於審查開發各階段的各項產出,是否符合所制定的規範。
倘若沒有,代表開發團隊並沒有採用了「正確的方法」,那麼產品的品質自然可能受到影響。
所以說,QA是一個預防性的工作,同時是個事先性質的工作,在產品開發過程中的前、中、後期,都透過不斷的審核過程,來確保開發團隊依循流程、依循方法、依循規範。
正因為QA的工作如此,所以,QA人員自然是獨立於開發團隊之外,因為,他們是輔助開發團隊的角色。
人們對於品質確保意義有不同的理解,因此產生認知上的歧異
QA和QC的工作,雖然最終目的都是希望產品滿足所規範的品質要求,兩者之間,卻有著諸多不同的特性。
或許,從QA字面上的「品質確保」意思,讓許多人因而誤解了QA的性質,進而造成了目前QA、QC混為一談的情況。
另一方面,QC的工作在大多數人的開發生活中都會接觸到,但是QA卻相對少的多,然而,它的作用事實上並不小。
如果能明白它的真正作用,或許,也可以讓一些開發團隊開始重視QA吧。
專欄作者
王建興
目前在一家網路應用軟體公司擔任技術長的工作,專長是物件導向設計以及Internet應用系統的開發。
他過去的研究興趣包括:點對點網路、分散式網路管理、行動式代理人、感知網路。
從企業應用軟體系統,到個人行動裝置上的應用,他都有一些開發的經驗。
並且對於網路創業及網路應用的發展趨勢,持續保持高度的關心。
熱門新聞
壽險公會保險存摺正式上線,讓保戶可一站查詢所有人身投保資料
2022-06-01
Office零時差漏洞讓駭客執行惡意指令,關閉巨集也不見得擋得了
2022-05-31
Windows11功能更新使趨勢科技部分安全軟體功能失常
2022-05-30
微軟本月15日將正式停止支援IE11
2022-06-01
中國Gitee著手審核開發者所上傳的開源程式碼
2022-05-31
四月最張狂的勒索軟體是Lockbit2.0
2022-05-30
研究人員發現最新WSL惡意程式能竊取密碼、瀏覽器cookies
2022-05-30
蘋果宣布調薪,最低時薪提高為22美元
2022-05-27
Advertisement
專題報導
老牌鋼鐵廠的敏捷舞
6年SRE老手為何仍大當機14天
【從端到端數位化,邁向以顧客體驗為核心】玉山金控金融即服務戰略2.0
解放政府行動力
DPU走入企業應用
更多專題報導
延伸文章資訊
- 1質量保證 - MBA智库百科
質量保證(Quality Assurance; QA)為使人民確信某實體能滿足質量要求,而在質量體系中實施並根據需要進行證實的全部有計劃、有系統的活動,稱為質量保證。
- 2品質保證- 教育百科
名詞解釋: 品質保證是指組織機構透過一套事先規劃好的系統化活動和標準,以期產品或服務可以達到應具備的 ...
- 3quality assurance - 品質保證 - 國家教育研究院雙語詞彙
品質保證 · quality assurance · 名詞解釋: 品質保證是指組織機構透過一套事先規劃好的系統化活動和標準,以期產品或服務可以達到應具備的品質要求。 · 參考資料: Willia...
- 4什麼是品質保證QA(Quality Assurance)? - TTA台灣科技驗證
品質保證的目的,在於確保產品在一定的時程及成本下,能達成預期的品質水準與可靠度,也是建立品質管制方案的墊腳石,以維持產品由製造至使用壽限之間的品質與可靠度。
- 5品質保證
品質保證(又稱品質確認,英語:Quality Assurance,簡稱QA)是一種防止製造產品出現錯誤和缺陷並避免在向客戶交付產品或服務時出現問題的方法; ISO 9000 將其定義 ...