l

2013年4月3日 星期三

我就是不會寫程式才來做測試的啊

Apr. 01 09:58~11:28

image

相較於軟體開發(寫程式)而言,在台灣軟體測試一般而言被歸類在屬於比較不需要技術能力的工作。很多從事軟體測試的工程師甚至很直白地說出:「我就是因為不會(不喜歡)寫程式所以才來做測試的工作啊」。在台灣由於很多軟體測試的工作目前都還是採用人工測試的方式進行,所以才會給人造成一種「因為不擅長寫程式,所以就來做測試吧」的刻板印象。

***

Microsoft怎麼做

在《How We Test Software at Microsoft》這本書中提到軟體測試工程師(Software Test Engineer, STE)軟體測試開發工程師(Software Development Engineer in Test, SDET)的差異。前者剛好是目前在台灣對於軟體測試工作的看法,後者則是所謂「需要會寫程式的軟體測試工程師」。書中第24頁有比較這兩者的差異:

SDET的工作

STE的工作

開發測試框架 撰寫測試計畫(文件)
開發安全或效能測試工具 撰寫測試案例(文件)
自動化API或protocol的測試 手動測試
參與除錯工作 自動化核心的測試案例
尋找、除錯、提出、重測bug 尋找、除錯、提出、重測bug
參與設計檢閱 參與設計檢閱
參與程式碼檢閱

書中還提到在微軟公司STE與SDET這兩個工作職稱的人數比例,從1998年的75%比25%,演變至2007年的7%比93%。也就是說,截至2007年在微軟需要會寫程式的SDET的工作職位遠多於傳統以人工測試為主的STE。

看到這裡不曉得鄉民們有什麼感想?Teddy的感覺是,SDET的角色更偏向敏捷開發團隊中所謂的軟體測試工程師,而STE比較像傳統QA部門裡面的軟體測試工程師。也就是說從SDET與STE人數的消長,也可看出一家公司軟體開發方式的改變(逐漸偏向敏捷開發方法)。

***

Google怎麼做

在《How Google Tests Software》書中介紹Google的軟體測試方式,微軟的SDET角色在Google中稱為SET(Software Engineer in Test),但Google還有另一個與測試有關的角色稱為TE(Test Engineer)。依據書中的說法,TE的工作和SET的工作類似,但有著不同的關注點。

TE主要是從使用者的角色來執行測試工作,其次才是從開發者的角色來思考測試。TE是產品專家、品質顧問、風險分析師。有些TE會花主要的時間在做測試自動化的工作,但也有一些TE只寫一點點自動化的程式。TE的自動化工作主要是針對end-to-end自動化測試(功能測試、驗收測試等等),而SET則專注在單元測試、測試涵蓋率、增加設計的可測性與測試自動化。

書中第4頁有一句滿有趣的話:

The first piece of advice I give people when they ask for the keys to our success: Don’t hire too many testers.

這裡所說的tester是指傳統以人工方式執行測試的測試工程師(可視為微軟的STE角色)。為什麼不要請太多的STE?因為通常人工測試的人多了之後,公司便會減少或是忽略測試自動化的投資。而軟體工程師也可能會因此偷懶,把自己應該負責的確保軟體品質工作丟給STE。

但是,品質不是測出來的,而是做出來的。所以一旦軟體工程師一開始就忽略品質,找更多的STE只會耗費公司更多的成本,無法讓軟體做得更快、更好。

***

結論就是,會寫程式的人也很適合當軟體測試工程師。測試人員的直覺與經驗固然重要,但若同時具備撰寫程式(測試自動化)的能力,則是如虎添翼,大大增加戰鬥力很棒

***

友藏內心獨白:SDET、SET、TE這種人要去哪裡找啊。

4 則留言:

  1. 作者已經移除這則留言。

    回覆刪除
  2. 軟體測試(或者廣泛點說測試)也是一個獨立的 domain, 跟是不是懂自動化沒有一定的關係. 懂測試這塊的人滿多的, 不過在一般公司應該不會特別編制這樣的人員XD 剛好有一篇相關的文章分享一下: http://zapionator.blogspot.tw/2013/03/blog-post.html

    回覆刪除
  3. 如果只會點點畫面看結果對不對就叫測試人員的話,我請工讀生來不就好了?

    回覆刪除