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