如何執行測試

我在一個公司已有八年,這八年我見過不少剛剛開始工作的測試人員,也見過一些非常資深和優秀的測試人員,也見過不少無法成長起來的測試人員。很多測試人員技術背景很強,操作能力也不錯,但就是很難發現問題,爲什麼呢?


  我們就來談談怎樣執行好測試吧,需要培養哪些能力。

  工作態度和技術背景就不去說它了,做任何工作都要有好的工作態度,如果只是想混日子,無論做什麼工作都不會有長進的。技術背景當然也是需要的,測試人員可以不如開發人員深入,比如開發某些協議的時候,開發人員往往對rfc已經倒背如流,測試人員沒必要做到如此熟練。

  那麼,除此之外,測試人員需要培養哪些能力呢?

  我見過不少測試人員,他們非常渴望case能pass。如果一個case由於某種原因被block了,或者fail了,他們都表現出沮喪,或者嘲笑開發人員,認爲這給他們的工作帶來了麻煩。如果一個case順利地pass了,他們都歡天喜地,覺得總算完成了一個工作,可以對經理有交代了。可是資深的測試人員不是這樣的。他們渴望的不是pass一個case,而是通過這個case,幫助開發人員找出更多的問題。當問題出現的時候,他們很興奮,而不是沮喪。他們會尋根究底,來考察爲什麼會有這個問題,如何來解決這個問題,如何來改進測試計劃發現更多類似的問題,等等。當一個測試人員渴望做完一個case的時候,他往往下意識地會忽略很多他本來應該發現的問題。只要操作能繼續,大的錯誤不出現,他們就不會去主動尋找錯誤。我記得某部門有個老外剛來,就報了很多的bug。大家發現,他報的很多bug,大家以前也碰到過,但因爲不影響測試過程,不認爲這是bug,就都忽略了。其實有些bug是很嚴重的問題,比如系統的CPU突然被長時間百分百佔用,內存泄漏,狀態顯示和真實情況不符,等等。到了用戶那裏,都會成爲用戶抱怨產品的可能。那個老外曾經也指導過我做平臺集成測試,在他的指導下,我兩個禮拜就報了十多個bug。有一個我記得很清楚,就是擴展卡的以太網接口順序與主機上的相反。主機上的網口是從左往右遞增,而擴展卡上的是右邊爲1,左邊爲2,而且沒有在機器上標註。這樣就很容易造成配置錯誤。我一開始碰到這個問題,就認爲是自己的問題,爲啥我沒配對呢?但是老外說,你也是用戶,你沒配對,用戶也不會配對。到了用戶那裏,這肯定就是一個bug。很多人都很不喜歡做集成測試,因爲軟件還沒有準備好,測試case運行非常不順利。我發現這麼多bug的時候,其實真正的case一個也沒跑成。我一直停留在安裝和基本配置上。但我一點也不氣餒,反而在這個過程中發現了很多問題,對於最基本的系統啓動和安裝也有了很多深刻的認識。一個測試人員能夠很快成長起來,不是靠他能夠順利地完成測試任務,而是要遇到很多問題,在問題中求成長,在問題中尋找答案。測試人員的一個很重要的品質,就是歡迎問題,喜歡尋找問題,而不是完成測試。

  我發現資深的測試人員都有自己很好的測試習慣,我曾經把這個當成我學到的最寶貴的財富,可是當我想傳遞給其他的測試人員的時候,他們卻嗤之以鼻。有個測試人員,把所有的操作都事先寫在文檔裏,用copy-paste來輸入命令。這樣可以完全重複測試過程,而不存在手工輸入錯誤的問題,使得測試過程可以重現。在輸入命令時,他把實時的log顯示和alarm顯示打開,並利用工具記錄所有的命令輸出。每輸入一條命令,他就會看看是否會出現問題。如果出現問題,他就立刻去分析這個問題出現的原因並考慮是否是個bug。很多測試人員只有在出了大問題的時候,比如call打不通了,或者機器重起了,或者整個測試結果與預想的不符,纔想起去察看和記錄錯誤。我剛開始做測試的時候,也是這樣的。這樣常常會無法判斷錯誤什麼時候出現,是因爲什麼操作出現的,只好再重複一遍。如果不是必現的問題,就無法說清了。很多測試人員,在測試計劃上寫的是一套,自己做的是另一套,因爲測試計劃和執行不是同時做的,執行時發現了一些問題,調整了測試步驟,但沒有及時更新計劃,也沒有記錄操作步驟。當發現問題時,只好重新回憶自己做過的步驟,很浪費時間。沒有出現問題的話,測試步驟根本不被記錄。這些問題看似簡單,但影響不小。所以,在平時的測試工作中,有意識地培養起自己良好的測試習慣,是成爲優秀的測試人員的一個很重要的品質。

  資深的測試人員總是把自己當成用戶,喜歡評論軟件給用戶的感受,這是很多測試人員不敢去做的。在測試報告裏,我們只關注報了多少個bug,這些bug有沒有被修改,卻不關心測試人員對軟件的評價。其實這些評價對開發人員是非常重要的。測試人員往往能感受到系統最薄弱的地方在哪裏。比如系統內存保護機制錯誤導致系統經常crash,系統層次過多,交互很成問題,系統有瓶頸,性能上不去,等等。軟件人員只有各個分散的bug,卻得不到總體的感覺,這些反饋對系統架構師和開發人員改進系統、提高產品質量是非常重要的。好的測試人員,要時時刻刻站在用戶的角度,表達出自己對軟件,對產品的感受。

  資深的測試人員喜歡和軟件人員pair-work,因爲軟件人員比較清楚這個軟件的架構,對出現的問題會很快定位,從軟件人員對開發過程的描述,也可以事先判斷出bug容易出現的地方。而測試人員作爲軟件的使用者,可以很快地反饋出自己對於軟件使用的感受。讓開發人員瞭解測試,也可以幫助開發人員更清楚用戶的需求,對軟件如何被使用有了深刻的認識。有些開發人員從來沒進過實驗室,壓根就沒用過自己寫的軟件,這是非常非常錯誤的。好的測試人員,要多和開發人員交朋友,和他們一起工作。敏捷的鼓吹者說應該把測試人員分散到開發人員當中,和他們密切合作。這我也不太贊同。測試人員彼此之間的交流更加重要,而且測試人員不能受軟件實現的約束。這是有個度的。把測試人員打散,測試人員在團隊中往往處在劣勢,他們很容易成爲開發人員的附屬品,開發人員讓他們測什麼就測什麼,開發人員認爲是問題纔是問題。測試人員很難成長起來。所以,和軟件人員共同工作,是在測試人員有足夠的測試經驗的時候,而且應該是建立在平等的基礎上的合作。

  執行測試,有點像探雷,需要一步一步地走,小心謹慎地前進。目的是找雷,而不是通過。
本文出自 “Debbie” 博客,請務必保留此出處http://debbie.blog.51cto.com/2754849/508320
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章