关于php框架:值得推荐的十种PHP测试框架

54次阅读

共计 5290 个字符,预计需要花费 14 分钟才能阅读完成。

作为一种能够反对测试和开发流动的工具与过程的汇合,框架往往蕴含了各种实用的程序库、可重用的模块、测试数据的设置、以及其余依赖项。目前,无论是针对 Web 的开发、还是测试,业界都有多种成熟框架,可供您依据理论需要进行抉择,进而进步团队的效率和生产力。而作为一个优良的框架,它通常须要具备如下长处:

  • 保护具备良好定义的代码构造。
  • 提供能无效用于测试的可重用模块和库。
  • 可放慢测试的过程与效率。
  • 可防止代码的反复。
  • 可能剖析需要与测试的范畴。

同时,在所有服务器端的编程语言中,有 80% 的网站用到了 PHP。因而,咱们有必要对针对 PHP 测试框架发展深入研究,以不便采纳规范的格局,编写出各种测试用例。上面,我将和您一起探讨十种优良 PHP 测试框架是如何实现测试自动化,以及它们各自的优缺点。

1. PHPUnit

作为一种面向程序员的最罕用 PHP 测试框架,PHPUnit 非常适合单元测试。它是由 Sebastian Bergmann 开发的,属于 xUnit 框架体系结构中的一个实例。

装置步骤

您须要当时装置 PHP 7.3 版或更高版本,能力装置 PHPUnit 的最新版本 –PHPUnit 9.3。以下便是 PHPUnit 的装置步骤。

  • 步骤 1:从链接 https://www.php.net/phar 处下 … Archive)。PHAR 已将所有必须的 PHPUnit 依赖项,都捆绑在了一个文件中。
  • 步骤 2:从链接 https://getcomposer.org/ 处,装置 Composer,以治理我的项目中的所有依赖项。

应用 PHPUnit 框架的劣势

作为公认好用的 PHP 框架之一,PHPUnit 在进行自动化测试过程中具备如下劣势:

  1. 能够无效地剖析代码的覆盖率。通过深入分析,它能够生成蕴含有各种代码覆盖率信息的报告,或 HTML/XML 日志文件。在碰到无奈测试的代码块时,咱们能够应用诸如 @codeCoverageIgnore、@codeCoverageIgnoreStart 和 @codeCoverageIgnoreEnd 之类的正文,在执行代码覆盖率剖析过程中,疏忽某些代码块。当然,咱们也能够通过应用 @covers 正文,来指定某个代码块去执行代码覆盖率剖析。
  2. 在执行测试用例时,某些测试可能无奈被执行到。对此,PHPUnit 提供了一个可触发异样的接口。
  3. 如上面的简略 XML 配置文件所示,咱们能够将所有测试组合到一个套件中,并在 XML 配置文件的帮助下触发运行。

2. Codeception

因为具备易于应用和保护代码模块的能力,因而 Codeception 的应用范畴十分广。它提供了多个模块,能够在单个框架中反对验收测试、功能测试、以及单元测试。

装置步骤

装置 Codeception 的先决条件为:

  • 装置了 PHP 5.6 或更新版本。
  • 已启用了 CURL。

Codeception 的具体装置步骤为:

  • 步骤 1:从官网—https://getcomposer.org/downl…,下载并装置用于治理 PHP 中各个依赖项的 composer。它将有助于申明要在我的项目中应用到的代码库,并对其进行治理。
  • 步骤 2:从 Codeception 的官网—https://codeception.com/insta…,下载并装置 PHAR。

应用 Codeception 框架的劣势

  1. 作为“全栈测试框架”,您能够对指标利用进行单元测试、功能测试、以及验收测试。
  2. 通过应用简略的命名规定,它可能帮助用户了解代码。其中,actions 关键字可用于执行诸如:单击、按键、填充输出字段等用户操作;assertion 关键字可用于执行验证,就像应用 TestNG 和 Junit 进行验证一样; 而 grabbers 则可用于提取相干信息。
  3. 提供了一种可在 JBehave 和 Cucumber 等行为驱动开发 (BDD) 中,运行用户故事 (user stories) 的选项。
  4. 提供了各种对于数据库测试十分实用的数据库模块。
  5. 具备 WebDriver 模块,可用于验收测试。
  6. 具备对于 Web 服务测试十分实用的 REST 模块。为了验证 JSON 响应,该模块可从特定的 JSON 标签中提取数据,并验证各种 XML 响应。
  7. 有助于与 Jenkins 和 Teamcity 等继续集成工具相集成,以帮助生成测试报告。

3. Storyplayer

作为一个开源的 PHP 测试框架,Storyplayer 可用于执行端到端测试、API 自动化测试、以及 Web 利用测试。因为它提供了对于多种编程语言的反对,因而堪称优良 PHP 框架之一。

装置步骤

  • 步骤 1:目前,它仅反对 Apple OSX Yosemite 和 Ubuntu Linux Desktop 14.10,而且须要当时装置 PHP。
  • 步骤 2:依据其官网要求(https://datasift.github.io/st…,须要额定增加诸如 CURL、JSON、OpenSSL 等扩大。

应用 Storyplayer 框架的长处

  1. 提供了无需订阅或付费的开源框架服务,这对于 PHP 的 Web 开发老手来说,十分实用。
  2. 反对多种编程语言,让 PHP 的开发和测试更加容易。

4. SeleniumHQ

作为已被宽泛应用的 Web 利用自动化测试框架,Selenium 蕴含四个次要组成部分:

  • Selenium IDE
  • Selenium RC
  • Selenium WebDriver
  • Selenium Grid

因为这些组件是为特定目标设计的,因而您能够依据理论测试需要进行抉择。

装置步骤

除了具备最新版本的 PHP,您还须要装置 Composer,以治理我的项目的所有依赖项。

应用 Selenium 框架的劣势

  1. 属于开源的自动化测试框架。
  2. 具备雄厚的反对社区。
  3. 易于装置,且易于实现对用例的测试。
  4. 能够在诸如 Google Chrome、Firefox、Safari、Internet Explorer 等不同的浏览器中运行测试用例,并可能无缝地测试浏览器的兼容性。
  5. 可在多个浏览器和操作系统中,并行且疾速地执行测试脚本。
  6. 可用于执行与浏览器对应的键盘和鼠标之间的交互。

5. Behat

作为一种 PHP 行为驱动开发 (BDD) 框架,Behat 专为 PHP 而构建,并蕴含了许多外围的 PHP 模块。因为其代码是用简略的英语编写而成,因而它可能被我的项目的各个成员疾速地了解。咱们通常将 BDD 构造里蕴含的上下文、操作和后果,统称为 Gherkin。以下便是应用 Gherkin 语言编写的简略测试示例:

这些案例能够被写入具备可扩大性能的文件中(如 loginTest.feature)。Behat 能够从命令行来运行测试,就像通过各种功能性的文件,来测试应用程序一样。

装置步骤

  • 步骤 1:装置 PHP 的最新版本。
  • 步骤 2:装置 Composer,以治理我的项目的所有 PHP 依赖关系。
  • 步骤 3:如果没有 Composer,则能够通过下载最新版本的 behat.phar(https://github.com/Behat/Beha…。

应用 Behat 框架的长处

  1. 属于一种开源的测试框架。
  2. 易于装置和施行。
  3. 因为全副是由 BDD 和简略英语 (蕴含 Given、When 和 Then 关键字的 Gherkin 语言) 编写,因而我的项目成员易于了解需要和测试用例之间的映射关系。各种场景可被写入功能性文件中,并由上下文、后续操作和最终预期后果所组成。
  4. 其具体的文档可帮忙用户轻松地实现该框架。

6. Atoum

作为一款较新的 PHP 测试框架,Atoum 岂但简略,而且易于实现单元测试。因为提供了诸如内联引擎、隔离引擎、以及并发引擎等各种内置的执行引擎,因而 Atoum 能够在不同的流程中,并行运行各种测试用例。此外,Atoum 通过提供模仿构建的高级性能,来最大水平地缩小测试运行中的依赖性。

装置步骤

在装置与设置 Atoum 框架之前,请确保您的零碎中已装置了最新版本的 PHP。

  • 步骤 1:从其官方网站 –https://getcomposer.org/ 处下 …。
  • 步骤 2:通过链接 –https://atoum.readthedocs.io/…。
  • 步骤 3:从 Git 存储库 http://github.com/atoum/atoum…。

应用 Atoum 框架的劣势

  1. 易于编写测试用例。
  2. 提供了多个易于无效实现测试用例的断言(assertions)。
  3. 通过疾速实现模仿测试,能够缩小解析依赖关系时的等待时间,进而进步测试的执行效率。
  4. 可生成不同格局的测试报告。
  5. 可与 Jenkins、Travis CI、CircleCI 等继续集成工具相整合。
  6. 可通过增加如下插件,让测试框架更加稳固。

a. json-schema-extension — 用于验证 JSON 标签。

b. bdd-extension — 用于编写具备更好可读性的 BDD 款式测试用例。

c. reports-extension – 用于编写代码覆盖率的报告。

7. SimpleTest

作为一款 PHP 测试框架,SimpleTest 可用于单元测试、Web 测试、以及 PHP Web 开发的模仿对象。该框架通过内置的 Web 浏览器,以不便用户导航到不同的网页上,并发展测试。

装置步骤

  • 步骤 1:在零碎中装置最新版本的 PHP。
  • 步骤 2:从其官网 http://simpletest.sourceforge…。

应用 SimpleTest 框架的劣势

  1. 对于单元测试十分实用。
  2. 为表单、SSL、框架、代理、以及根本身份验证,提供了宽泛的反对。
  3. 具备内置的 Web 浏览器,可帮助测试 Web 利用。
  4. 可通过浏览器,以及命令行来执行测试。
  5. 可与 PHPUnit 一起应用。
  6. 具备高度的灵活性,并可能自定义输入后果。

8. phpspec

作为另一种行为驱动开发 (BDD) 框架,phpspec 可用于编写和执行由 PHP 编写的测试。它可能依据开发人员提供的标准,来驱动设计。

装置步骤

  • 步骤 1:在零碎中装置 PHP 5.6 或 7。
  • 步骤 2:依据链接 –http://www.phpspec.net/en/sta…,正确地设置 Composer,以主动治理所有我的项目的依赖项,否则 phpspec 将无奈检测到各种类。
  • 步骤 3:应用命令“composer require –dev Phpspec/Phpspec”,来装置 phpspec。之后,您会留神到所有依赖项都已被胜利装置在 vendor 文件夹中。对应的可执行文件也在 vendor/bin/phpspec 中。

应用 phpspec 框架的劣势

  • 可能主动为类和办法生成框架。
  • 具备一个模仿框架。
  • 提供了 14 个内置的匹配器,其中包含常见的比拟匹配器、近似匹配器、类型匹配器、以及标识匹配器等。它们能够验证和形容测试的后果。
  • 能够通过配置诸如 DataProvider 插件、框架集成插件、代码生成插件、以及 Matchers 插件等,来扩大该框架。

9. Peridot

Peridot 常被开发人员誉为可应用 BDD 办法的优良 PHP 框架之一。在 Peridot 中用 describe-it 语法编写出的测试代码(见如下代码段),岂但易于浏览和了解,而且便于保护。因为可能疾速地加载,且能并行地运行测试套件,因而它被认为是 PHP 框架中最快的一款。

装置步骤

  • 步骤 1:应用 Composer 来轻松装置该框架,并治理我的项目中的依赖项。
  • 步骤 2:可通过链接 –https://peridot-php.github.io…,来下载并手动装置 PHAR。

应用 Peridot 框架的劣势

  1. 可应用相熟的 describe-it 语法,来创立清晰易读的测试语言。
  2. 为了实现扩大,可应用各种类型的插件来自定义测试框架。
  3. 可通过与 WebDriver 和数据库相集成,来执行测试。
  4. 与上述 Phpspec 和 PHPUnit 之类的 PHP 框架相比,Peridot 属于轻量级和疾速型。
  5. 可协助执行高速集成测试。
  6. 提供针对不同特定目标而专门设计的报告器,如:Peridot List 报告器、并发报告器、以及代码覆盖率报告器等。

10. Kahlan

作为一种单元式和行为驱动的 PHP 框架,Kahlan 应用了相似于 Peridot 的 describe-it 语法。无需任何 PHP 扩大,咱们即可将该开源框架作为补丁植入 (stub) 代码。

Kahlan 同样应用 describe-it 语法,来简化用户对于测试的保护和了解。其中,describe 关键字通常蕴含了各种办法标准; 而 it 关键字则蕴含待测试的扼要代码。如下简略代码清晰地展现了 describe-it 语法:

装置步骤

  • 步骤 1:应当时在零碎中装置 5.5 版以上的 PHP。如需进行代码覆盖率剖析,则要装置 phpdbg 或 xdebug。其中,Xdebug 是一个可用于调试目标 PHP 扩大。
  • 步骤 2:通过装置 Composer 来治理我的项目的依赖项,并可参考 Kahlan 的官网阐明 –https://kahlan.github.io/docs…,来手动设置该框架。

应用 Kahlan 框架的劣势

  1. 提供了许多可用于测试不同场景的匹配器。
  2. 提供了可用于解决各种依赖关系的 stub 选项。
  3. 内置了报告与导出性能。
  4. 易于扩大,并可依据需要进行定制。
  5. 容许用户应用诸如:beforeAll、beforeEach、afterEach、以及 afterAll 等装置 (setUp) 和装配 (tearDown) 办法。
  6. 具备内置的代码覆盖率导出器,可用于获取无关代码覆盖率的详细信息。
正文完
 0