QA、QC,傻傻分不清楚! - iThome
文章推薦指數: 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應用系統的開發。
他過去的研究興趣包括:點對點網路、分散式網路管理、行動式代理人、感知網路。
從企業應用軟體系統,到個人行動裝置上的應用,他都有一些開發的經驗。
並且對於網路創業及網路應用的發展趨勢,持續保持高度的關心。
熱門新聞
全家史上最大規模POS改造,不只砸上億導混合雲,雙模式三大設計一機通吃大小店種和戶外擺攤
2022-09-15
【資安週報】2022年9月12日到9月16日
2022-09-18
Uber疑似被駭,內部多項系統遭取得權限
2022-09-19
營業秘密保護不只是高科技業需要,台積電建議金融、旅遊、餐飲服務業也應及早建立保護制度
2022-09-18
Akamai攔下每秒超過7億封包的DDoS攻擊
2022-09-16
與Nvidia關係決裂?EVGA退出顯示卡市場
2022-09-19
以太坊合併後,GPU挖礦已幾乎無利可圖
2022-09-19
英特爾Pentium、Celeron低階筆電處理器2023年將改名IntelProcessor
2022-09-19
Advertisement
2022iThome鐵人賽
專題報導
iThome2022資安大調查(下)
iThome2022資安大調查(上)
【iThome2022CIO大調查(下)】各產業數位轉型加速,IT大步邁向雲原生
分散式RAID躍居主流儲存應用
【iThome2022CIO大調查(中)】企業IT新戰力
更多專題報導
延伸文章資訊
- 1品質保證- 维基百科,自由的百科全书
- 2什麼是品質保證QA(Quality Assurance)? - TTA台灣科技驗證
品質保證的目的,在於確保產品在一定的時程及成本下,能達成預期的品質水準與可靠度,也是建立品質管制方案的墊腳石,以維持產品由製造至使用壽限之間的品質與可靠度。
- 3品質保證與品質管制:品質管理的差異為何? - 海科生技
對於大多數生命科學和製造業的公司而言,品質保證(QA)的功能獨立於實際製造和營運,品質控制(QC)也是如此。但是在品質製造之中,這兩個基本組成部分之 ...
- 4品質管理大有學問!你所不知道的QA、QC - 百佳泰Allion Labs
就定義上而言,QC 主要是事後的品質檢驗類工作為主,抱持著產品存在著不良的心態,期望發現問題並找出錯誤。QA 則主要是事先的品質保證類工作,以預防為主,期望降低錯誤的 ...
- 5品質概論
品質保證(Quality Assurance,QA)則是為確保組織對顧客所作的各種承諾得以實現的相關活動,這些承諾包含合約、廣告、產品說明、政府與相關組織的要求、該行業不成文 ...