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