iT邦幫忙

0

大家寫JavaScript時會寫測試嗎?什麼樣的情況下應該要寫測試?

我們公司網站就二個Programmer,都是前後端一起來,前端用到的框架就是jQuery

最近改一些陳年舊code,有時不小心會改到爛掉,在想說是不是要來寫測試,不過另外一個programmer說CP值不高......

所以想問大家,在寫JavaScript的時候會寫測試嗎,寫測試有CP值的考量嗎?什麼樣的情況適合來寫測試?

另外問問,如果有寫測試的話,是用哪一套工具

2 個回答

8
fillano
iT邦超人 1 級 ‧ 2012-07-21 00:25:15
最佳解答

http://www.facebook.com/groups/javascript.tw/

其實在facebook上的javascript group,有某人轉這篇,不少javascript神人都有發表意見,不妨上去參考一下。另外,建議下週四的活動去參加一下,聽聽TonyQ大神講Selenium這套工具。

要做測試,基本上你的程式要寫到「可測試的程度」,這意味Javascript要有一定的組織,許多功能你要把它整理成函數,然後針對函數來做測試。這是一般做單元測試的起碼標準。像JsUnit或是QUnit這些工具,基本上只是提供一個做測試的框架,讓你方便驅動測試,並且驗證結果。不過如果這些跟改變/操作DOM混在一起,要測試結果也蠻困難的。

建議:如果在一些處理資料跟商業邏輯的部份,已經至少用函數整理好,那就可以用JsUnit或是QUnit這些工具來測試這些部分。至於處理UI變化的部份,則使用Selenium來做。

Selenium提供了許多語言的Web Driver支援,你可以利用工具先錄製你要測試的動作,然後把這些動作輸出成不同語言的程式碼(Java, PHP, C#, Python...),再來做細部調整,或是用自動化工具來驅動。

最近有一個新聞,Mozilla跟Google已經向W3C提出Web Driver API標準制定的申請,我想在不久的將來,所有瀏覽器都可以支援這一個測試標準。參考:http://www.w3.org/TR/2012/WD-webdriver-20120710/

看更多先前的回應...收起先前的回應...
fillano iT邦超人 1 級 ‧ 2012-07-21 00:35:10 檢舉

一些UI的東西,像是CSS沒設好導致某些動作畫面跑掉等等,需要用視覺做確認的東西,基本上是很難測試的。

不過有一個自動化工具叫做sikuli,他使用影像辨識做條件來進行介面操作,讓你可以用截圖來操作瀏覽器(或其他程式),只是我不太確定他是否可以用來做視覺效果的驗證。你可以研究一下看看。

tony1223 iT邦新手 2 級 ‧ 2012-07-22 13:08:57 檢舉

Selenium 有截圖功能,也是能作一定程度的圖像比對,
只是功能沒有很完整(印象中是有幾個瀏覽器的支援有問題),真的很有愛的話也可以算是堪用。

fillano iT邦超人 1 級 ‧ 2012-07-23 09:05:35 檢舉

喔喔喔,讚。週四一定不能錯過。

fillano iT邦超人 1 級 ‧ 2012-07-23 09:31:53 檢舉

剛剛在CommonJS晃到:
http://wiki.commonjs.org/wiki/Unit\_Testing/1.0

關於單元測試的API規格,開始會有標準做法。

solofawu iT邦新手 5 級 ‧ 2012-07-23 10:12:36 檢舉

謝謝提供連結,有去看過了,果然是非常專業的討論...

關於把函試寫到可測試的程度,這一點有感覺,因為以前的一些code,都是很肥的函式,即使想測試,也不知道從哪裡下手

其實我有一種感覺,不知道大家是不是跟我一樣,雖然可以寫出(簡單的)測試,不過是不是這樣測,真的對日後的維護有用,也不是很有信心,我想這也是我同事說cp值不高的原因吧...

fillano iT邦超人 1 級 ‧ 2012-07-24 10:46:02 檢舉

這一篇連結的回答也可以提供方向:
http://stackoverflow.com/questions/96086/developing-ui-in-javascript-using-tdd-principles

但是一些操作例如AJAX等會花比較多時間,像這樣用同步的方式來做,我不太確定是否做的出來XD

2
simon88
iT邦研究生 3 級 ‧ 2012-07-20 09:20:32

測試bug,是用 firefox 配外掛 firebug 抓。
至於效能測試,也還好,自從改用jQuery之後,就沒有寫過又臭又長的code了。況且現在PC和瀏覽器效能都不錯,比較不會有這個問題。

leonshee iT邦新手 5 級 ‧ 2012-07-20 10:58:47 檢舉

debug和testing的概念好像不太一樣

solofawu iT邦新手 5 級 ‧ 2012-07-23 10:12:22 檢舉

謝謝你的意見

我要發表回答

立即登入回答