2008年6月12日 星期四

產測研討會的心得(Observation on Beta Tests Workshop)

前兩天去參與了一個產品測試的研討會,業者從國外請了一個Team來講述有關產測(產品測試)的技術注意事項,雖然先前在採購某些軟體前,自己也會做一些簡單的測試,但是跟這一群專業人士所做的測試相比,可能連三成都不到。(但是...測試的結果是否真能反應在採購上呢?我後面會再細述

雖然產品測試的出發點很好,但是對大多數的使用者來說,它並不適用,因為他們通常只要得知結果,至於是不是自己所測試,或者這個結果是否真的能套用在自己的作業環境上,往往就被輕忽而選擇性的遺忘了。

或許有人會說,我那有這麼多時間可以做測試,況且某些條件的測試,對一般人來說的門檻過高(例:Tom Hardware的專業測試),所以直接引用專業人士的報告(結論),能夠交差就好。

在某部份而言,我能夠接受且認同這樣子的觀點,但是...應用軟體上的測試,這點就不太能夠苟同,畢竟,絕大多數的軟體都有"試用版",就算是閹割後的版本,但是主要功能應該都會保留,這樣子的測試門檻,除了手邊是否有工具可重複性測試的平台,其它就只是時間的長短

因為當天的議程是整整一天....,我也只能摘要式的點到為止,而且會場有發給我們"兩大本"的內容,基本上講述的內容,在那兩本講義中均有整理,讓我能夠盡情的聽台上的人講述心得技巧。(雖是全程英文,但有即時翻譯,這一點還蠻有人性的,不過...)

回歸正題,雖然這個產品測試的研討會,主要討論的對象是AV Software(防毒軟體),但是我相信同樣的技巧與概念,也能夠跨到其它軟體且都能適用才對,畢竟基本功是人人都得練的,不是嗎?

在台上的講者,提到的內容包括下列幾個重點
1.樣本的選擇。(測試的條件)
2.線上威脅介紹。(外在因素)
3.動態測試。(實際會遭遇的狀況)
4.效能測試方法論。(操作環境的適用性)
雖然聽起來好像都是針對AV(防毒軟體,不是Adult Video...)來說,但是「()」中是我自己加註的,主要是思考那些是否能適用於其它軟體的測試呢?

1.樣本的選擇:

主要是告訴我們在取得測試樣本時,應該注意廣度適用性,其中包括:

(1)擴大測試樣本的來源。
(2)篩選有效的樣本(這點我覺得極困難)。
(3)加入乾淨的樣本(做為鑑別測試)。

如果換到別的軟體測試的話,應該就是要確認測試項目,以及要採用什麼樣的方法來測試,要先有所準備,才能開始針對不同產品來做一連串的測試,否則一個偏頗的取樣範圍,很容易造成過大的誤差,甚至會造成數據失效。(無鑑別度可言)

2.線上威脅介紹:

可能會遭遇到那些不同的攻擊,或者說是應該要具備怎樣的防範能力

(1)釣魚網站。
(2)木馬。
(3)病毒。
(4)廣告軟體。...族繁不及備載

這一點,在我看來...其實最大的外在因素,往往是來自使用者的觀感,或者說是使用者對於產品熟悉的程度,因為每種軟體的目的不同,所以在測試的過程中,要試著站在使用者的角度來思考,也就是說...測試者本身對軟體應用的領域也要有一定程度的瞭解,不然就有可能發生「拿大砲打麻雀」的狀況,一整個不切實際。

3.動態測試:

進行實際的測試,透過軟體來收集實際感染惡意程式病毒後的變化,藉此來確認所採用的防毒軟體是否能夠有效的阻擋相關的威脅。(這點還包含了相關惡意程式的收集

(1)利用第三方的軟體來找出系統或軟體漏洞。
(2)透過虛擬化的技術來協助資料的收集。
(3)模擬真實環境下可能會遭遇的狀況。
(4)在無防備的乾淨系統內啟動惡意程式。(資料收集)

這種動態測試,其實在所有的測試過程中是最重要的部份,往往也是最嚴苛的部份,因為你永遠無法知道在「真實」情境中,可能會碰到什麼事,未知的錯誤硬體作業系統不支援,甚至連能不能把測試的軟體安裝上去都還很難說。

況且,在動態測試的過程中,還得考量系統實際會運行那些程式,是否會因為使用者習慣的不同,造成有差異的測試結果,如果非得加入通用性的測試,自己是否具備足夠的能力來達成,我想都是在做動態測試前,甚至在規劃該如何測試前,就得先衡量進去。

4.效能測試方法論:

其實這是網路上最多人愛討論的部份,例:誰最不佔系統資源?誰的某某能力最好?說穿了,這個效能測試,一直以來都很難有所定論,因為,尚未有大一統的標準,或者說...還沒有一個能夠讓各家廠商都信服的準則

(1)測試平台的統一性。
(2)數據取樣的平均值。
(3)效能判定的標準。
(4)使用工具的客觀性。

其實在所有軟體的測試過程中,效能一直是兵家必爭之地,尤其是現在硬體的思維已經漸漸地走向同時間能夠做好多少事,而不是做好一件事能多快(多核心的演進),所以這項測試也是必做的項目之一,最好是能夠再把效能的快慢實際的條件相關連,例:能夠為公司節省多少時間成本、讓舊有的硬體達到最大化的效能...等

雖說效能是很重要的一件事情,但是再好的效能還是比不上使用者的真實感受,例:使用者只要感覺到lag的現象發生,無論是1030秒,對他們來說差別並不大。但是在效能的數據上,就會有三倍的差距,所以效能測試這部份僅能做為參考依據,並無法讓使用者能夠完全接納該產品的條件(除非你能做到使用者完全沒有感覺...)

至於,為什麼我在最前面會提到測試結果不一定能反應在實際採購選用上?原因很簡單,因為產品測試這部份並沒有考量"價格"或"成本"這個項目,這部份牽扯的層面很廣,人數多寡、是直接由廠商經銷零售商能夠談到的價位,各別有所不同。

因為企業主或老闆,其實最在意的不外乎也是這一點,他會跟你說,我可以犧牲一些效能來換取更低的購入成本,或者是能採用較精簡的版本來壓低支出,就是不太能接受用較高的價格來購入效能較高的產品(除非你能夠提出數據來佐證,最好還是能夠顯而易見的...千玩不要是那種經過三年五載才看得到的,因為那太遙遠不可期待。)

這也是為什麼「產測」在一般人或相關人員的手中,成了一門既愛又恨的技術文化,因為想讓自己或技術人員信服自己的選擇,你就得具備產測的能力及條件,但是在實際的操作上,卻又敵不過金錢攻勢,而淪為一疊白紙黑字的佐證報告。(可能只剩學術性的價值吧!)

所以,這些技術就當做是練內功!光有技術是無法讓老闆信服的(不過...千萬別只剩一張嘴),在技術的最外層,請回歸現實面後再來跟決策者討論產品的優劣,不然,就是加入實際的商業考量跟明確的(預算)數字,我想...這一點在每個領域都適用吧!