測試驅動開發編程
測試驅動開發 (TDD) 是一種以很是短的開發週期不斷迭代的軟件開發過程:首先開發者對將要實現的功能瀏覽器
或者新的方法寫一個失敗的自動化測試用例,而後就去寫代碼來經過這個測試用例,最終經過重構代碼讓框架
一其達到可接受的水準函數
1.單元測試 工具
單元測試是一種編程方法來確認函數,類和方法以咱們預期的方式來工做,單元測試會貫穿整個項目的開
發週期。經過檢查各個函數和方法的輸入輸出,你就能夠保證內部的邏輯已經正確執行。經過使用依賴注
入和編寫」mock」 類以及 stubs 來確認依賴被正確的使用,提升測試覆蓋率。
當你建立一個類或者一個函數,你應該爲它們的每個行爲建立一個單元測試。至少你應該確認當你輸入
一個錯誤參數會觸發一個錯誤,你輸入一個有效的參數會獲得正確的結果。這會幫助你在開發週期後段對
類或者函數作出修改後,確認已有的功能任然能夠正常的工做。可替代的方法是在源碼中使用
var_dump() ,但這種方法卻不能去構建一個或大或小的應用。
單元測試的其餘用處是在給開源項目貢獻代碼時。若是你寫了一個測試證實代碼有bug,而後修復它,並
且展現測試的過程,這樣補丁將會更容易被接受。若是你在維護一個項目,在處理 pull request 的時候可
以將單元測試做爲一個要求。單元測試
2.集成測試測試
集成測試 (有時候稱爲集成和測試,縮寫爲 I&T)是把各個模塊組合在一塊兒進行總體測試的軟件測試階段。spa
它處於單元測試以後,驗收測試以前。集成測試將已經通過了單元測試的模塊作爲輸入模塊,組合成一對象
個總體,而後運行集成測試用例,而後輸出一個能夠進行系統測試的系統
開發
3.功能性測試
有時候也被稱之爲驗收測試,功能測試是經過使用工具來生成自動化的測試用例,而後在真實的系統上
運行。而不是單元測試中簡單的驗證單個模塊的正確性和集成測試中驗證各個模塊間交互的正確性。這
些工具會使用表明性的真實數據來模擬真實用戶的行爲來驗證系統的正確性
功能測試的工具
Selenium
Mink
Codeception 是一個全棧的測試框架包括驗收性測試工具。
Storyplayer 是一個全棧的測試框架而且支持隨時建立和銷燬測試環境
行爲驅動開發
有兩種不一樣的行爲驅動開發 (BDD): SpecBDD 和 StoryBDD。
StoryBDD 專一於業務邏輯或功能的行爲和互動。採用 StoryBDD 時, 你編寫可讀的故事來描述應用程序
的行爲。接着這些故事能夠做爲應用程序的實際測試案例執行。Behat 是使用在 PHP 應用程序中的 StoryBDD
框架,它受到 Ruby 的 Cucumber 項目的啓發而且實現了 Gherkin DSL 來描述功能的行爲。
SpecBDD 專一於代碼的技術行爲。採用 SpecBDD 時, 你編寫規格來描述實際的代碼應該有什麼行爲。
你應該描述函數或者方法應該有什麼行爲,而不是測試函數或者方法。PHP 提供了 PHPSpec 框架來
達到這個目的,這個框架受到了 Ruby 的RSpec project 項目的啓發。
BDD 連接
Behat, PHP 的 StoryBDD 框架, 受到了 Ruby’s Cucumber 項目的啓發。
PHPSpec, PHP 的 SpecBDD 框架, 受到了 Ruby’s RSpec 項目的啓發。
Codeception 是一個使用 BDD 準則的全棧測試框架。
其餘測試工具除了個別的測試驅動和行爲驅動框架以外,還有一些通用的框架和輔助函數類庫,對任何的測試方法都很有用。工具地址Selenium 是一個瀏覽器自動化工具 integrated with PHPUnitMockery 是一個能夠跟 PHPUnit 或者 PHPSpec 整合的 Mock 對象框架Prophecy 是個有本身的想法,且很是強大靈活的 PHP 對象 mocking 框架。它整合了 PHPSpec 並且能夠和 PHPUnit 一塊兒使用