很久以前看到的一則笑話,有個小bug,不過意思我倒是弄懂了。大意是愛迪生耳朵不好使(實際上是一只耳朵不好使而不是兩只),聽不到電話鈴聲;好鉆研的朋友為他發明了一套閃光裝置,來電話的時候除了鈴響還有閃光;問題是就算愛迪生知道有來電,拿起話筒的時候還是什么都聽不到。
人們時常會犯類似的錯誤,付出的代價還不小,事實上在動手之前就應該找到這些問題。軟件測試也是一樣。千里之行,始于足下。計劃和設計階段的測試,才是測試工作的第一步。人們通常認為的編碼結束才開始的測試,已經太晚了。
計劃和設計階段程序員和項目經理分別會非常關心兩件事情:技術上如何實現,能否引起客戶的使用意欲。那么測試人員會關心什么事情呢?
我的答案是:假設上述事情都能按計劃完成,還有什么事情會讓產品失???
你可能會想,還能有什么事情?
我先講一個別人告訴我的故事:
有個產品是識別紙上指定圖案的,技術上沒法100%場合都能識別,但還在客戶容許范圍之內,而且客戶也的確相當歡迎這項技術。不過原型出來之后客戶反饋相當差,很多人試了幾下就不用了。究其原因,一旦識別算法覺得無法識別,比如因為光線、角度等原因,就會彈出一個對話框說識別失敗。想象客戶被彈了兩次之后,還會充滿信心的認為這個產品一定能用嗎?沒有這么自虐的吧?
就是有這么自虐的。想想是誰說沒問題啦可以見人的
解決方案也挺簡單,只要改用一個溫和一點的方式表達“難以識別”,而不是用彈對話框這種方式來打斷用戶調整光線角度的過程就可以了。
現在你同意還是有一些事情會讓產品失敗的吧。我們來看看都有哪些。
客戶表達的需求,開發團隊所理解的需求,以及客戶真正使用時的需求,有重大的差別;
完成產品所依賴的條件中,有些現在就知道無法或難以具備;
有導致無法或難以按計劃完成的因素。
測試人員在計劃和設計階段的任務之一,就是盡可能找到這些問題。
你可能想,明顯的問題誰都看得到,還用得著專人檢查嗎?事實上大問題不一定明顯。我下面要講的例子就是一個設計階段成功避免的大問題。
有個設備用于拍攝參加小型會議的所有人,放在桌子中間。用戶普遍使用筆記本電腦并通過與設備相連的軟件看到網絡另一端的與會者的視頻。在進行用戶場景(user scenario)討論時測試人員發現了一個問題:筆記本電腦的屏幕把用戶的臉擋住了。所以最終定型的設備比最初調高了5厘米。
面對一堆文字描述的測試人員如果不能發現這個問題,后果將會是:大量設備召回,或者流傳一個笑話“開會時記得帶本厚書”。
你不會愿意成為這種笑話的主角的。