【念念不忘,必有迴響】
怎麼勾起大家心裡面那把快熄掉的火,怎麼讓火旺起來在四處蔓燒,怎麼讓培訓的效果不只是培訓的那兩三天,而是大家有動機、想在實務上用來解決問題並改善痛點、想趕快練習、想趕快分享好東西給其他人,這股衝動、堅持、行動,才是 #專業點火師 的價值。
#有用就有用_沒用就沒用
#雖然我覺得上課順序應該反過來
※ 參加我培訓的學員還有個特色,通常 #自費 跟 #老鳥 的比例非常高,至少都是 1/3 起跳,#這就是口碑
① 演化式設計:測試驅動開發與持續重構:https://dotblogs.com.tw/…/201907-evolutionary-development-t…
② 單元測試實戰營(針對遺留代碼):https://dotblogs.com.tw/…/unit-testing-effectively-with-leg…
③ 極速開發:https://dotblogs.com.tw/…/2019/02/18/extreme-developing-tra…
201811 重構與TDD實戰營
×
201901 單元測試實戰營
×
201905 極速開發
【 91 敏捷開發之路 三堂課心得集大成之文超長慎入】
一切是從某次和Scar Su的IDP開始,建議去看91的TDD 30天文章來學習,雖然之後TDD並沒有太實質的學習成果,卻間接認識了91這位大師以及開啟往後圍繞其周圍一切知識的大門。
半年多來上了三堂課,前後花了一個月左右的薪水、數不盡的白天與黑夜,收穫,真的很多。
▎重構與TDD實戰營
當時一股腦想學習TDD的我,上班時不經意看見此課程資訊,心跳加速、一股熱血湧上心頭,毫不猶豫的揪了 蔡孟哲 學長衝一發,學長的爽快答應,或許才是促成一切學習的開始。
「本來看到這個課程就有想上了,你揪我就覺得該衝一發。」
學習的路上有時候大概就是需要一點衝動以及一個添燃油的朋友,才能脫離猶豫往前衝吧。
回到課程,「TDD」這件事情並不只是單純測試先行,測試案例的產生乃是在明確的需求底下所產生,而追求明確的需求這件事本身是值得花時間進行的。而當需求討論出現瓶頸時,透過錯誤的舉例,來逼出需求方正確的回答,讓雙方的認知達到一致。當然這個需求不只是驗收情境,透過TDD不斷的由上而下的進行,在定義程式內物件職責時的需求方就是developer自己了。
比起TDD的紅燈→綠燈→重構的循環、一次只做一件事情的準則、測試或產品代碼都必須能說話、各種重構技巧讓程式碼乾淨且降低耦合等等的基本要求,在TDD上最重要的莫過於還是要不惜一切的榨出明確需求,不要害怕問蠢問題,更不要像在課堂時和學長pair時被91糾正「不要放棄溝通」的我們一樣,最終產出就是一堆廢code😂。
▎單元測試實戰營
上課前靠著自學研究,大概知道怎麼去寫單元測試,知道怎麼使用隔離框架,也在專案上嘗試過,但這個領域絕不可能僅有自己知道的那樣,也因此前堂課結束後不久便決定接著報名此課程。
雖然在課堂中一些基本知識相對已較熟悉,但有些知識或許要對的人講一遍,才能深入腦海中吧XD。例如替legacy code加測試的大絕之一--將耦合之處抽成protected,並在子物件下override此部分來達成隔離,95%以上案例皆可如此進行的這個方法,在「單元測試的藝術」一書中便已看過,當時卻沒有特別的感覺更不曾套用過,課後回去在工作上使用才發現這 太 猛 了,我想這概念就跟一個男生不聽媽媽的話但卻很聽女朋友的話的概念一樣吧😅。
不過這堂課最有價值的還是最後在工作實務上的各種探討及經驗分享,例如0測試的專案如何開始、code coverage之於團隊的意義、與第三方界接的各種眉眉角角、CI的最高準則性、團隊/個人如何看待單元測試等等,即便當時下課時間已經delay超多(不小心忘記91的課後面不能輕易安排行程RRR),但仍然捨不得走,每一項議題都是大家工作上的切身之痛,多聽一些就是多賺一些,也是對未來多一些幫助。
▎極速開發
在前兩堂課pair寫code時,就好幾次被91碎念我們的開發方式不太行,又慢又沒效率(之類的),開始只覺得寫得快又有什麼用,還是要等腦子能跟上才有意義,但隨著一次又一次91三刀流demo的洗禮下,漸漸覺得牙癢癢手癢癢。這次在學長的鼓吹下,也決定一起來學學這樣的開發方式。
這堂課程終於是個有類似講義的課程😂。隨著91的教學,vim來到了我的visual studio中,也獲得了91個人常用的自訂指令,滑鼠的地位逐漸母湯。但這堂課不僅於此,透過ReSharper的輔助,各式template的設定、自訂Quick Fix等等,把所有許多重複的、麻煩的事情,透過IDE的協助來簡化開發,讓developer關注在所需關注的事情即可。
Developer把每一個開發時的小動作(甚至是右手在滑鼠和鍵盤間移動)做簡化,每多擠出的一點點的時間,都可以用在需求的關注、架構設計等等其他本就要花時間的事情上,用最快的速度把腦裡出現的code投射到editor上,更有效率的提升工作效率以及價值。我想這才是這門課的精隨所在吧。
▎總結
上過91的課程都知道,能獲得的東西遠比課程名稱還多很多,沒有什麼值不值得,只有願不願意給自己打開門、試著站在巨人的肩上而已。
而不論是TDD、重構、UT、極速開發,練習、大量刻意的練習,才是精進的唯一之道。
▎影片 - Tennis Kata
以TDD方式完成tennis的計分功能。
從起初的一小時,透過不斷的練習、91的review、和學長的討論調整下,進入30分、27分、23分、20分、19分、17分到近期版本的14分,雖然仍有些失誤,但我想不完美的完美,更能驅使一個人繼續努力吧!
「visual studio code coverage」的推薦目錄:
- 關於visual studio code coverage 在 91 敏捷開發之路 Facebook 的精選貼文
- 關於visual studio code coverage 在 91 敏捷開發之路 Facebook 的最佳貼文
- 關於visual studio code coverage 在 91 敏捷開發之路 Facebook 的精選貼文
- 關於visual studio code coverage 在 Does Visual Studio have code coverage for unit tests? - Stack ... 的評價
- 關於visual studio code coverage 在 visualstudio-docs/using-code-coverage-to-determine-how ... 的評價
- 關於visual studio code coverage 在 visual studio 2019 測試涵蓋率工具- Fine Code Coverage 的評價
- 關於visual studio code coverage 在 How to run tests showing code coverage in Visual Studio for ... 的評價
visual studio code coverage 在 91 敏捷開發之路 Facebook 的最佳貼文
Visual Studio Code 上面可以跑 .net core 的lunit testing 跟 code coverage 啦
Automatic Unit Testing in @dotNET Core plus Code Coverage in Visual Studio @Code /ht @tonerdo
visual studio code coverage 在 91 敏捷開發之路 Facebook 的精選貼文
最近在玩的 Visual Studio extension 叫做 Alive, 這是一套可以在 coding 過程中即時呈現 function 內每一個變數或 property 值的套件。
前提得是下面兩者其中一種,Alive 方能作用:
1. 得有測試案例
2. 得是 static funciton
這工具強大之處在於,它能很剛好的支援 TDD 的開發過程,以往我們只能透過「執行單元測試」+「debug」才能瞭解,在「這次新增加的 紅燈 test case 執行過程中」,該在哪邊新增一個 if/else 來岔出一個新的 scenario。
在有 Alive 之前,比較接近這功能的應該是 NCrunch 的 continuous testing。但 NCrunch 是即時執行測試程式,看得到 code coverage 跟執行的紅燈綠燈軌跡,並無法看到像在 debug 時,如同 OZcode 所呈現每一個值的情況。
Alive 才真的是在「TDD 的開發過程中,幫助開發」,因為你不需要執行測試,不需要偵錯,甚至不需要編譯、不需要存檔,它就能即時呈現在這個 test case 底下,你 coding 過程的所有變數、屬性的值以及執行路徑。
說再多,還不如直接看影片比較快。(如果你對 TDD 很熟了,只是想看 Alive 在 TDD 的巧妙之處,可以從 10m20s 開始看:https://www.youtube.com/watch?v=8wrVbxp3Ikc&t=10m20s)
另外,支援 for/foreach/while 迴圈中每一個 iterator 中各個變數的值,也支援遞迴唷。還有一個神奇的地方是,不只支援 public function, 也支援 private function 執行用測試案例打...private function 啟用 auto filter 時,也可以看到究竟有多少測試案例會使用到這個 private function。(強大到噁心,非常的噁心)
Alive 官網位置:https://comealive.io/
demo 影片位置:https://www.youtube.com/watch?v=8wrVbxp3Ikc&feature=youtu.be
#TDD #Alive
補充一下大家可能會想知道的幾點:
1. 這是要付費的 extension, 沒有試用版,目前版本還在 0.6.2,也就是還沒推出正式版
2. 從無到有開始TDD,Alive 執行速度極快,快到感覺比我存檔或編譯還快
3. 支援 mock framework (至少支援 NSub)
4. 目前支援 VS2013, VS2015, 個人測試經驗,VS2013極度不穩,VS2015 穩很多。
5. 拿我實務的大專案來使用時,當測試案例一多時,似乎 filter 會卡住,還在確認是那邊的問題。期望當正式版時,會更加穩定、迅速。
6. 尚未支援 specflow, 已排入待開發的feature中
有其他疑問的朋友,可以直接在底下留言。
visual studio code coverage 在 visualstudio-docs/using-code-coverage-to-determine-how ... 的推薦與評價
Code coverage is an option when you run test methods using Test Explorer. The results table shows the percentage of the code that was run in each assembly, ... ... <看更多>
visual studio code coverage 在 visual studio 2019 測試涵蓋率工具- Fine Code Coverage 的推薦與評價
Visual Studio 2019 測試涵蓋率工具- Fine Code Coverage. 之前有寫過可以用AxoCover看NUnit的測試涵蓋率,最近換到visual studio 2019發現2019已經 ... ... <看更多>
visual studio code coverage 在 Does Visual Studio have code coverage for unit tests? - Stack ... 的推薦與評價
... <看更多>
相關內容