值得推薦的十種PHP測試框架
譯文【51CTO.com快譯】作為一種可以支持測試和開發(fā)活動的工具與過程的集合,框架往往包含了各種實用的程序庫、可重用的模塊、測試數(shù)據(jù)的設(shè)置、以及其他依賴項。目前,無論是針對Web的開發(fā)、還是測試,業(yè)界都有多種成熟框架,可供您根據(jù)實際需求進(jìn)行選擇,進(jìn)而提高團(tuán)隊的效率和生產(chǎn)力。而作為一個優(yōu)秀的框架,它通常需要具備如下優(yōu)點(diǎn):
- 維護(hù)具備良好定義的代碼結(jié)構(gòu)。
- 提供能有效用于測試的可重用模塊和庫。
- 可加快測試的進(jìn)程與效率。
- 可避免代碼的重復(fù)。
- 能夠分析需求與測試的范圍。
同時,在所有服務(wù)器端的編程語言中,有80%的網(wǎng)站用到了PHP。因此,我們有必要對針對PHP測試框架開展深入研究,以方便采用標(biāo)準(zhǔn)的格式,編寫出各種測試用例。下面,我將和您一起探討十種優(yōu)秀PHP測試框架是如何實現(xiàn)測試自動化,以及它們各自的優(yōu)缺點(diǎn)。
1. PHPUnit
作為一種面向程序員的最常用PHP測試框架,PHPUnit非常適合單元測試。它是由Sebastian Bergmann開發(fā)的,屬于xUnit框架體系結(jié)構(gòu)中的一個實例。
安裝步驟
您需要事先安裝PHP 7.3版或更高版本,才能安裝PHPUnit的最新版本--PHPUnit 9.3。以下便是PHPUnit的安裝步驟。
- 步驟1:從鏈接https://www.php.net/phar處下載PHAR(PHP Archive)。PHAR已將所有必需的PHPUnit依賴項,都捆綁在了一個文件中。
- 步驟2:從鏈接https://getcomposer.org/處,安裝Composer,以管理項目中的所有依賴項。
使用PHPUnit框架的優(yōu)勢
作為公認(rèn)好用的PHP框架之一,PHPUnit在進(jìn)行自動化測試過程中具有如下優(yōu)勢:
1. 可以有效地分析代碼的覆蓋率。通過深入分析,它可以生成包含有各種代碼覆蓋率信息的報告,或HTML/XML日志文件。在碰到無法測試的代碼塊時,我們可以使用諸如@codeCoverageIgnore、@codeCoverageIgnoreStart和@codeCoverageIgnoreEnd之類的注釋,在執(zhí)行代碼覆蓋率分析過程中,忽略某些代碼塊。當(dāng)然,我們也可以通過使用@covers注釋,來指定某個代碼塊去執(zhí)行代碼覆蓋率分析。
2. 在執(zhí)行測試用例時,某些測試可能無法被執(zhí)行到。對此,PHPUnit提供了一個可觸發(fā)異常的接口。
3. 如下面的簡單XML配置文件所示,我們可以將所有測試組合到一個套件中,并在XML配置文件的協(xié)助下觸發(fā)運(yùn)行。
2. Codeception
由于具有易于使用和維護(hù)代碼模塊的能力,因此Codeception的使用范圍非常廣。它提供了多個模塊,可以在單個框架中支持驗收測試、功能測試、以及單元測試。
安裝步驟
安裝Codeception的先決條件為:
- 安裝了PHP 5.6或更新版本。
- 已啟用了CURL。
Codeception的具體安裝步驟為:
- 步驟1:從官網(wǎng)—https://getcomposer.org/download/處,下載并安裝用于管理PHP中各個依賴項的composer。它將有助于聲明要在項目中使用到的代碼庫,并對其進(jìn)行管理。
- 步驟2:從Codeception的官網(wǎng)—https://codeception.com/install處,下載并安裝PHAR。
使用Codeception框架的優(yōu)勢
1. 作為“全棧測試框架”,您可以對目標(biāo)應(yīng)用進(jìn)行單元測試、功能測試、以及驗收測試。
2. 通過使用簡單的命名規(guī)則,它能夠協(xié)助用戶理解代碼。其中,actions關(guān)鍵字可用于執(zhí)行諸如:單擊、按鍵、填充輸入字段等用戶操作;assertion關(guān)鍵字可用于執(zhí)行驗證,就像使用TestNG和Junit進(jìn)行驗證一樣;而grabbers則可用于提取相關(guān)信息。
3. 提供了一種可在JBehave和Cucumber等行為驅(qū)動開發(fā)(BDD)中,運(yùn)行用戶故事(user stories)的選項。
4. 提供了各種對于數(shù)據(jù)庫測試非常實用的數(shù)據(jù)庫模塊。
5. 具有WebDriver模塊,可用于驗收測試。
6. 具有對于Web服務(wù)測試非常實用的REST模塊。為了驗證JSON響應(yīng),該模塊可從特定的JSON標(biāo)簽中提取數(shù)據(jù),并驗證各種XML響應(yīng)。
7. 有助于與Jenkins和Teamcity等持續(xù)集成工具相集成,以協(xié)助生成測試報告。
3. Storyplayer
作為一個開源的PHP測試框架,Storyplayer可用于執(zhí)行端到端測試、API自動化測試、以及Web應(yīng)用測試。由于它提供了對于多種編程語言的支持,因此可謂優(yōu)秀PHP框架之一。
安裝步驟
- 步驟1:目前,它僅支持Apple OSX Yosemite和Ubuntu Linux Desktop 14.10,而且需要事先安裝PHP。
- 步驟2:根據(jù)其官網(wǎng)要求(https://datasift.github.io/storyplayer/v2/learn/getting-setup/index.html),需要額外添加諸如CURL、JSON、OpenSSL等擴(kuò)展。
使用Storyplayer框架的優(yōu)點(diǎn)
1. 提供了無需訂閱或付費(fèi)的開源框架服務(wù),這對于PHP的Web開發(fā)新手來說,非常實用。
2. 支持多種編程語言,讓PHP的開發(fā)和測試更加容易。
4. SeleniumHQ
作為已被廣泛使用的Web應(yīng)用自動化測試框架,Selenium包含四個主要組成部分:
- Selenium IDE
- Selenium RC
- Selenium WebDriver
- Selenium Grid
由于這些組件是為特定目的設(shè)計的,因此您可以根據(jù)實際測試需求進(jìn)行選擇。
安裝步驟
除了具有最新版本的PHP,您還需要安裝Composer,以管理項目的所有依賴項。
使用Selenium框架的優(yōu)勢
1. 屬于開源的自動化測試框架。
2. 具有雄厚的支持社區(qū)。
3. 易于安裝,且易于實現(xiàn)對用例的測試。
4. 可以在諸如Google Chrome、Firefox、Safari、Internet Explorer等不同的瀏覽器中運(yùn)行測試用例,并能夠無縫地測試瀏覽器的兼容性。
5. 可在多個瀏覽器和操作系統(tǒng)中,并行且快速地執(zhí)行測試腳本。
6. 可用于執(zhí)行與瀏覽器對應(yīng)的鍵盤和鼠標(biāo)之間的交互。
5. Behat
作為一種PHP行為驅(qū)動開發(fā)(BDD)框架,Behat專為PHP而構(gòu)建,并包含了許多核心的PHP模塊。由于其代碼是用簡單的英語編寫而成,因此它能夠被項目的各個成員快速地理解。我們通常將BDD結(jié)構(gòu)里包含的上下文、操作和結(jié)果,統(tǒng)稱為Gherkin。以下便是使用Gherkin語言編寫的簡單測試示例:
這些案例可以被寫入具有可擴(kuò)展功能的文件中(如loginTest.feature)。Behat可以從命令行來運(yùn)行測試,就像通過各種功能性的文件,來測試應(yīng)用程序一樣。
安裝步驟
- 步驟1:安裝PHP的最新版本。
- 步驟2:安裝Composer,以管理項目的所有PHP依賴關(guān)系。
- 步驟3:如果沒有Composer,則可以通過下載最新版本的behat.phar(https://github.com/Behat/Behat/releases)來設(shè)置框架。
使用Behat框架的優(yōu)點(diǎn)
1. 屬于一種開源的測試框架。
2. 易于安裝和實施。
3. 由于全部是由BDD和簡單英語(包含Given、When和Then關(guān)鍵字的Gherkin語言)編寫,因此項目成員易于理解需求和測試用例之間的映射關(guān)系。各種場景可被寫入功能性文件中,并由上下文、后續(xù)操作和最終預(yù)期結(jié)果所組成。
4. 其詳細(xì)的文檔可幫助用戶輕松地實現(xiàn)該框架。
6. Atoum
作為一款較新的PHP測試框架,Atoum不但簡單,而且易于實現(xiàn)單元測試。由于提供了諸如內(nèi)聯(lián)引擎、隔離引擎、以及并發(fā)引擎等各種內(nèi)置的執(zhí)行引擎,因此Atoum可以在不同的流程中,并行運(yùn)行各種測試用例。此外,Atoum通過提供模擬構(gòu)建的高級功能,來最大程度地減少測試運(yùn)行中的依賴性。
安裝步驟
在安裝與設(shè)置Atoum框架之前,請確保您的系統(tǒng)中已安裝了最新版本的PHP。
- 步驟1:從其官方網(wǎng)站--https://getcomposer.org/處下載并安裝Composer。
- 步驟2:通過鏈接--https://atoum.readthedocs.io/en/latest/installation.html#phar-archive下載并安裝PHAR文件。
- 步驟3:從Git存儲庫http://github.com/atoum/atoum.git處進(jìn)行克隆。
使用Atoum框架的優(yōu)勢
1. 易于編寫測試用例。
2. 提供了多個易于有效實現(xiàn)測試用例的斷言(assertions)。
3. 通過快速完成模擬測試,可以減少解析依賴關(guān)系時的等待時間,進(jìn)而提高測試的執(zhí)行效率。
4. 可生成不同格式的測試報告。
5. 可與Jenkins、Travis CI、CircleCI等持續(xù)集成工具相整合。
6. 可通過添加如下插件,讓測試框架更加穩(wěn)定。
a. json-schema-extension — 用于驗證JSON標(biāo)簽。
b. bdd-extension — 用于編寫具有更好可讀性的BDD樣式測試用例。
c. reports-extension - 用于編寫代碼覆蓋率的報告。
7. SimpleTest
作為一款PHP測試框架,SimpleTest可用于單元測試、Web測試、以及PHP Web開發(fā)的模擬對象。該框架通過內(nèi)置的Web瀏覽器,以方便用戶導(dǎo)航到不同的網(wǎng)頁上,并開展測試。
安裝步驟
- 步驟1:在系統(tǒng)中安裝最新版本的PHP。
- 步驟2:從其官網(wǎng)http://simpletest.sourceforge.net/處下載并設(shè)置該框架。
使用SimpleTest框架的優(yōu)勢
1. 對于單元測試非常實用。
2. 為表單、SSL、框架、代理、以及基本身份驗證,提供了廣泛的支持。
3. 具有內(nèi)置的Web瀏覽器,可協(xié)助測試Web應(yīng)用。
4. 可通過瀏覽器,以及命令行來執(zhí)行測試。
5. 可與PHPUnit一起使用。
6. 具有高度的靈活性,并能夠自定義輸出結(jié)果。
8. phpspec
作為另一種行為驅(qū)動開發(fā)(BDD)框架,phpspec可用于編寫和執(zhí)行由PHP編寫的測試。它能夠根據(jù)開發(fā)人員提供的規(guī)范,來驅(qū)動設(shè)計。
安裝步驟
- 步驟1:在系統(tǒng)中安裝PHP 5.6或7。
- 步驟2:根據(jù)鏈接--http://www.phpspec.net/en/stable/,正確地設(shè)置Composer,以自動管理所有項目的依賴項,否則phpspec將無法檢測到各種類。
- 步驟3:使用命令“composer require –dev Phpspec/Phpspec”,來安裝phpspec。之后,您會注意到所有依賴項都已被成功安裝在vendor文件夾中。對應(yīng)的可執(zhí)行文件也在vendor/bin/phpspec中。
使用phpspec框架的優(yōu)勢
- 能夠自動為類和方法生成框架。
- 具有一個模擬框架。
- 提供了14個內(nèi)置的匹配器,其中包括常見的比較匹配器、近似匹配器、類型匹配器、以及標(biāo)識匹配器等。它們可以驗證和描述測試的結(jié)果。
- 可以通過配置諸如DataProvider插件、框架集成插件、代碼生成插件、以及Matchers插件等,來擴(kuò)展該框架。
9. Peridot
Peridot常被開發(fā)人員譽(yù)為可使用BDD方法的優(yōu)秀PHP框架之一。在Peridot中用describe-it語法編寫出的測試代碼(見如下代碼段),不但易于閱讀和理解,而且便于維護(hù)。由于能夠快速地加載,且能并行地運(yùn)行測試套件,因此它被認(rèn)為是PHP框架中最快的一款。
安裝步驟
- 步驟1:使用Composer來輕松安裝該框架,并管理項目中的依賴項。
- 步驟2:可通過鏈接--https://peridot-php.github.io/#getting-started,來下載并手動安裝PHAR。
使用Peridot框架的優(yōu)勢
1. 可使用熟悉的describe-it語法,來創(chuàng)建清晰易讀的測試語言。
2. 為了實現(xiàn)擴(kuò)展,可使用各種類型的插件來自定義測試框架。
3. 可通過與WebDriver和數(shù)據(jù)庫相集成,來執(zhí)行測試。
4. 與上述Phpspec和PHPUnit之類的PHP框架相比,Peridot屬于輕量級和快速型。
5. 可協(xié)助執(zhí)行高速集成測試。
6. 提供針對不同特定目的而專門設(shè)計的報告器,如:Peridot List報告器、并發(fā)報告器、以及代碼覆蓋率報告器等。
10. Kahlan
作為一種單元式和行為驅(qū)動的PHP框架,Kahlan使用了類似于Peridot的describe-it語法。無需任何PHP擴(kuò)展,我們即可將該開源框架作為補(bǔ)丁植入(stub)代碼。
Kahlan同樣使用describe-it語法,來簡化用戶對于測試的維護(hù)和理解。其中,describe關(guān)鍵字通常包含了各種方法規(guī)范;而it關(guān)鍵字則包含待測試的簡明代碼。如下簡單代碼清晰地展示了describe-it語法:
安裝步驟
- 步驟1:應(yīng)事先在系統(tǒng)中安裝5.5版以上的PHP。如需進(jìn)行代碼覆蓋率分析,則要安裝phpdbg或xdebug。其中,Xdebug是一個可用于調(diào)試目的PHP擴(kuò)展。
- 步驟2:通過安裝Composer來管理項目的依賴項,并可參考Kahlan的官方說明--https://kahlan.github.io/docs/getting-started.html#installation,來手動設(shè)置該框架。
使用Kahlan框架的優(yōu)勢
1. 提供了許多可用于測試不同場景的匹配器。
2. 提供了可用于解決各種依賴關(guān)系的stub選項。
3. 內(nèi)置了報告與導(dǎo)出功能。
4. 易于擴(kuò)展,并可根據(jù)需求進(jìn)行定制。
5. 允許用戶使用諸如:beforeAll、beforeEach、afterEach、以及afterAll等安裝(setUp)和拆卸(tearDown)方法。
6. 具有內(nèi)置的代碼覆蓋率導(dǎo)出器,可用于獲取有關(guān)代碼覆蓋率的詳細(xì)信息。
原文標(biāo)題:10 of the Best PHP Testing Frameworks for 2021,作者: Shalini Baskaran
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】