單元測試與整合測試簡述

更新 發佈閱讀 3 分鐘
vocus|新世代的創作平台

最近在研讀單元測試的藝術這本書,也剛好因為自己對單元測試的撰寫還沒有很游刃有餘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
DDDDD的沙龍
15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
DDDDD的沙龍的其他內容
2023/12/13
待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。
Thumbnail
2023/12/13
待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。
Thumbnail
2023/12/09
現在AI工具太多,且框架對於資安支援及處理也越來越方便,反而開始會容易忽略最底層的知識,這邊回顧MySQL的鎖,順便記錄一下找到的一些影片資源,並整理筆記
Thumbnail
2023/12/09
現在AI工具太多,且框架對於資安支援及處理也越來越方便,反而開始會容易忽略最底層的知識,這邊回顧MySQL的鎖,順便記錄一下找到的一些影片資源,並整理筆記
Thumbnail
2023/12/05
這邊主要是遇到功能需要處理時區,雖然主管給的筆記已經寫得很完美了,但覺得還是得理解吸收後並記錄自己的筆記後,好像才能有效吸收到腦袋裡
Thumbnail
2023/12/05
這邊主要是遇到功能需要處理時區,雖然主管給的筆記已經寫得很完美了,但覺得還是得理解吸收後並記錄自己的筆記後,好像才能有效吸收到腦袋裡
Thumbnail
看更多
你可能也想看
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
大家好!我們都知道,程式碼寫出來不代表就完工了,還要確保它真的“做到”我們想要的。這就是測試的力量!尤其是在 Web 開發中,測試確保我們的應用正確、穩定且高效地運行。今天,我們就來探討如何在 Gin 應用中進行測試和單元測試。
Thumbnail
大家好!我們都知道,程式碼寫出來不代表就完工了,還要確保它真的“做到”我們想要的。這就是測試的力量!尤其是在 Web 開發中,測試確保我們的應用正確、穩定且高效地運行。今天,我們就來探討如何在 Gin 應用中進行測試和單元測試。
Thumbnail
大多數時候,我們在討論壓力測試通常會先想到 ab 這個工具,然而這個工具會一次性的發送請求,有時候不一定符合現實的使用情況,同時也會受限於運行測試機器的限制(例如:Thread 上限)因此可能會得到不太精確的結果,在測試一定請求等級的瞬間壓力是有用的。
Thumbnail
大多數時候,我們在討論壓力測試通常會先想到 ab 這個工具,然而這個工具會一次性的發送請求,有時候不一定符合現實的使用情況,同時也會受限於運行測試機器的限制(例如:Thread 上限)因此可能會得到不太精確的結果,在測試一定請求等級的瞬間壓力是有用的。
Thumbnail
在 Laravel 中的測試中,PHPUnit 和 Mockery 都可以用來創建測試替身(test double),但它們有不同的方式和功能,以下簡單介紹兩種寫法方式。
Thumbnail
在 Laravel 中的測試中,PHPUnit 和 Mockery 都可以用來創建測試替身(test double),但它們有不同的方式和功能,以下簡單介紹兩種寫法方式。
Thumbnail
本文以實際的程式碼來說明Value Type和Reference Type的差異,並介紹實用的除錯工具。
Thumbnail
本文以實際的程式碼來說明Value Type和Reference Type的差異,並介紹實用的除錯工具。
Thumbnail
相信有在開發Web應用的朋友應該對於Postman這套工具相當熟悉, 這套工具可以協助我們在產品尚未完成之前可以先進行一些基本的介接測試,甚至我們可以使用Postman去呼叫雲端的API,像是Google的語音辨識、文字翻譯、字典查詢…,這類大廠相信也都開放許多標準API(Application P
Thumbnail
相信有在開發Web應用的朋友應該對於Postman這套工具相當熟悉, 這套工具可以協助我們在產品尚未完成之前可以先進行一些基本的介接測試,甚至我們可以使用Postman去呼叫雲端的API,像是Google的語音辨識、文字翻譯、字典查詢…,這類大廠相信也都開放許多標準API(Application P
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
在 React 測試生態系統中,React Testing Library 成為了方便好用的選擇,因其強調測試應該關注於使用者的操作與觀察元件行為,而不是測試細節實現。
Thumbnail
在 React 測試生態系統中,React Testing Library 成為了方便好用的選擇,因其強調測試應該關注於使用者的操作與觀察元件行為,而不是測試細節實現。
Thumbnail
本筆記會以簡單的例子說明,如何在Laravel中進行unit test 與 feature test。 phpunit.xml則是設定檔,可以設定哪些檔案要做測試,哪些要排除在外等等。 使用命令建立新的test case: 建立feature test: 建立unit test: 執行測試:
Thumbnail
本筆記會以簡單的例子說明,如何在Laravel中進行unit test 與 feature test。 phpunit.xml則是設定檔,可以設定哪些檔案要做測試,哪些要排除在外等等。 使用命令建立新的test case: 建立feature test: 建立unit test: 執行測試:
Thumbnail
使用顯性等待,以及讓我們的自動化網頁看起來有像測試的樣子 另外,readmoo電子書真的很方便啊
Thumbnail
使用顯性等待,以及讓我們的自動化網頁看起來有像測試的樣子 另外,readmoo電子書真的很方便啊
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News