Categories

工作態度 (1)    方法論 (5)    本土化 (9)    危機管理 (2)    死亡 (1)    自我成長 (1)    自我管理 (3)    決策管理 (1)    版本 (1)    社會 (2)    品管 (3)    風險管理 (1)    效能 問題 (1)    時間管理 (5)    專案 (10)    教育 (1)    產能 (1)    產業 (5)    軟體 (4)    測試 (10)    閒聊 (14)    溝通 (4)    道德 (1)    漫談 (23)    管理 (1)    機器翻譯 (1)    簡轉繁 (2)    翻譯 (8)    booksore (1)    Chinese (1)    Flash (1)    G11N (1)    I18N (3)    Industry (1)    L10N (8)    politics (1)    Project Management (6)    Revision (1)    Software (3)    Testing (4)    Time Management (1)    Translation (4)    UI Design (1)   

2011年3月29日

你怎麼測試一個產品

記得以前有部電影,描述要測試保全系統,於是請來過去曾有偷竊經驗的人來檢驗其保全夠不夠縝密。

想想看,如果你自己做了一把菜刀,你要怎麼測試他?

首先,假定這把是切菜的刀,拿在手上試試重量以及重心、比例;接著,找來看是高麗菜、大白菜等青菜切切看;再來,找來一把蔥,切看看,看這把刀快不快........喔我掰不下去了,因為我不會做菜。實際上切蔥是不是用更輕巧的快刀呢?

是了,你要測試一個產品,你首先必須熟悉這個產品或是熟悉對應的需求(做菜、切菜)。
以我來看,熟悉產品,比較偏向於設計面,比較會是設計者的角度,或是專家角度;實際需求則是偏向消費者、使用者。

如果你設計了一把菜刀,你除了自己測試完畢以外,最好找來專家與一班使用者,來幫你進行測試。

換個例子,如果你設計了一個高科技產品,例如你開發了一款高規格的行車紀錄器,你除了在你的實驗室測試所有功能以外,你應該要做路測。而且,最好不是你或你的同事測,因為也許你們是該產品的專家,但你們可能不是開車的專家,也可能不了解路上跑的車有什麼樣的狀況。

結果,當你沒有作好路測時,產品在上市後,才發現機體過熱導致異常。當你百思不解,想說你在實驗室已做過壓力測試 - 連續錄影 24 小時都正常,為什麼爆出那麼多過熱異常的狀況!這就是你不了解原來上路後,太陽晒下來,車子會有多熱;原來開進雪隧,隧道內那麼熱;原來很多消費者,下車後不會把機子拔下來放陰涼處,所以就放在車子裡晒太陽,而原來車子裡的溫度會高到 50~70 度,遠高於機器正常工作溫度!

但是如果你還是沒辦法找來使用者幫你測試,你怎麼辦?
我會建議,測試時,你要假想你是一個找碴的人,你就是一心一意要證明該產品不能正常運作,所以你就得要試著在各種邊界點去驗證他。邊界點就好比機器工作溫度,他就是一個邊界點,雖然你說這機器正常工作溫度是 0~50 度,但實際上,在路上就是會遇上溫度高過 50 度,那怎麼辦?

找碴並試圖證明產品不能運作的模擬方式,是一個比較快速協助開發人員自己檢驗產品完整性的方式之一。

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 。

其實改動了這麼多可能因素,一般而言,可能反而不太容易看到是否「錢花在刀口上」。不過當時因為多個環節處於先天不良的狀況之下,同時改善是必要的。

生活上的問題也可以試試採用類似方法加以分析,比方說一家餐飲店為什麼生意不好?
  • 地點因素?
  • 人員因素?
  • 硬體設備因素?
  • 餐點種類?
  • 價格因素?
  • 美味因素?
  • 大環境因素?