因緣際會之下
我剛開始工作的前兩年做的是QA(或是有些公司會稱作 Software Engineer in Test)
這個我覺得很常被誤會的位置
所以今天我想來介紹一下QA這角色還有軟體測試
QA是Quality Assurance的意思
顧名思義 就是要確保軟體的品質, BUT
軟體的品質是整個開發團隊的責任
QA不是拿來怪罪的
QA的責任是要站在客戶甚至是所謂的super user的立場去確認這個系統合不合客戶的需求
注意 是 客戶的需求不是PM的需求
不只是要驗證do thing right 還要思考的是 do right thing for the user (基本上應該是每個團隊的成員都要有這個sense就是)
而Developer通常會陷入技術導向的盲點當中而忽略了需求
這時候QA可以扮演一個中間人的角色
所以QA一樣要從需求分析討論開始
確保需求面是對的
並且參與developer的design review
看看實作設計層面有沒有問題
同時間他也要針對requirement, spec, design甚至是code本身來開test case(有各種方法論來開test case,甚至像是探索性測試)
並且讓大家review test case
在developer開發的同時
QA要準備好測試的環境以及測試的資料
尤其很多時候要去模擬客戶的環境 架設環境也是挺麻煩的
然後開始執行test case
並且自動化每個case以便之後做regression
所以可以看到有手動測試也有自動測試的部分
有些公司會特別去找自動測試的工程師
但在不分的情況下
以前我們都是自己來
包含自動deploy 各種script 自動化測試框架 report產生等等
某方面來說彈性很大 表現機會也很多
而且在QA的訓練下
大部分會從黑箱的角度看系統
這對如何了解一個陌生的系統也是種訓練
而我那時候也可以會去看程式碼找問題
進一步可以做到白箱測試
曾經耳聞有些公司不讓QA看程式碼
我是真心不懂這心態是什麼......
QA的自動化會都是整合測試
RD除了確保功能要對之外
則要負責單元測試
確保程式最小組成單位是對的
QA可以往下cover到中間元件的整合
developer也可以往上cover到這方面的測試就是
但最上層的測試通常還是QA為主
我那時候QA還會負責deployment跟release
其實我覺得也包含了像是現在DevOps的角色的責任
總之 一個好的團隊
我覺得QA的存在是必要的
可以給團隊從不同的角度看事情
developer跟QA的合作氣氛也可以看出這團隊的文化如何
而我為什麼最後又從QA轉到developer
這又是另一個故事了......