單元測試與整合測試簡述

更新於 2024/09/03閱讀時間約 3 分鐘
raw-image

最近在研讀單元測試的藝術這本書,也剛好因為自己對單元測試的撰寫還沒有很游刃有餘XD,但由於我是挑重點看,簡單做個內容讀後感的整理

優秀單元測試的特質

  • 它應該是自動化,且可被重複執行
  • 容易被實現
  • 第二天應該還有存在的意義(指不是臨時性)
  • 任何人都可以按個按鈕就行它(這段我就不明白單元測試為啥會有按鈕??)
  • 它的執行速度應該很快
  • 它的執行結果應該一致
  • 它應該要能完全掌控被測試的單元
  • 它應該是完全被隔離的(獨立於其他測試)
  • 如果它的執行結果是失敗的,應該要能簡單清楚呈現

上述簡單來說,單元測試是把測試單元與其他相依物件或資源隔離開來,以保證單元測試結果的高度穩定,且單元測試應該能夠自動執行,透過利用測試框架或測試工具,可以輕鬆地執行測試套件,減少人工測試的工作量。

何謂整合測試?

根據書本說,整合測試應該覆蓋系統的不同部分,包括不同模組、組件或服務的交互作用,且整合測試會實際使用到真實的相依物件或資源,以確保整個系統的功能正常運作。

整合測試可以確保各個單元在結合後不會產生不明顯的錯誤或相互干擾,而這種測試通常需要較多的資源和時間,因為它涉及多個元件的協同操作。

書本上的案例都是使用.Net 的寫法進行講解,可惜我看不懂,不過以測試替身的作業大致上都差不多,先來簡單說明測試替身。

總結來說,單元測試是針對程式碼中的個別部分進行的小規模測試,用於驗證它們的正確性。整合測試則關注多個元件之間的互動和整合,以確保整體系統的正確性。這兩種測試在軟體開發中都是重要的,並互補,以確保軟體的品質和穩定性。

何為測試替身(test double)?

PHP有一個叫 PHPUnit 測試框架,用於撰寫單元測試和整合測試。使用測試替身( test double )來模擬和替代實際的依賴物件DOC(Depended-on Component),以便更有效地進行單元測試。PHPUnit 提供了幾種不同種類的 test double:

  1. FakeFake Object 是一個簡化版本的依賴物件,通常被用來代替真實的依賴物件,以測試某個組件。例如,您可以使用假的數據庫物件來替代實際的數據庫,以測試代碼的資料存取部分,而不必實際連接到數據庫。
  1. StubStub 是一個簡單的實現,它提供了特定行為或回傳特定值,以模擬依賴物件的行為。這對於測試時需要特定回應的情況很有用。
  2. SpySpy Object 被用來追蹤被測試代碼對依賴物件的調用,以確保特定方法被調用了多少次,或者使用了正確的參數。
  3. MockMock Object 是一種更高級的測試替身,它可以模擬依賴物件的行為,並記錄方法的調用情況。開發人員可以設置模仿物件的期望行為,並驗證這些期望是否得到了滿足。
  4. Dummy Dummy Object 是一個不執行實際操作的替身物件,僅用於滿足方法或函數的參數要求。它們不關心方法的實際行為,只是占位符。
// 範例
$dummyLogger = $this->createMock(Logger::class);


而與PHPUnit 類似的測試工具,則是 Mockery, Mockery 是一個獨立的 PHP 模擬(mocking)庫與PHPUnit 有不同的方式和功能,它專門用於創建測試替身。 Mockery 提供了一種更靈活的方式來創建測試替身,並且通常在 Laravel 項目中與 PHPUnit 結合使用。


下一章將講解PHPUnit與Mockery 使用方式及差異~

PHPUnit 與 Mockery 寫法差異




avatar-img
15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
DDDDD的沙龍 的其他內容
接續上一章Laravel Request 的概念簡單說明,接下來講 Request 特別的應用,而分享這部分的契機,主要是在新人時期面試時被問到的一題,不知道大家是否有被考過這題? 通常考官的問題:解釋一下關於Laravel 隱式綁定 or 是否聽過隱式綁定?
今天要來分享關於 Laravel Request 概念,Request 代表了來自客戶端(瀏覽器)的HTTP請求。這個類型的物件允許您輕鬆地訪問HTTP請求中的各種數據,例如表單數據、路由參數、Cookie、HTTP標頭等。 現在我們來定義及應用吧!
根據上一篇部署完畢Laravel 專案後,本章要來幫線上專案設定資料庫,fly.io 部署MySQL免費容量是3GB,在設定的時候要記得設定size,避免超過要收費。 接下來建置mysql 應用程序並創建屬於 mysql volume ,避免數據資料遺失~
第一次學習框架,總是透過本地使用XAMPP or MAMP工具進行開發練習,但為了將自己練習的小專案部署到線上主機DEMO給身邊朋油看,就得需要額外先了解學習GCP or AWS,但一不小心亂搞就會產生額外費用(亂搞結果收費爆掉的過來人...),後來發現好物,那就是fly.io 啦
通常練習開發時,總不知道選擇哪些方便的GUI工具協助簡化工作,新手時期通常都會搭配MAMP or XAMPP本身的 phpmyadmin 使用,雖然沒有不可以,但在職場上通常都是跟著同事們用一樣的版本工具,這邊介紹市面上常見且好用的 MySQL GUI 工具,幫助開發人員減少工作量
學習框架前第一步,先理解框架的生命週期 學習完PHP程式基礎後,就會開始進入框架的學習,為了能理解Laravel框架是如何運作的,就必須清楚框架的生命週期,這也是面試時的必考題哦。
接續上一章Laravel Request 的概念簡單說明,接下來講 Request 特別的應用,而分享這部分的契機,主要是在新人時期面試時被問到的一題,不知道大家是否有被考過這題? 通常考官的問題:解釋一下關於Laravel 隱式綁定 or 是否聽過隱式綁定?
今天要來分享關於 Laravel Request 概念,Request 代表了來自客戶端(瀏覽器)的HTTP請求。這個類型的物件允許您輕鬆地訪問HTTP請求中的各種數據,例如表單數據、路由參數、Cookie、HTTP標頭等。 現在我們來定義及應用吧!
根據上一篇部署完畢Laravel 專案後,本章要來幫線上專案設定資料庫,fly.io 部署MySQL免費容量是3GB,在設定的時候要記得設定size,避免超過要收費。 接下來建置mysql 應用程序並創建屬於 mysql volume ,避免數據資料遺失~
第一次學習框架,總是透過本地使用XAMPP or MAMP工具進行開發練習,但為了將自己練習的小專案部署到線上主機DEMO給身邊朋油看,就得需要額外先了解學習GCP or AWS,但一不小心亂搞就會產生額外費用(亂搞結果收費爆掉的過來人...),後來發現好物,那就是fly.io 啦
通常練習開發時,總不知道選擇哪些方便的GUI工具協助簡化工作,新手時期通常都會搭配MAMP or XAMPP本身的 phpmyadmin 使用,雖然沒有不可以,但在職場上通常都是跟著同事們用一樣的版本工具,這邊介紹市面上常見且好用的 MySQL GUI 工具,幫助開發人員減少工作量
學習框架前第一步,先理解框架的生命週期 學習完PHP程式基礎後,就會開始進入框架的學習,為了能理解Laravel框架是如何運作的,就必須清楚框架的生命週期,這也是面試時的必考題哦。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
[微心世界]解答大家最常遇到的問題: 3、5、14、19、22、23、42、45、46、49、52、53、59、78。 3. (1 ) 老人福利機構設立標準規定,所稱私立小型老人安養、養護機構,是指收容人數未滿多少人? ①5人 ②45人 ③30人 ④20人。 解答:依照112年6月21日修正公布《老
Thumbnail
[微心世界]解答大家最常遇到的問題: 3、5、6、7、12、14、15、25、26、27、31、41、44、47、54、56、57、61、63。 3. (3) 成人每分鐘正常呼吸次數,下列何者正確? ①30~35次/分 ②36~40次/分 ③12~20次/分④25~29次/分。 解答:在呼吸物理治療
Thumbnail
[微心世界]解答大家最常遇到的問題: 5、13、15、17、24、35、40、44、51、57、58、63。 9. (3) 有關慢性病老人居家照顧的優點,下列何者不正確? ①可預防與延遲入住機構的時間 ②被監視的感覺較低 ③在成本效益分析上,居家式的照顧較機構式的照顧昂貴 ④留在家裡可享受家
Thumbnail
歡迎支持與學習,讓阿Han幫您脫離無限加班的惡性循環… 您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入實戰營, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。
Thumbnail
練習 PHPUnit 測試的撰寫,依序創建Controller、Service,並針對計算邏輯進行單元測試的練習。
Thumbnail
本文將引導您使用簡單的 Header 組件,學習如何使用 render 和 screen 來渲染和查詢元素。我們將探索如何測試文字和字元計數功能,並使用 userEvent 模擬使用者操作。了解如何使用斷言來確保測試結果正確。同時,我們將處理包含 fetch 的異步測試,並介紹 waitFor 函數
Thumbnail
我的工作是一個英文老師,這個身分常提醒我必須不斷練習自己的英文 我的興趣是看一些自我成長的東西,這個興趣讓我喜歡找Ted的影片來看 十幾分鐘以內的影片,學有專精的講者用最容易了解的,幽默的方式跟大家分享他的建議或是他的研究,深入淺出,乾貨滿滿,其實很值得一看。
Thumbnail
介紹 通常我們程式寫完之後,要確保程式沒問題我們就會進行測試 在這裡我們將測試分兩大類: 單元測試(Unit Test,UT):對程式碼的最小單位所進行的測試 整合測試(Integration Test):系統/模組之間的測試,通常會接觸到真實系統 在這裡只會簡單介紹一下單元測試的概念 這裡在將單元
Thumbnail
來介紹影片, 『單聽快充站 1|單聽大解析|出乎意料,單側聽損學童的學習與校園困難。』 圖片引用自聽力公主臉書專頁 這部影片是聽力公主Grace所製作的, 我跟聽力公主認識是在單側聽損倡議的會議上, 她是一個非常熱心且有熱忱的聽力師, 她認為在台灣單側聽損的資源跟輔助方面非常匱乏。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
[微心世界]解答大家最常遇到的問題: 3、5、14、19、22、23、42、45、46、49、52、53、59、78。 3. (1 ) 老人福利機構設立標準規定,所稱私立小型老人安養、養護機構,是指收容人數未滿多少人? ①5人 ②45人 ③30人 ④20人。 解答:依照112年6月21日修正公布《老
Thumbnail
[微心世界]解答大家最常遇到的問題: 3、5、6、7、12、14、15、25、26、27、31、41、44、47、54、56、57、61、63。 3. (3) 成人每分鐘正常呼吸次數,下列何者正確? ①30~35次/分 ②36~40次/分 ③12~20次/分④25~29次/分。 解答:在呼吸物理治療
Thumbnail
[微心世界]解答大家最常遇到的問題: 5、13、15、17、24、35、40、44、51、57、58、63。 9. (3) 有關慢性病老人居家照顧的優點,下列何者不正確? ①可預防與延遲入住機構的時間 ②被監視的感覺較低 ③在成本效益分析上,居家式的照顧較機構式的照顧昂貴 ④留在家裡可享受家
Thumbnail
歡迎支持與學習,讓阿Han幫您脫離無限加班的惡性循環… 您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入實戰營, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。
Thumbnail
練習 PHPUnit 測試的撰寫,依序創建Controller、Service,並針對計算邏輯進行單元測試的練習。
Thumbnail
本文將引導您使用簡單的 Header 組件,學習如何使用 render 和 screen 來渲染和查詢元素。我們將探索如何測試文字和字元計數功能,並使用 userEvent 模擬使用者操作。了解如何使用斷言來確保測試結果正確。同時,我們將處理包含 fetch 的異步測試,並介紹 waitFor 函數
Thumbnail
我的工作是一個英文老師,這個身分常提醒我必須不斷練習自己的英文 我的興趣是看一些自我成長的東西,這個興趣讓我喜歡找Ted的影片來看 十幾分鐘以內的影片,學有專精的講者用最容易了解的,幽默的方式跟大家分享他的建議或是他的研究,深入淺出,乾貨滿滿,其實很值得一看。
Thumbnail
介紹 通常我們程式寫完之後,要確保程式沒問題我們就會進行測試 在這裡我們將測試分兩大類: 單元測試(Unit Test,UT):對程式碼的最小單位所進行的測試 整合測試(Integration Test):系統/模組之間的測試,通常會接觸到真實系統 在這裡只會簡單介紹一下單元測試的概念 這裡在將單元
Thumbnail
來介紹影片, 『單聽快充站 1|單聽大解析|出乎意料,單側聽損學童的學習與校園困難。』 圖片引用自聽力公主臉書專頁 這部影片是聽力公主Grace所製作的, 我跟聽力公主認識是在單側聽損倡議的會議上, 她是一個非常熱心且有熱忱的聽力師, 她認為在台灣單側聽損的資源跟輔助方面非常匱乏。