“測試架構師”的商業價值與職能
這篇文章主要說明測試架構師的核心職能、技能與專業的培養。
“測試”的領域對於許多人來說是的聯想是低階的工作、重複性的工作、驗證功能正不正常。
台灣軟體業對於”測試”的專業領域其實並未深根,
筆者13年前成為”測試”工程師時,也抱有類似的疑問。
相對”研發”工程師 (RD or Developer)來說,似乎研發工程師比較有專業?
因此,我們主要討論測試工程師的專業發展。如何朝向”測試架構師”的專業努力!
軟體品管
測試還需要”測試架構師”? 測試架構師在美國、中國大型聯網都有設立測試架構師的職務,但是在台灣其實還在萌芽。
回答這個問題之前,看看軟體品管涵蓋的領域。
筆者推薦引用 ISO 9126,該標準將”軟體品質”定義為六大領域,每一個領域又分為3~5子項目不等。
- 功能性: 功能性中的”Suitability”就是大多人比較熟悉的”測試”。也就是針對功能運作進行測試。但是,功能性測試其實還包含相容性測試、資訊安全測試等
- 可靠度: 產品是否有容錯設計、當遇到錯誤時的處理與回復。
- 使用容易度: 容易了解、容易學習、容易操作與維運。
- 效率: 應用系統可以處理的工作量、系統占用的系統資源
- 維護: 容易分析問題的所在、需要修改時能有彈性、容易測試、
- 相容性: 可以安裝在各種平台、可以針對平台環境做調整等
這六大領域的品質管理,在沒有專職測試架構師的組織情況下,
多半是研發經理、架構師、測試經理等相互分擔這些工作,
總之,不管有沒有這樣的專職 “測試架構師”,這些品質管理的工作是存在的
測試架構師
這是ISTQB品管協會制定,測試架構師可以完成哪些事情呢?
測試架構師的使命
筆者自我其實朝向測試架構師努力,筆者從 2014起開授軟體品管技術相關課程,累積150+授課時數,
其實是為了下列目標:
- 研究相關測試技術
- 培訓測試團隊
- 給予測試方向的建議
測試架構師是一個跨組織沒有從屬關係的職能,因此需要是測試技術的傳道者,靠的是專業影響力
在產品設計初期,針對產品設計給予產品品質上的建議(參考 ISO9126等面向),接著對於測試團隊給予建議,
筆者分為兩大類,一個是測試的重點,必須跟這次產品所提供核心的商業價值連結。
採用最新的測試自動化測試技術並無法保證軟體品質!
- 測試的重點: 測試的效果。效能? 安全? 可靠性? 可移植性?
- 測試的技術指引: 測試的效率。這部分包含用怎樣的測試工具、測試平台、哪些測試個案需要自動化、自動化測是採用的 framework與程式語言等
特別要區分的是測試重點與測試技術困難,這兩者是沒有關聯的。
許多情況下,專業上討論測試技術的困難,但是卻不是產品服務需要測試專注的重點。
因此要區分測試重點與測試技術難點,就必須對於產品所帶來的商業價值有所認知。
當然,測試架構師不能只是”講”,還必須在技術上帶領與培訓測試團隊進行下列測試:
- 功能測試
- 自動化測試
- 效能測試
- 資料庫測試
- 單元化測試
另外在測試的”預防”上,還要做到
- 識別需求的缺陷
- 測試的可行性
- 測試的技術困難
- 測試流程的改善
- 規劃產品的測試策略與測試技術藍圖
測試架構師的經驗培養
商業價值
一個好的測試架構師,不能僅僅偏向於特定技術的專研,
例如 UnitTest Coding 很專業,可以是一個好的測試開發專家
例如 Automation Testnig,也可以是一個好的測試專家
這些是測試架構師的基礎,有助於未來在選擇測試架構或是評估產品測試的技術困難
但是,測試架構師還必須具備商業的判斷力
商業判斷力指的是針對該產品與服務所要提供的商業價值,
設計或是規劃產品測試活動應該要投入資源的地方。
例如:產品以產品效能為主要的商業宣傳。因此就必須針對產品效能進行各種測試。
這時候如果將測試活動都投入在資訊安全測試,那麼反而對產品的商業價值是沒有顯著幫助的!
因此ISO9126的六個面向,哪一個面向是這個產品服務所要專注的主軸,必須要適當的排序與優先權。
因為測試資源是有限的、專業的時程也是有期限,
因此在有限的資源下,如何將測試活動專注在必要的商業價值,提升產品品質,
也是測試架構師的角度可以給予測試團隊建議。
多領域與產品測試經驗
軟體的服務通常涵蓋 Desktop application, Web site, Cloud hosted service, Mobile等
因此有廣泛的產品測試經驗會有助於整體的系統思考。
測試技術的專研上的領域又可分為:
- 功能測試
- 自動化測試
- 效能(網站、系統、資料庫)測試
- 單元化測試
測試開發工程師或是測試專家會對某項特別的專精。
進一步,測試架構師會有廣泛的了解而對1-2項特別的專精。
除了需要對於特定領域的專精,也必須廣泛的對於測試技術、產品服務有廣泛的了解。
跨產品與廣泛技術的了解與經驗有助於產品品質架構的思考。
舉例來說,許多人都會對”網路”有興趣。
一個開啟瀏覽器瀏覽網站的動作,對於測試架構師來說就會思考到背後的運作
- 啟動瀏覽器
- 瀏覽起發出 HTTP protocol 請求
- DNS query 詢問主機
- IP address routing 到正確的網站主機
- 網站收到TCP/HTTP訊息,並且回應
- ……
當我們說網站效能有問題的時候,
就可以從前端(瀏覽器),網路(TCP/HTTP/Router)、後端(資料庫與系統服務)等去思考與追查
傳教士
不斷的精進測試的專業,並且回顧目前產品與服務是否有可以運用到的地方。
提升測試團隊的測試效率與測試效果。
由於”測試架構師”並無從屬關係。靠的是”傳教士”精神。
透過不斷的溝通、討論、培訓等過程,發揮測試專業影響力
因此,寫作、表達與培訓的能力十分的重要。
上述的所有能力全部都具備,還必須再加上傳教士的精神與溝通能力
(筆者:軟體測試領域所傳授專業課程)
測試領域的”專家”
進階到測試領域的專家,筆者認為有三個方向
某產業領域的測試專家
有可能是銀行業、流通業、防毒軟體業等。
由於熟悉該行業的產業知識,熟悉客戶行為與環境,
所以可以很快的指出設計的問題
也可以在問題發生時指出錯誤所在
並且熟悉該領域相關的測試工具與流程。
測試技術專家
這類的專家比較是因為經歷過多種不同的專案類,
累積多種測試的經驗、工具、流程等
進一步知道哪些狀況下可以採用哪些測試工具與流程較為適當
對於效能測試、安全性測試、自動化測試都有一定實作的經驗
不管是哪一種專家,共通性就是 “測試領域”持續精進
某領域的測試專家是針對特定產業長期的耕耘,
測試技術專家是在經歷過多種不同的專案類型後累積的各種測試經驗、工具、流程等。
一般來說在公司組織中,因為工作的分配,會先成為該模組或是產品領域的專家,
接著透過不同產品開發的經驗,會慢慢累積其他的測試經驗成為測試技術專家。
要強調的是,”測試”是一個專業領域,要不斷的提升專業技能,而非一成不變的做手動重複性的測試。
測試架構師的修練
測試架構師的修練是一個漫長的道路。
從一開始的測試工程師負責一個 module 到一個產品
從負責功能性測試、到資訊安全測試、到效能測試與調教等
從企業產品線、消費者事業群、雲端產品線、手機服務等
從各個面向思考怎樣才是讓測試有效率、有效果的測試技術與策略。
解決商業所帶來的技術上問題。
從每一個 defect解決,到一個產品出貨、到跨產品測試技術與架構的指引。
這篇文章希望給 “測試”工程師一個專業努力的方式,筆者還在努力中…
PS. 另外可以參考這篇 軟體品管測試的專業領域