分類
courses

針對遺留代碼加入單元測試的藝術 #202201

單元測試是開發軟體產品過程中,與品質、設計相關最重要的基本工程實踐,如果不會單元測試,很多重構無從下手。如果不會單元測試,無法駕馭測試驅動開發。

Unit Test 活動主題範圍

主題包含但不限於:辨識依賴、隔絕依賴、依賴注入、擷取與覆寫、stub/mock 差異與使用場景、單元測試三種驗證方式、相依靜態方法的單元測試、父類依賴的測試、委派與事件的測試、測試程式重構與設計。

Unit Test 活動資訊

  • 日期:2022/1/9(日)
  • 表訂活動時間:09:00~17:00(視情況調整結束時間,一般常到 18:00)
  • 地點:台北市大安區金華街199巷5號 淡江大學台北校區 D507 教室(暫定)
  • 示範語言:目前支援程式語言為 C#, PHP, Java/Kotlin, Python, JavaScript, Ruby 也會提供上述語言的 workshop 題目與解答。示範的部份,會盡可能以最多人用的語言來呈現。
  • 報名:可直接填寫下方表單,或是從票價中的按鈕連結至報名表單。

備註

  • 此次活動不會使用投影片,沒有講義,會建立即時討論群組,活動前、中、後提供雙向的交流、發問回答與相關內容補充。
  • 活動會有大量實作練習
  • 主辦單位保留因應與會成員能力調整內容之權利
  • 主辦單位擁有是否接受報名之權利

票價(含稅,新台幣)

  • 一般票:13,000/per seat
  • 早鳥票(4位):12,000/per seat
  • 團體票(3人成團):12,000/per seat
  • 老鳥票:11,000/per seat

※ 可開立三聯式發票

填完報名資訊後,我會依據您的報名資格,mail 相關匯款資訊給您。

注意事項

※ 如您無法參加活動,可以轉讓您的報名資格給其他友人,只須來信更新報名資訊即可。

※ 取消報名之退費方式:因部分必要支出與行政費用,完成繳費後如取消報名,將依據時間遞減退還費用。

  • 活動前7天申請退費,退費用 0 %。
  • 活動8天以前申請退費,退費用 90 %。

如欲換人上課,請來信告知。

Unit Test 活動簡介

單元測試是開發軟體產品過程中,與品質、設計相關最重要的基本工程實踐,如果不會單元測試,很多重構無從下手。如果不會單元測試,無法駕馭測試驅動開發。

單元測試不是能動就好,怎麼寫出好的單元測試,才是實務中的王道。讓你的測試程式不再只是在代碼層次,而是像有人在跟你敘述需求情境一樣。讓需求異動時,你的測試維護成本降到最低。讓你每次新增測試案例的時候,能用最快的速度加入一個新的情境。

單元測試不會只有簡單的驗證數字、日期、boolean。實務上敘述的是 requirement,驗證的是物件、集合和情境結果。實務上面對的永遠是龐大複雜且盤根錯節的 legacy code,這門課將透過許多實際的案例讓你親自動手,為這些擁有大量 dependency 的 legacy code,優雅地加入 isolated unit test。

誰適合參加

  • 實務已經有許多痛點經驗、被遺留代碼摧殘過,怕改 A 壞 B 的工程師
  • 開發團隊的 leader、還在動手寫 code 的技術主管
  • 想把寫單元測試提升到藝術層次,提高自己設計能力的開發人員
  • 看了《單元測試的藝術》但仍有許多疑惑的同學

不適合誰

※ 這活動會有多個 hands-on 的單元測試 workshop,一整天都透過實戰演練來學習單元測試相關知識和技能,只想輕鬆聽講作筆記、拿簡報、講義回去交差的同學,不建議來參加這門活動。

※ 如您不想動手寫程式,這活動也不適合您。

Unit Test 應有的模樣

測試是用來描述需求情境的,是物件的使用說明書,是程式開發的可執行規格。測試程式應該重構到,只剩下關鍵的資訊,必要的資訊,一點不多,一點不少地表達情境與意圖。

C# + NUnit 單元測試範例
Java + JUnit 單元測試範例
PHP + PhpUnit 單元測試範例
Kotlin + JUnit 單元測試範例
Python + unittest 單元測試範例
JavaScript + jest 單元測試範例
Ruby + RSpec 單元測試範例
Ruby + MiniTest 單元測試範例

因為需求與情境是一致的,因此可以看到上各種不同語言,所撰寫的測試案例,表達意圖上幾乎一模一樣。

上課也會練習與重視重構測試,可參考影片範例

C# 重構單元測試示範影片

講師簡介

Joey Chen,江湖上人稱 91,是敏捷開發的狂熱者與傳教士,目前為 Odd-e 台灣團隊的負責人,也是 JetBrains 在台灣的培訓夥伴,同時擔任敏捷教練、技術教練與培訓講師的角色。

過去曾有多年外商大型交易系統的實戰經驗,輔導許多開發團隊敏捷轉型的成功經驗(一開始也有累積不少很有價值的失敗經驗),除了在各企業客戶成功導入 Agile, Scrum 與大規模 Scrum(LeSS)之外,還導入許多極限編程的工程實踐,例如單元測試、持續重構、測試驅動開發、驗收測試與行為驅動開發、持續整合、自動化生成文件、pair programming 與 code review 的實踐。

同時也是技術社群的活躍份子,從 2010 年開始連任九屆的微軟 MVP,兼任 MSDN 論壇板主,也曾經獲得年度 MSDN 文件庫刊登數量世界第一的榮耀。對微軟技術有愛,對 C# 有愛,對自動測試有愛,對重構與設計模式有愛。近年來對 Java, PHP, Python 也充滿濃厚的興趣,曾帶領客戶團隊中不會寫程式的 QA ,一起用 Python 完成超過百個 mobile UI 自動化測試。

擁有超過十年擔任開發團隊 tech leader, trainer, coach 與 mentor 的經驗,進行的企業內部與公開技術培訓課程已超過 100 場,培訓過的開發人員超過 1000 位,擔任研討會與社群活動的講師次數超過 30 次。

同時也是技術書籍的作者與譯者,與朋友合著的書籍包含《ASP.NET MVC 5:網站開發美學》、《ASP.NET MVC 4 網站開發美學》,翻譯的書籍有《單元測試的藝術-第二版》、《敏捷開發實踐》、《進入IT產業必讀的200個 .NET面試決勝題》,同時也在技術 blog 與 Facebook 粉絲頁擁有不少訂閱的粉絲群。

活動成員心得感想

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *