[閒聊] Unit testing 與其他 testing 的延伸閱讀心得

分類: 軟體測試 作者: suzy

16 7 月 2009

定義?目的?
使用時機與決擇?

Testing 的定義

大學時有學了一點皮毛, 大概知道 什麼叫 White-box testingBlack-box testing

  • White-box testing 通常是以程式師的角度, 在懂得程式架構下的測試
  • Black-box testing 通常是以使用者的角度, 在不知道葫蘆裡裝什麼藥的情況下的測試

這裡還有好多好多種的測試定義唷:

與 Web Development 有關的:

  • Sandbox testing 就像我們的測試機.
  • Web testing 是在指測試大流量下才會出現的bug 及 硬體效能問題
  • Ad hoc testing 無章法亂測, 也是一種測法!!
  • Usability testing 可用性測試 - 要考慮 Performance(效能), Accuracy(準確), Recall(回傳), Emotional response(情緒反應) .. 我記得以前學校有一門課叫 Human-computer Interaction 就是在講這個, 也是 Fail 很多人的一門課 因為很難 哈哈哈哈
  • Localization testing 在地化測試

Unit testing 存在的目的

提昇程式穩定度,帶著更清晰的腦袋瓜寫程式

那麼 Unit testing - 我想把它解讀成它是一種寫 testing 的方法/模式

Test-driven development 就是先寫測試 再寫程式 的一種 Software Design Mode?

TDD 標榜的是先寫好測試的 cases 再開始寫程式. 寫 code 時就比較不會造成程式的漏洞.

我想到一句對我還滿受用的一段至理名言:

能夠迅速想到解法的程式設計師太多了。
他們能用一分鐘想到方法,用一天去寫程式。
不需要花一小時想到解法,再用一小時去寫程式。
- Jon Bentley

TDD 某種程度上應該也是這個意思吧! -- 多花點時間準備 before writing.

而有 Unit testing 就有 Integration testing 整合測試 -
Unit testing --> Integration testing --> System testing (Black-box)

Unit testing 實際應用(我目前想得到的)

其實就是一些很容易算錯的東西..........

  • 匯率
  • 運費計算
  • 所有功能都寫在一起的購物車
  • 商業應用..eg 租露營車的估價, 牛的乳腺炎線上計算(我真的做過! 超難寫的! 這個超需要 Unit testing, 還有 Integration testing !!!)

Unit testing 很難達到實際功效的困難點

1. 程式師本身的盲點, 搞不好寫了測試但是 bug 還是在 *_*
2. 客戶會改變需求, 有沒有寫了又改, 改了又寫的八卦

我又想到一段至理名言:
需求規格在程式寫完後才會敲定。
基本規格要客戶看到成品後才會決定。
詳細規格要使用者用過後才會確定。

3. 與時間賽跑, 有時間寫再說
4. 測不到的地方 - 視覺沒有辦法測,調 css 排版沒有辦法測,Ajax 操作也很難完全模仿人的習慣,還有 BROWSER 的問題。

結論

Testing 其實很複雜, 應該也只有巨大案子才需要吧.
真的要做的話, 應該還包括各種 case 的分析, 連鎖反應, 如何將各種 testing 運用得宜, 還有流程控制, 可能要畫一堆的 UML Diagram, 還有預演替代方案
應該不是三言兩語就可以說得完的 @o@
而我們的 Web 開發所需要牽涉到的 testing 技術可以到什麼程度其實我也不知道

其實這篇淺薄的心得自己寫得很不好意思, 因為沒有接觸很多, 請大家隨便看看ㄚ, 真的要循續漸進且觀念正確地瞭解透徹, 我覺得可能還是要向學術界取經吧 ^^" (逃)

1 Response to [閒聊] Unit testing 與其他 testing 的延伸閱讀心得

Avatar

Brian

8 月 10th, 2009 at 3:42 上午

沒錯啊
unit testing跟integration testing很重要
但是真的只有大系統才需要
一個小小的靜態網站就真的沒必要了
之前我工作的地方就有用TDD
跑完一次完整的測試要15-20分鐘

我要留言

關於這裡

這個部落格分享了哇寶在電子商務領域的技術及資訊,希望能讓更多人一起為台灣的網路產業加油。