如何广泛的支持,开发正在测试中PHP世界?与Java?有红宝石/轨?我用Google搜索发现,测试框架的存在,但我想知道如果他们在广泛使用。

做的主要PHP IDE的具有内置的试跑步的方式蚀的Java工具或//需要将物品寄的红宝石/轨道的工具做什么?是测试建成PHP视的框架,如与轨道?

我问是因为一个集团在我工作的地方,想要雇用某人的发展PHP应用程序。我担心的质量并维护作为我可能会被要求支持这件事。

有帮助吗?

解决方案

至少有两个成熟的、独立的、JUnit风格测试套可用的,命名的 进行SimpleTest, 分别。

作为迄今为止视框架中去,由具有其自己的测试框架命名的 石灰, ,代码有一个点火器 unit_test 图书馆和 Cake 依靠上述SimpleTest.

我知道,Zend室已经建立在支持进行试验,并且两者进行和SimpleTest有的命令行选手所以融入任何工作流程是可能的。

该工具是没有在PHP世界如果开发人员想要利用他们的优势,和聪明的商店不利用它们。

的告诫是你的课程PHP的投诉。有两个PHP社区;PHP作为一个平台,为建立软件和PHP作为一种交互的网服务器、网络浏览器和数据库产生的应用样的事情在网。它是那么一个黑色和白色的东西多连续性;在那些更多的软件开发商侧单元测试和文字的支持和使用尽可能多的,因为它是在任何其他平台。其中的"拼凑在一起一堆的东西,我不明白,但仍然取得结果的人",这是闻所未闻的。

有很多非框架/定制框架的遗产PHP code围绕这是难以获得一个有用的测试工具的周围。PHP还本身很容易模式依赖的存在浏览器的环境中运行。我没有任何证据来支持这一行动的其他比我自己的意见,但很多PHP商店关心的测试结束依赖于接受测试(即硒)作为代替用于实际单位测试中,测试的第一个,等等。发展。

在您的具体情况,采访了地狱的开发你的小组是要租用。

  1. 问他们什么单元的测试框架的,他们使用

  2. 问问他们描述,一般而言,现实世界的例子的时候,他们开发了一个新的功能及其支持测试

  3. 问问他们描述,一般而言,现实世界的例子的时候他们的测试失败和他们做了什么来解决这种情况

你不太感兴趣的具体情况,他们以描述和更感兴趣多么舒适,他们都在讨论他们的知识代码测试。

其他提示

每当我TDD的一个项目来完成风格的工具,我有困难得到我的头在正确的位置。我发现,使用而设计的工具的行为驱动的发展或者"规范的实例"让我更容易 做TDD的权利 --即重点放在设计、暴露意图和 描述的行为在特定情况下. 测试。

这就是说,我想向大家介绍 佩奇 进入对话。从自述在项目网站。

佩奇的是一个很小的行为驱动的发展图书馆PHP5.3、拉最高反射率或JSpec.

如果你使用JSpec或更好的是 茉莉-BDD (JavaScript)的胸肌式的描述行为应该很熟悉的。我找到这个风格伟大的组分级的指示。如果你是在寻找一个PHP的工具,用于功能水平的规范(故事或用户验收试验)考虑 Behat.

回到佩奇,这是一个实例选自佩奇项目地点:

describe("Bowling", function() {
  it("should score 0 for a gutter game", function() {
    $bowling = new Bowling();
    for ($i=0; $i < 20; $i++) {
      $bowling->hit(0);
    }
    expect($bowling->score)->to_equal(0);
  });
});

是的,这是一个PHP规范。在寻找通过的胸肌源,它看起来像该作者是能够把这种关闭,通过利用新的辣味在PHP5.3+,Lambda和关闭。所以我猜这意味着不能使用的胸肌在任何项目的基础上PHP < 5.3(仅供参考).

此外,佩奇的是不成熟进行或SimpleTest.然而,我认为的支持者BDD在PHP社会应当支持增长的工具,如佩奇,鼓励"规范的实例"或BDD没有的混乱带来的具有使用传统来完成测试工具。

这些天我的工作更Python于PHP.然而,我下次拿起PHP项目,我将非常乐意如果我有一个成熟的、社会的支持工具等佩奇工艺的规格软件。

我曾与贝哈特/水貂 http://behat.org

一个惊人的经验

我同意与他人PHP作为单元测试的平台是不是一个有趣的或经验BDD是,如果你使用任何PHP框架,以最好的方式去

结束语我周围的作曲家为回购构建工具头是最大的绊脚石,但我们能够贝哈特水貂硒webdriver的独立服务器使用JAR作为一个惊人的设计,测试和回归测试工具。我们曾经对我们的一个詹金斯服务器上CakePHP程序运行我们的回归测试套件,但它被证明是不那么很“失败快”不够

现在我们的工作流程是这样的: 创建小黄瓜的故事 完善的故事 写功能和存根出任何新的一步DEFS 开始编码的PHP溶液,以测试 然后,在结束时,我们已经用BDD测试工作特征或缺陷修复覆盖它

我们设置一个Ubuntu VM与工作贝哈特设置,并将其复制到每个工作站。我们烤到我们的过程。我们刚刚拉下运行测试,然后开始编写新的东西的变化。

我们写了一个外壳脚本,自动运行的MySQL转储和这使得重构代码微风每个特征之前加载它们。

在水貂WebAssert类为您提供您需要验证行为的所有断言 常会/ CommonContext类是伟大的使用CSS或XPath。

我已经使用水豚/ webdriver的Java和前Rails的项目,发现设置架空/学习曲线相比贝哈特太高。

此外,该图书馆/框架, Alan 已经提到的,你可以使用的mod_perl Apache::试验,这是我我用什么作为一种束。它允许我非常简单的集成试验到我的释放过程。束使用 水龙头 输出(试验任何协议),以确定是否通过了测试或失败,使用库喜欢 测试::简单 或测试::更多(PerlPHP).

开箱Apache::测支持编写测试在Perl and PHP.在我自己的项目,它采取了一点点 位的诡计 和大量的阅读来真正得到它的工作,但一个实现的 测试::更多的PHP 是建立在对束。在运行的所有测试写在PHP和Perl样做是通过一个单一的命令和任何失败都是拍摄Apache::测试,注意到尽可能什么错误。

真棒的一部分关于所有这一切都是,你甚至可以利用进行,或者简单的试验与前两个测试框架。通过运行测试在各个图书馆,可以使用PHP执行情况的测试::更多的(或甚至Perl通过测试stdout)和回吐掉水龙头为您的束以解释。

一定要读 Apache::测试 文件和 mod_perl指南运行Apache::测试.此外,我发现的文章 在这里, 一个很大的帮助。

作为一个简单的例子,可以安装一个试验在Perl在非常少数的代码行将通过所有网站上的网页(有链接)和验证的所有结果中的'200 OK 答复并没有任何分析错误:

#!perl

use strict;
use warnings;

use Apache::Test qw(:withtestmore);
use Apache::TestRequest;
use Test::More;
use Test::WWW::Mechanize;
use WWW::CheckSite::Validator;
use WWW::CheckSite::Spider;

plan 'no_plan';

my $config = Apache::Test::config();
my $host = "http://". Apache::TestRequest::hostport($config) || '';

my $s = WWW::CheckSite::Spider->new(
    uri => $host,
    ua_class => 'Test::WWW::Mechanize',
);
my $m = $s->current_agent;

while (my $page = $s->get_page) {
    is($m->status(), "200", $m->uri() ." retrieved successfully.");
    $m->content_lacks("Parse Error", $m->uri() ." does not contain syntax errors.");
}

在过去的项目中,我使用PHPUnit的,这给我留下缺憾。 测试的PHPUnit的+从命令行运行, 说得那么太多时间花在编码测试,不够快,似乎真的在限制的方式代码,我不喜欢的风格(对象是更容易测试,因此它似乎有点儿青睐的对象)。

硒是,我们谈到了,但从来没有抽时间去进入游戏的解决方案,我想我们真的会从那种输出级测试中受益。

在这个最新的项目,首席程序员已经采取了更多的功能的编程方法,因为我们一直在修改软件。当我提到,我想通过TDD编写,他刮起了定制的解决方案在一天或更短的时间,我认为一直有效,我作为PHPUnit的使用。此外,他还让我大开眼界关于面向对象与函数式编程的问题。

第一个项目,白手起家,在一楼,面向对象的编码,大单元测试框架,它成为整体并迅速陷入困境。第二个项目,以及建立CMS软件提供5年历史的老代码,但功能的编程范式和一个简单的测试框架(我们实际上往往利用了PHP的assert)使它得到更简单,而不是复杂性的增加。

在第二个项目,也从来没有执行硒的点(和我仍然认为这将是有益的),但功能的编程方式,它更容易处理的代码测试。

我刚刚发现这个问题,虽然我仍然在"研究阶段",在搞清楚这是怎么回事。我刚刚发现的东西红宝石在轨道上称为"黄瓜" http://cukes.info/

它基本上是'的故事驱动的发展对于宝石和很可能是一个黄金标准的领域的功能测试的,至少作为我已经看到在我的旅行。(我把这个放上没有公开,所以专家可以纠正我,如果我错了)

作为一个例子的语言在黄瓜,你已经得到的东西,非常密切类似于SQL。 似乎甚至更多的人阅读。从腌青瓜页前他们的语言是这样的:

 Scenario: Add two numbers
      Given I have entered 50 in the calculator
      And I have entered 70 in the calculator
      When I press add
      Then the result should be 120 on the screen

上述将编纂和运行,作为试验。

现在这就是序言点来回答您的问题有关的PHP-BDD&影响。

在回应上述意见,进行将允许单元的测试,并根据这篇文章: http://sebastian-bergmann.de/archives/738-Support-for-BDD-and-Stories-in-PHPUnit-3.3.html 还支持"的故事风格"BDD测试。

扩大上述答复相对于"SIMPLETEST"上所述,圣系统具有一个建立在浏览器的对象类用浏览器自动化,同时进行已经扩展为硒浏览器自动化 http://seleniumhq.com (优势的硒与SimpleTest是,Selinium将运行任何页javascript同时SimpleTest不会).

我希望你找到这个信息很有用,因为它的结果的一个月数的个人的研究和实际试验和错误的,与上述技术。如果有专家有谁可以澄清和改进我的理解上述,我欢迎反馈。

  • 亚历克斯。

迈克尔的Booth在两种语言的BDD测试功能比较:

http://mechanicalrobotfish.com /帖/ 117-红宝石VS-PHP-BDD-美容竞赛-没有比赛

的结论是,PHP BDD工具和培养是在这一点上落后。

当然,没有什么与什么是提供给一个Ruby程序员相媲美,无论是在知识方面(书籍,视频,文章,博客文章)或工具(Rspec的,早该,工厂女孩,摩卡,黄瓜)。

您可能想看看 PHPStorm 。我喜欢使用的PHPUnit从IDE中的测试运行。

对于BDD测试现在我正在开发 “谱” 框架: https://github.com/m -haritonov /频谱

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top