iT邦幫忙

2021 iThome 鐵人賽

DAY 30
7

Christopher Alexander 在「建築的永恆之道」中,開頭第一句就說了:「無心之心,道之所存」。作者認為建築或城市沒有所謂的「好」,而是要追求一種「永恆之道」。只有踏上此道,建築或城市才會生機勃勃。這是一個不能被「求取」的過程,而是要我們不斷「探索」的。

軟體工程何嘗不是如此?

終於來到這一天了,第三十天。

快速回顧

過去的二十幾天中,我們聊了很多有關單元測試的主題。我們對測試的基本概念有一些了解,我們釐清了單元測試與整合測試的異同,以及責任歸屬,並試寫了人生第一個單元測試。

接著,隨著應用場景的複雜化,我們分別使用直接操作與借力於 Mock 工具的方法,控制依賴,以完成對 Command 與 Query 的測試。更複雜的多線程與例外場景也沒難倒我們,值得慶祝!

有了測試的保護,我們膽子就大了,以前不敢做的「重構」,現在也敢做了,而且為了更好地掌握重構時機,我們還練習了一下如何聞出程式的「壞味道」。

我們知道測試是為了幫助開發,所以分別紹了「倫敦派」與「芝加哥派」的 TDD,同時聊了近年蠻紅的 Clean Architecutre 與 CQRS,然後交錯使用上述兩大派別的 TDD 方式,完成一個實際案例的操作。


波士頓派?圖片截自愛伯特吃喝玩樂全記錄

最後,在流程上,Git、XP、Scrum、DevOps 等近年常見的 Solution,我們也都聊了一輪。

單元測試與軟體工程

說好的聊單元測試呢?

你沒發現嗎?上述的這麼多軟體工程實踐,沒有一個可以離開單元測試啊!或者說,沒有單元測試的話,這些東西就很難發揮它們完整的實力呀!隨便舉例,沒有單元測試你敢重構?沒有單元測試你敢用 CI/CD + 主線開發,一天發佈好幾個版本上產線?

如同一開始說的,測試是一種實驗,計算機是一種科學。科學的「正確」,是靠一而再、再而三,不斷重複同樣嚴謹的實驗而堆疊出來的。沒有這些實驗,現代人的日常生活不可能這麼便利。同樣的,沒有足夠多且品質好的單元測試,你的日常工作非常難變得方便有效率。

開始吧

有人問過筆者,這麼多事情要做,我要從哪裡開始?我都喜歡舉同一個例子:

你在一個深山小屋,外面風雪交加,你又餓又凍,小屋中有壁爐、油燈、爐灶與一些生食,而你只有一根火柴,請問你應該先點哪一個?

你應該先點火柴!」火柴不點,這些工具一個都派不上用場,再厲害也沒用。

在軟體工程的實踐中,「單元測試」就是那根火柴。所以,不用再問人家要先怎樣、什麼什麼才是 Best Practice 了。先開始你人生的第一個單元測試吧!接著再拿其他適合的 Solution 來解決問題,才會事半功倍!

不要想像有一天你會得到一個「乾貨」,上面寫著可以「長治久安一勞永逸」的軟體工程實踐方法集。世上不存在那種東西。如同 Chirstopher Alexander 說的,有一天當我們真正踏上了程式的永恆之道,將感受到的是和平安閒,就像在海邊散步,或是在草原上大步邁進一樣。

最後,醒醒吧,不要奢求老闆會多給你時間做單元測試,那本來就是你的工作。別忘了,單元測試是功能的一部份

好了,2021 的單元測試 IT 鐵人就聊到這兒了。單元測試只是改善軟體工程實踐的第一步,後面還有很多要解決的事等待著我們,那就先去做了再說吧!祝各位長官一帆風順!


圖片截自電影 - 無間道

謎之聲:「道可道,非常道。」

Reference

  1. Christopher Alexander,建築的永恆之道,六合出版社,1994

無情工商

IT 鐵人結束後,筆者的技術文章寫作不會停止,我還是會在我的個人 Blog 繼續寫作,對軟體工程與 Coding 技巧有興趣的朋友,別忘了:

訂閱我的部落格:https://medium.com/kuma%E8%80%81%E5%B8%AB%E7%9A%84%E8%BB%9F%E9%AB%94%E5%B7%A5%E7%A8%8B%E6%95%99%E5%AE%A4
按讚我的臉書粉絲團:https://www.facebook.com/kukumamaya
追蹤我的 YouTube 頒道:https://www.youtube.com/channel/UCR8o_Dmwv1Zevk7lFe-HqHQ

有緣再相會!

tags: ithelp2021

上一篇
Day 29 「Try it!」單元測試與軟體工程
系列文
你就是都不寫測試才會沒時間:Kuma 的 30 天 Unit Test 手把手教學,從理論到實戰 (Java 篇)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
SunshineYen
iT邦新手 4 級 ‧ 2021-09-30 12:34:51

感謝你分享這系列的內容,需要花時間消化但受益良多~

Kuma iT邦新手 3 級 ‧ 2021-09-30 22:35:27 檢舉

感謝支持,有空交流交流 :)

0
Len
iT邦新手 5 級 ‧ 2021-09-30 17:22:54

看完最後一篇差點起立鼓掌,結果發覺自己在咖啡廳XDD
我會繼續努力學習的~~~~

Kuma iT邦新手 3 級 ‧ 2021-09-30 21:10:40 檢舉

你可以當面鼓掌 XD

0
paooap6365
iT邦新手 5 級 ‧ 2022-01-26 01:17:33

很精彩的系列文,很多地方真的有共鳴,感謝分享~

我要留言

立即登入留言