本系列文已重新編排並新增內容出版成冊,若您喜歡透過書籍來閱讀的話,歡迎至天瓏書局下單選購唷!
進入公司後已有一段時間,交手過林林總總的專案,除了新專案的開發之外,免不了會碰到既有服務的維護需求。而這些服務當中,年紀輕則有三、四年歷史,更不用提那些年邁的部分了;這些程式碼本身是沒什麼問題,但剛進入公司的我年少輕狂,天真的以為改動程式碼是件簡單的事情,結果一不小心就落入「依賴」的陷阱之中。
過了一年後,我雖然從依賴的泥沼中(?)爬了出來,但回想身在其中時的過程難免感嘆,一邊思考要怎麼樣才能主動防止這種事情發生呢?與此同時,我正好專注於如何整潔(clean)程式碼、重構(refactor)等等心法與技術的應用,因此迫切的需要一樣東西來保證更動的地方沒有出錯,碰巧從相關的資訊文章中看到了「測試」這個詞彙,稍微搜尋了一下,令人嘆為觀止,剛好它填補了我需要的一切。
因此,我迫不及待地踏上了研究測試的道路,深刻的記得當時我最早是看到了保哥分享不同測試之間差異的文章,慢慢瞭解到原來測試還能面向不同的需要,近而拆分成不同的測試類型,甚至根據測試類型搭配的工具也可能有所不同。
然而,研究的過程不如我一開始所想的那樣簡單,我慢慢地陷入了另一個「泥沼」——關鍵字地獄。「斷言是什麼玩意⋯⋯?」、「Dummy Object 又是什麼⋯⋯?」,為了搞清楚這些東西只好一步一步嗑文章與書籍。從單元測試中會玩到的 Mocha + chai + sinon 或 Jest,甚至透過 Cypress 進行端對端測試與視覺回歸測試,然後又遇到不同設備導致快照上出現差異等等想都沒想過的問題⋯⋯。
而這篇系列文的誕生,主要是希望能幫助到那些也想瞭解測試的讀者,透過文章的引導,有脈絡的從單元測試開始學習,並快速瞭解不同的測試工具各自的用途,提供一個魚竿後續再依照自己的需求去改造它;次要的部分則是藉由系列文重新梳理一下目前研究測試的成果,轉化既有的知識為可保存可閱讀的文字;最後則是想與已經在寫測試的開發者們交流心得。
本系列文重點將著重於 Vue3 在 Vite 開發工具底下,要如何透過 Vitest 與 Vue-test-utils 等測試工具來執行「單元測試」,後續文章也會提及若以不同工具或開發框架要選用哪些工具來配合。
除此之外,本系列文也會提供專用的測試專案供讀者下載,可以一邊在觀看文章的同時,也能一邊操作測試程式碼,實際感受一下測試程式在執行的過程與結果。
而文章架構的部分主要分為六個章節,各個章節希望能達成的目的如下:
以上是這次系列文預計會想寫的內容,之後會依照實際寫的內容略為調整。
最後,對於團隊本身已經有導入測試環節或是本身很熟稔測試的開發者,若文中有錯誤之處還請多包涵與指正,也歡迎在文章下方留言討論!
點擊 保哥文章的超連結好像有問題?!
一次搞懂單元測試、整合測試、端對端測試之間的差異
感謝告知!已經修正囉 :D
不會,謝謝你的文章~