2017年10月10日 星期二

(一) Google軟體測試之道 -- 簡介




軟體工程師(software engineer, SWE)
--編寫給使用者用的功能程式碼
--需要建立設計文件,選用資料結構與整體架構
--也要寫許多測試碼,測試驅動設計(TDD) 單元測試,參予建構小/中/大型的測試

軟體測試工程師(software engineer in test, SET)
--著重在"可測性"與一般測試基礎架構
--需要檢視設計而且特別重視程式品質與風險
--會調整測試碼,使之更容易檢測,並編寫單元測試框架與自動化的部分
--他們是SWE的夥伴,只是比增加新功能或效能更重視增進品質與測試的涵蓋面(不是為了使用者會用到的功能而寫)

測試工程師 (test engineer, TE)
--會先由使用者的角度,然後才是由開發者的角度來進行測試
--某些TE會編寫自動化腳本的程式碼與驅動使用情境,或是模仿使用者操作行為的程式碼
--整理SWE和SET的測試工作,解釋測試結果並推動測試的執行,特別是在專案後期,壓力轉向軟體發行的時候
--是產品專家、品質顧問、風險分析者


SET關注的是開發者,個別功能的品質是關注的標的,而讓開發者可以容易地對他們所寫的程式碼進行測試,是SET的主要工作重點。
假設SWE和SET都充分地做好了模組與功能的測試工作,接下來的工作就是了解這一組可執行碼與資料是否可以運作得很好,以滿足使用者的需求。
TE的重點則是使用者層次的測試,需要再確認每位開發者是否已盡責地將自己所負責的部分做好了。

金絲雀通道 (Canary Channel): 用來檢驗日常所建置出的,未達釋出水準的版本
開發通道 (Dev Channel): 開發人員可以用在每天工作上的版本(這些通常是每周會產生,且可以持續正常運作並通過一些檢測的版本)
測試通道 (Test Channel): 基本上是通過一個月以上的持續檢測,而且讓工程師們在大部分的情況下能放心在實際工作中使用的版本
釋出通道 (Release Channel): 通過內部使用及團隊所設定的品質檢核標準的穩定測試版本

小測試會在一個完全虛擬出來的環境下,測試一小段單元程式碼
中測試則在虛擬或真實的環境中,測試較多的模組或單元間的互動程式碼
大測試則在實際的產品運行環境,使用真實可取得的資源來測試所有的程式碼