軟體測試是一門很艱難的工作,軟體工程絕對不是會寫程式或是開發演算法而已。舉例來說,前幾天Facebook Android App一個bug讓我好幾天沒辦法發訊息和留言,還要我自己搞定。
這個bug跟密碼登入和multi-process programming有關:改密碼後,使用Android的Facebook App重新登入,但是無法留言和送訊息,原因應該是Facebook的外掛Messager程式不知道密碼改變了,所以一直送不出留言,但是也沒有給任何錯誤訊息,反而讓打了一大串的留言消失。
解決方案是直接打開Facebook Messager App,強制登出。這應該是Facebook App自己應該做的事情,但是它沒有做。Facebook這麼多厲害的開發者,還是如此,說明軟體測試的難度。
這個問題還有可能跟出國有關:在台北的時候沒問題,到日本才出問題,我一度懷疑到電信商頭上。如果是跟地區的網路服務有關的話,測試就更困難了。
這個問題可能比較特殊,因為還牽涉到資訊安全,但是可以作為一個很好的教案。也就是說,軟體工程要懂很多東西,還要會發揮想像力。
這裡提到好幾項技術領域:multi-process programming, networking, data center, distributed storage, privacy, security, cache coherence。具備實務經驗的高手,可以根據短短幾段描述想像出問題的來源,軟體高手的生產力,比庸手高太多了,就像神醫和庸醫一樣,天差地差。
不過,一般公司的QA通常是照著人家給的流程進行測試,應該是沒有能力自己發明測試流程,更不要談除錯,或是給建議了。測試流程,通常是產品設計師訂的,會有盲點也是人之常情。要突破這個窘境很難,除了願意請資深的產品設計師出來帶領驗證團隊,還要找到願意接這種位子的工程師。
Intel的晶片驗證工程師,往往比晶片設計工程師還要有經驗,原因便是如此,而且因為硬體不能有bug,所以非得如此不可。軟體界因為微軟一天到晚出問題,讓大家對於bug的忍受度不斷放大,所以軟體QA受重視的程度並不高,除非是mission critical的系統,另當別論。
作者已經移除這則留言。
回覆刪除作者已經移除這則留言。
回覆刪除而且因為硬體不能有bug,所以非得如此不可。軟體界因為微軟一天到晚出問題,讓大家對於bug的忍受度不斷放大,所以軟體QA受重視的程度並不高,除非是mission critical的系統,另當別論
回覆刪除>> 那是軟體工程的問題,根系統無關,微軟是因為壟斷後有恃無恐,如果做過日本人的軟體系統就知道日本人對於看待測試的重要