共计 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 在进行自动化测试过程中具备如下劣势:
- 能够无效地剖析代码的覆盖率。通过深入分析,它能够生成蕴含有各种代码覆盖率信息的报告,或 HTML/XML 日志文件。在碰到无奈测试的代码块时,咱们能够应用诸如 @codeCoverageIgnore、@codeCoverageIgnoreStart 和 @codeCoverageIgnoreEnd 之类的正文,在执行代码覆盖率剖析过程中,疏忽某些代码块。当然,咱们也能够通过应用 @covers 正文,来指定某个代码块去执行代码覆盖率剖析。
- 在执行测试用例时,某些测试可能无奈被执行到。对此,PHPUnit 提供了一个可触发异样的接口。
- 如上面的简略 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 框架的劣势
- 作为“全栈测试框架”,您能够对指标利用进行单元测试、功能测试、以及验收测试。
- 通过应用简略的命名规定,它可能帮助用户了解代码。其中,actions 关键字可用于执行诸如:单击、按键、填充输出字段等用户操作;assertion 关键字可用于执行验证,就像应用 TestNG 和 Junit 进行验证一样; 而 grabbers 则可用于提取相干信息。
- 提供了一种可在 JBehave 和 Cucumber 等行为驱动开发 (BDD) 中,运行用户故事 (user stories) 的选项。
- 提供了各种对于数据库测试十分实用的数据库模块。
- 具备 WebDriver 模块,可用于验收测试。
- 具备对于 Web 服务测试十分实用的 REST 模块。为了验证 JSON 响应,该模块可从特定的 JSON 标签中提取数据,并验证各种 XML 响应。
- 有助于与 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 框架的长处
- 提供了无需订阅或付费的开源框架服务,这对于 PHP 的 Web 开发老手来说,十分实用。
- 反对多种编程语言,让 PHP 的开发和测试更加容易。
4. SeleniumHQ
作为已被宽泛应用的 Web 利用自动化测试框架,Selenium 蕴含四个次要组成部分:
- Selenium IDE
- Selenium RC
- Selenium WebDriver
- Selenium Grid
因为这些组件是为特定目标设计的,因而您能够依据理论测试需要进行抉择。
装置步骤
除了具备最新版本的 PHP,您还须要装置 Composer,以治理我的项目的所有依赖项。
应用 Selenium 框架的劣势
- 属于开源的自动化测试框架。
- 具备雄厚的反对社区。
- 易于装置,且易于实现对用例的测试。
- 能够在诸如 Google Chrome、Firefox、Safari、Internet Explorer 等不同的浏览器中运行测试用例,并可能无缝地测试浏览器的兼容性。
- 可在多个浏览器和操作系统中,并行且疾速地执行测试脚本。
- 可用于执行与浏览器对应的键盘和鼠标之间的交互。
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 框架的长处
- 属于一种开源的测试框架。
- 易于装置和施行。
- 因为全副是由 BDD 和简略英语 (蕴含 Given、When 和 Then 关键字的 Gherkin 语言) 编写,因而我的项目成员易于了解需要和测试用例之间的映射关系。各种场景可被写入功能性文件中,并由上下文、后续操作和最终预期后果所组成。
- 其具体的文档可帮忙用户轻松地实现该框架。
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 框架的劣势
- 易于编写测试用例。
- 提供了多个易于无效实现测试用例的断言(assertions)。
- 通过疾速实现模仿测试,能够缩小解析依赖关系时的等待时间,进而进步测试的执行效率。
- 可生成不同格局的测试报告。
- 可与 Jenkins、Travis CI、CircleCI 等继续集成工具相整合。
- 可通过增加如下插件,让测试框架更加稳固。
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 框架的劣势
- 对于单元测试十分实用。
- 为表单、SSL、框架、代理、以及根本身份验证,提供了宽泛的反对。
- 具备内置的 Web 浏览器,可帮助测试 Web 利用。
- 可通过浏览器,以及命令行来执行测试。
- 可与 PHPUnit 一起应用。
- 具备高度的灵活性,并可能自定义输入后果。
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 框架的劣势
- 可应用相熟的 describe-it 语法,来创立清晰易读的测试语言。
- 为了实现扩大,可应用各种类型的插件来自定义测试框架。
- 可通过与 WebDriver 和数据库相集成,来执行测试。
- 与上述 Phpspec 和 PHPUnit 之类的 PHP 框架相比,Peridot 属于轻量级和疾速型。
- 可协助执行高速集成测试。
- 提供针对不同特定目标而专门设计的报告器,如: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 框架的劣势
- 提供了许多可用于测试不同场景的匹配器。
- 提供了可用于解决各种依赖关系的 stub 选项。
- 内置了报告与导出性能。
- 易于扩大,并可依据需要进行定制。
- 容许用户应用诸如:beforeAll、beforeEach、afterEach、以及 afterAll 等装置 (setUp) 和装配 (tearDown) 办法。
- 具备内置的代码覆盖率导出器,可用于获取无关代码覆盖率的详细信息。