品質(Quality),一個大家常常說出口的名詞。大家在面對各式各樣的產品時,常常提到的是Bugs很多,所以應該要提高產品的品質。不過,對於品質這個名詞,其代表的意義遠遠不只於Bugs一事。對於品質一詞,有很多不同的解釋,其中有一個說法是"Quality是帶給特定人士的價值"。這個說法的重點在於品質是因人而異的,所以我們必須要知道產品實際客戶的需求,透過產品滿足他們的需求,並帶給他們所需的價值。
大致來看,Quality可分為兩個部分,一個是設計的品質(Quality of design)。這個部分強調的是如何設計出一個對客戶適用的產品(Fitness of use),屬於產品設計的範疇。另外一個則是符合規範的品質(Quality of conformance),也就是實際產出的產品是否遵守原先的設計,屬於實作的範疇。在實際的工作中,Quality of conformance屬於專案管理的部分,而Quality of design當然就屬於產品管理的部分。然而因為專案管理包含在產品管理內,所以Quality of conformance也屬於產品管理的一部份。對於品質的管理,首先公司必須訂定品質的要求標準。當然,客戶對此也會有自己的標準。一般而言,公司訂定的標準必須高於客戶的標準,才能順利驗收。對於像我們這類非代工的產品,並無法事先確認客戶為誰,所以在品質標準的訂定上面,就需要用比較嚴格的方式或採用業界普遍接受的標準。而為了達到要求的品質,通常透過品質保證(Quality Assurance, QA)及品質控制(Quality Control, QC)兩個不同的手段。
簡單來說,QA是指透過在產品發展的各個流程中採用必要之控管手段,減少對產品品質的負面影響。而QC則是確保最後製作出來的產品符合公司品質的要求,也就是我們比較常聽到的文件確認與功能測試。QA與QC的概念很簡單卻也很重要,不過實際上很多公司(尤其不是製造業的公司)無法分別這兩者,甚至認為功能測試就是確保品質的唯一方法。關於此點,有興趣的人可以去104查看各公司的職務說明就知道了。如果沒有QA,僅僅靠QC只是避免有問題的產品交付到客戶的手上。但是現實是礙於時間與訂單的壓力,最後QC不過的產品仍舊有可能會交付到客戶的手上。所以不管從公司或是客戶的角度來設想,除了QC,QA是更為重要的一環。QA作的好,除了可以讓產品更容易符合QC的要求,也可以增加客戶滿意度並減少開發與維護的成本。
所以,品質到底包含哪些項目?產品的品質大概可以從下列幾個方向來加以衡量:
* 可了解性(Understandability)─包含產品的設計、操作介面與手冊等相關資訊都能讓使用者輕易了解。
* 完整性(Completeness)─必須完整地提供必要之功能。
* 準確性(Conciseness)─必須準確地提供必要之功能,不多也不少。
* 可攜性(Portability)─必須在不同的環境下都可以正常運作。關於此點應該是考慮到實際支援的環境,畢竟現實中不可能製作出在所有環境都能運作的產品。
* 一致性(Consistency)─在產品的設計與說明上,都必須提供一致性,也就是不能產生前後矛盾的現象。
* 可維護性(Maintainability)─維護包含功能的新增與修正。如果產品不能維護,大概很快就被市場淘汰了。
* 測試性(Testability)─設計與製作出來的產品必須能夠輕易加以測試。為了達成這個目的,通常在設計產品的時候就必須把測試需求一併加以考量。
* 可用性(Usability)─產品要實際有用才有價值。很基本的概念,但是實際上卻還是有很多不實用的產品。
* 可靠性(Reliability)─產品經過長時間的運作也不會失效。另外當環境變動時,產品依舊能夠正常運作。
* 架構(Structure)─好的架構可以提供良好的可維護性。
* 效率(Efficiency)─產品如何有效率地達成既定的功能。以軟體而言,減少包含CPU與記憶體等系統資源的消耗是一個很重要的項目。
* 安全(Security)─不管是不是安全相關的產品,目前對於各式產品的安全需求越來越嚴格。產品必須保護所處理資料的安全,並避免遭受惡意人士的破壞。同樣的,為了達成這個需求,在產品定義與設計的階段,就必須一併考量安全的需求。
最後,前面提到QC通常是透過產品功能測試來確保最後產品符合原先的設計(另外還有包含符合客戶的需求)。其實在QA的過程中,也會進行產品的測試,只不過這些測試並不是針對產品功能的部分。也就是說,測試其實包含許多不同的項目。以軟體而言,大致上可以分為
* 單元測試 (Unit Testing)
* 功能測試 (Functional Testing)
* 效能測試 (Performance Testing)
* 壓力測試 (Stress Testing)
* 失效測試 (Fail over Testing)
* 可用性測試 (Usability Testing)
* 使用者測試 (User Acceptance Testing)
* 安全測試 (Security Testing)
有關測試這個議題,我會另再擇期跟各位報告。
這個分享內容的重點在於產品品質是全方面的議題,而不僅僅只是bugs的多寡。另外,產品測試包含各種不同的測試項目,而所有這些測試項目也僅是確保產品品質的方法之一而已。
沒有留言:
張貼留言