作为一种可以支持测试和开发活动的工具与过程的集合,框架往往包含了各种实用的程序库、可重用的模块、测试数据的设置、以及其他依赖项。目前,无论是针对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)方法。
- 具有内置的代码覆盖率导出器,可用于获取有关代码覆盖率的详细信息。