如何做個好的測試工程師

你心目中的測試工程師是做什麼的?或許很多人的答案是「按照測試文件的步驟進行,並且產出報告」。事實上,我相信這是大部分的老闆心中所想像的畫面,無怪乎想到測試工程師的時候都直接聯想到廉價的工作(恩,聽說某家科技公司把所有的QA部門都裁了 ...)。講真的,這樣想的人,也太小看測試工程師了。下面我列出我心中對測試工程師的標準,這樣以後再有新進同事近來擔任測試工程師的時候可以拿來當作教材。話先說在前面,這只是我個人的經驗所整理出來的文章,所以難免會有缺漏,以後有想到的話再補充吧(還要加上我有動力的話 ... )

  1. 要做出有用、明確的報告。

    什麼叫作有用、明確的報告?先講一下我之前的故事(之前好像也在 Blog 提過了,不過發生過很多遍,人物也都不同)。有人找我處理電腦上的問題(這似乎是念CS的原罪),只留下一句話:「電腦無法上網了,會不會是中毒了啊?」這是我最討厭聽到的問題!(不過已經見怪不怪了,所以還是可以控制情緒)為什麼討厭這樣的問題,因為理由太多了!!就好像跟醫生說肚子痛,可能發生的原因從脹氣、拉肚子,一直到胃癌都有可能,一句肚子痛,你是要醫生給你什麼答案。電腦無法上網,可能是電信公司的問題(我最常推卸的對象,真是對不起電信公司,不過這可以讓我用最短的時間結束對話)、網路設定問題、家用網路設備的問題,當然也有可能是中毒。那不公平,一般人沒有相關的專業知識啊,所以醫生要負責做檢查的工作!沒錯,醫生要負責做檢查,在軟體產品上,做檢查的責任就是在測試工程師身上

    我在這邊說的報告,不是那種紙本,要寫的很囉哩囉唆滿足客戶需求的那種文件(當然這個技能非常重要),而是在跟開發工程師回報的時候,要很明確的講出到底發生了什麼狀況!死亡信息(Log)有哪些?是 Kernel Panic 還是 Segmentation Fault?請不要以一句「系統掛了」來總結所有的 Bug!並且還要根據 Log 做出初步的判斷,不要把開機以來的幾千行 Log 看也不看就直接貼給開發工程師。

    這不公平,我只是小小的測試工程師,我又搞不懂那些 Log 在寫什麼,整個產品的功能是什麼、架構如何?Well,一般來說,Log 寫的是英文吧?雖然我不否認很多開發工程師,包含我在內,Log寫的很爛,但還是可以讀吧?不了解整個產品?那你憑什麼擔任測試工程師?要重複操作,我找個國中生來就好了。測試工程師不能夠以不了解系統作為藉口,事實上,對整個軟體 Spec 的熟悉程度是必須達到甚至超過開發工程師的。

  2. 尋找、使用、並熟悉各式各樣可以用的工具

    毫無疑問,測試的工作有點煩瑣、步驟重複,難免給人浪費生命的感覺。事實上,有很多可以自動化的工具可以減輕測試工程師的負擔,像是 Script(VB、JAVA、LUA、PYTHON ... ),有些甚至還有GUI,聽過最誇張的例子,有人因為打魔獸世界而學會 LUA 的語言,被封為該公司測試工程師中最會寫程式的高手,恩,打電動是很重要的。那些東西我都不會啊,沒人教我。去好好打電動吧(笑)。拜託,你要設法去多看,多找找各式各樣的工具,會用 Google 吧?與其花時間在逛 Mobile01,多花時間找工具並且試試看吧。

    除此以外,測試工程師要儘量去熟悉各式各樣的觀察工具,如何量測網路流量?如何觀察網路封包?沒有 Wireshark 可以用的時候怎麼辦?如何灌封包?此外,拜託請多利用這些工具!Wireshark不單單可以擷取封包,還可以做出統計圖表,你知道嗎?沒事把那些軟體的所有功能都跑過一遍,會有很多意想不到的收穫。
  3. 使用自動化工具之前,麻煩請先了解它在做什麼

    這要回到公司實際發生過的案例。為了加速測試的工作,我們公司使用了 VB Script來執行操作,結果有新人來學習以後,就只學會如何操作 Script(這裡說的如何操作指的是如何操作滑鼠去選擇要跑的Script),根本不了解 Script 裏面所執行的項目,連改 IP 都不會改,只會跑過來問說這個 Script 執行後為什麼不會動。無怪乎我有一個公司的學長非常反對使用自動化測試工具,他說:「等你習慣自動化工具以後,你根本就不知道系統要怎麼操作了」,雖然我不完全同意他的堅持,但是這句話倒是一個非常不錯的提醒。

    很多公司已經有一整套過去強者所留下來的測試工具,雖然好用,但是一定要花時間去學習,不是去學習如何使用滑鼠,而是要深究內部找出所有的設定、操作方法。這樣就可以做出不同的應用。
  4. 盡可能的找出重現 BUG 的最短路徑

    OK,這很困難,我知道,但在可能的情況下,告訴開發工程師如何重現 BUG,而且進可能的簡化重現 BUG 的步驟。愈明確、愈簡短的步驟,開發工程師找到問題、解決問題的時間就愈短。如果 ABCDE 的步驟會產生問題,而你用確定(或是看起來)到C為止都是沒問題的,那可以試試看是不是只執行 DE 就會出事。這是測試工程師該有的精神跟態度,雖然這一步驟很大取決於經驗以及能力,但總要盡可能的往這方向前進。
  5. 熟悉一切的設定檔

    測試的環境千奇百怪,不同的環境非常可能有不同的設定檔,設定這些環境是測試工程師的工作。

愈寫愈短,代表愈來愈懶,所以微博興起果然不是沒有道理的。如果還想到要補充的以後再說吧~但還是有些話要先說在前面,這些是我心中對測試工程師的要求,但沒達到這個要求,Well ... 心情好的話就會慢慢指導測試工程師該如何測試,心情不好的話可能會直接把測試報告退貨,無論如何,還是會乖乖去解啦 ...

留言

這個網誌中的熱門文章

我弟家的新居感恩禮拜分享:善頌善禱

Openssl 範例程式:建立SSL連線

如何利用 Wireshark 來監聽 IEEE 802.11 的管理封包