記得以前有部電影,描述要測試保全系統,於是請來過去曾有偷竊經驗的人來檢驗其保全夠不夠縝密。
想想看,如果你自己做了一把菜刀,你要怎麼測試他?
首先,假定這把是切菜的刀,拿在手上試試重量以及重心、比例;接著,找來看是高麗菜、大白菜等青菜切切看;再來,找來一把蔥,切看看,看這把刀快不快........喔我掰不下去了,因為我不會做菜。實際上切蔥是不是用更輕巧的快刀呢?
是了,你要測試一個產品,你首先必須熟悉這個產品或是熟悉對應的需求(做菜、切菜)。
以我來看,熟悉產品,比較偏向於設計面,比較會是設計者的角度,或是專家角度;實際需求則是偏向消費者、使用者。
如果你設計了一把菜刀,你除了自己測試完畢以外,最好找來專家與一班使用者,來幫你進行測試。
換個例子,如果你設計了一個高科技產品,例如你開發了一款高規格的行車紀錄器,你除了在你的實驗室測試所有功能以外,你應該要做路測。而且,最好不是你或你的同事測,因為也許你們是該產品的專家,但你們可能不是開車的專家,也可能不了解路上跑的車有什麼樣的狀況。
結果,當你沒有作好路測時,產品在上市後,才發現機體過熱導致異常。當你百思不解,想說你在實驗室已做過壓力測試 - 連續錄影 24 小時都正常,為什麼爆出那麼多過熱異常的狀況!這就是你不了解原來上路後,太陽晒下來,車子會有多熱;原來開進雪隧,隧道內那麼熱;原來很多消費者,下車後不會把機子拔下來放陰涼處,所以就放在車子裡晒太陽,而原來車子裡的溫度會高到 50~70 度,遠高於機器正常工作溫度!
但是如果你還是沒辦法找來使用者幫你測試,你怎麼辦?
我會建議,測試時,你要假想你是一個找碴的人,你就是一心一意要證明該產品不能正常運作,所以你就得要試著在各種邊界點去驗證他。邊界點就好比機器工作溫度,他就是一個邊界點,雖然你說這機器正常工作溫度是 0~50 度,但實際上,在路上就是會遇上溫度高過 50 度,那怎麼辦?
找碴並試圖證明產品不能運作的模擬方式,是一個比較快速協助開發人員自己檢驗產品完整性的方式之一。
Categories
2011年3月29日
你怎麼測試一個產品
2011年3月17日
本地化語彙
每個地區經常都有一些各自的特殊慣用語,在生活習慣上也都有一些小差異。城鄉之間的差異也會造成生活習慣的不同。例如都會區裡的小餐館,常見要客人點完菜先付款,但城郊的小餐館通常你吃完要走再結帳,不急!
本來嘛,一群人在一個區域裡共同生活,本來就會逐漸發展出特有的互動方式,語言文字也是這樣逐漸產生。這個鄉可能大家在廟會時很熱情,隔壁鄉可能是在普渡時擴大慶祝。習慣也是會改變的,雖然現今法規規定車輛應等禮讓行人先行通行過斑馬線,在都會區裡,你行人可以比較放心的走,到了鄉下,你可得更加小心有無車輛。
至於語彙呢?想像我今天一早出門,遇上鄰居,「嘿,早安!」到了早餐店:「老闆,包子一個,米漿一杯,帶走。」到了公司,看見警衛:「早!」中午時,到了麥當勞:「我要一號餐,外帶。」 下午到了 7-Eleven 買咖啡:「中熱拿,不要糖!」傍晚口渴,到飲料店:「綠茶一杯,無糖,去冰。」這裡出現類似的語彙有「早安 / 早」、「帶走 / 外帶」、「不要糖 / 無糖」等等。這些用語都是當地慣用 / 通用的,所以不管你怎麼說,大家都很容易的可以懂。
如果你在路上遇見個路人,問你「請問,要到 101 ,打車過去快還是搭公車?」我告訴你,這路人八成是個大陸人,因為「打車」不是說去敲打車子,是叫一部計程車。在台灣也會用「打」字,例如「打電話」、「打卡」,為什麼你就不會懷疑這是在講要把電話打壞,要把卡片打壞?因為我們習慣那麼講。但我們不講「打車」!
「大口吃遍台灣」的主持人阿松,他在點小吃時,常常會錯用量詞,例如「老闆,那個湯,我要一個,裡面用。」雖然量詞本來就不好學,一個、一碗、一份、一杯、一瓶、一張、一箱、一桶........有時確實講「一個」最快,即使聽起來很奇怪。這就好像用英語你要說 one cup, one meal, one beer, one cloth....基本上大家都懂,你不太需要去執著什麼 one piece of xxxx 之類的。
語彙差異在網路遊戲上也造成一些小困擾,例如最近很熱門的星海爭霸,台灣伺服器上有很多來自中國大陸的玩家,於是就有台灣玩家指出兩邊語彙跟講法的不一樣,例如:
中國大陸用語 | 台灣用語 |
---|---|
造房子 | 建房子 |
出2隊機槍兵 | 生2隊機槍兵 |
來2隊小狗 | 來2隊小蟲 |
2011年3月3日
從電腦效能瓶頸看問題核心
以前在維護網站的時代,採用 UNIX 系統,就特別針對效能瓶頸多加注意。當時遇上龐大的網站瀏覽需求以及網站服務使用需求,使得網站回應相當慢。老闆當然要求要盡快解決,也問過我是不是要換更好的機器,他再去找經費。
但是錢要花在刀口上,因為我們沒有無限的經費。當時的例子,效能瓶頸可能出現在下面幾個點:
- 網路
- WAN 還是 LAN ?
- 設備:是否既有網路設備不足以應付龐大的 session 或是流量,網卡要換還是 Switch / Router 要換?Layer 2 / Layer 4 Load Balance Switch 有沒有效?
- CPU
- 網站服務回應慢時,是否 CPU 呈現滿載狀況?
- 若 CPU 呈現滿載,是哪些程序佔用多數的 CPU 運算效能?
- 是 httpd 佔用較多效能?
- 還是網站程式佔用較多效能?
- 還是其他相關程式例如資料庫佔用較多效能?
- 硬碟 I/O
- 硬碟 I/O 是否滿載?
解法其實也很多元,除了一方面提升網路品質(即便這後來經證實不是主要瓶頸),一方面從硬體下手改善 CPU 運算以及採用更能應付多工運算的伺服器,硬碟也採高轉速、快速存取的高階硬碟陣列,另一方面也要從軟體下手,改進程式實作方式與檔案系統架構,減低不必要的 I/O 存取,善加利用記憶體暫存,還有把伺服器拆分成多個階層,外加採用多組伺服器做 Load Balance 。
其實改動了這麼多可能因素,一般而言,可能反而不太容易看到是否「錢花在刀口上」。不過當時因為多個環節處於先天不良的狀況之下,同時改善是必要的。
生活上的問題也可以試試採用類似方法加以分析,比方說一家餐飲店為什麼生意不好?
- 地點因素?
- 人員因素?
- 硬體設備因素?
- 餐點種類?
- 價格因素?
- 美味因素?
- 大環境因素?