「寫測試的好處是什麼?」
這個問題非常難回答。通常只能得到「只有寫了才知道」這種含糊不清的答案。
1. 單元測試保證你的code真的能動
2. 你會得到一組底層的regression-test suite
3. 讓你改善系統設計的時候,不怕弄壞系統
4. 寫測試會讓coding更好玩
5. 它們可靠地展現目前進度
6. 單元測試是一種使用範例
我們都碰過那種不知道怎麼用的library。通常我們會先去找範例程式碼。使用範例可算是一種文件。但公司內部的code通常不會有範例可看。所以只好慢慢試、在系統內東找西找了。因為那個同事可能根本離職了,想問他都沒辦法。單元測試可以當作一種文件。當你不知道Foo類別怎麼用,去看一下單元測試怎麼寫的即可。
7. 測試先行會強迫你寫code前先做規劃
先寫測試會逼你在動手開發前把必須完成的事和整體設計想過一遍。不但讓你更專注,還能讓設計更漂亮。
8. 先寫測試能減少bug的成本
越早發現bug越容易修。之後出現的bug通常是改了好幾個地方才出現的,
導致很難抓出哪裡導致了bug。一開始先找出bug在哪,然後要重新回想這段code是怎麼寫的,因為可能是幾個月前寫的。最後才終於弄懂,搞出一套解法。只要能減少抓bug以及修好bug的時間,幾乎都算大賺。如果在成品交給品管部門或是顧客之前,我們只花幾天就找出bug,通常算是很幸運。那幾花幾分鐘就找出bug呢?測試先行就能做到這點。
9. 它比代碼檢查的效果好
有人說事前代碼檢查比事後測試系統更好,因為成本比較低。在系統完成之後才測試系統,要修好bug可說是麻煩多了。越早發現bug,就越簡單、越便宜、越好搞定。代碼檢查的好處就在這:只花幾天就能抓出bug,不需要等幾個月。但是測試先行成本更低。只要幾分鐘就抓出bug,連幾天都不用。
10. 幾乎解決了「開發者瓶頸」(coder’s block)
不知道下一行寫什麼嗎?就跟「作家瓶頸」(writer’s block)一樣,開發者瓶頸很可能是個大問題。測試先行有系統地處理開發上關於結構的部份,讓你能專心在需要創造的部份。你可能會卡在下段code不知道怎麼測、該怎麼通過測試,但你永遠不會因為下一步卡住。通常會有完全相反的結果:你很想在累倒之前休息一下,但因為清楚看到前面的錄了,所以根本不想停下來。
11. 單元測試讓設計更棒
測試一小塊code會強迫你定義清楚那段code負責什麼。如果測起來很簡單,就表示它的責任很明確,cohesion很高。如果一段code能被單元測試,那就表示它很容易就能放進系統之中,就跟它很容易放進測試之中一樣。它跟相關的code只具有loose coupling 。 High cohesion與loose coupling代表了出色、好維護的設計。容易測試的code也很容易維護。
12. 寫測試會讓開發速度更快
不寫單元測試也許會讓速度更快,但無法保證code真的能跑。開發上會花一堆時間在在事後的修bug。測試先行會消除這類的浪費,從一開始就做對、讓bug更好修。
-課程大綱-
Node.js介紹與環境安裝
Node.js單位測試介紹 程式碼涵蓋率介紹
Continuous Integration 介紹與線上服務串接
Code coverage 介紹與線上服務串接
講師介紹
曾任 國立交通大學 軟體開發課程 助教
畢業於 國立臺灣海洋大學資訊工程學系 碩士
畢業於 國立臺東大學資訊工程學系 學士 104級 (100~104)
SITCON 2016 行政組 工作人員
Web Techniques Taitung Day 共同創辦人
https://sitcon.kktix.cc/events/wttd-course-2015-04-12
https://sitcon.kktix.cc/events/wttd-course-2015-04-11
程式經驗
PHP : 2 年
JavaSrcipt : 2 年
Node.js : 2 年
JAVA : 2 年
R : 1 年
Python : 1 年
-人數限制 : 20人
**臺東大學學生優先**
-------------------------------------------------------
我們的官網: https://digitvolunteer.space/
我們的粉絲頁: https://www.facebook.com/nttu.information.volunteer/
Email: nttu_service@digitvolunteer.space
nttu_steam@digitvolunteer.space
Instagram: https://www.instagram.com/nttu