我正在创建一个php脚本,它应该处理它收到的POST数据(来自AJAX或其他)并将其进一步发送(到另一个脚本)。 我想知道如何以" BDD方式开发它"。
到目前为止,我已经完成了"处理部分"通过使用Behat
编写功能并使用phpspec
创建所需的块(类)。
但是在测试以下功能时我被阻止了:
在我看来,我可以针对脚本本身编写测试,但后来我想知道:
有任何想法或建议吗?
答案 0 :(得分:1)
<强> BDD:强>
让我们尝试改变你的心态。 BDD是一个协作,自动化部分(测试)只是它的最后一部分。
您的验收测试,这是您通过Behat所做的,只应通过示例涵盖您的功能规范。这意味着,不要像通过单元/集成测试那样专注于测试所有可能的场景,而是仅指定描述您的功能的最小值,足以揭示该功能的意图。
在大多数情况下,示例仅涵盖积极情景,1-5就足够了。
这里没什么帮助。问问自己,如果这些示例是客户文档的一部分,您会提到什么? 通过示例的规范不亚于能够自动测试的应用程序的文档。
测试级别:
不幸的是,我不知道你的脚本的技术背景,所以答案将更多是一个理论。
验证测试的级别越多,测试的越多,覆盖的越多,但创建和维护的成本越高:
有我个人的做法。因为BDD在TDD方面是最好的,所以我总是从第5点开始,有时,我还添加更高级别3)以确保应用程序整体正常工作。我很少使用2)级和1)级,因为我不需要通过验收测试来测试我的基础设施,这不是他们的目的。
答案 1 :(得分:0)
这更像是一个评论而不是一个正确的答案,但它不适合评论......
首先,你正在努力test all the things。但是为了做BDD(因此使用Behat),对于利益相关者或业务的一部分,您应该与谁有关于手头功能的对话,有某种好处。
你只是描述一个接收特定输入的脚本并将其转换为特定输出的事实,听起来就像你对单元测试所期望的那样,对吗?
另一方面,如果这个特定的脚本正在解决利益相关者的需求,而且这个脚本有助于满足的故事或场景,我认为系统的状态会有某种变化,你可以测试。如果是这样,那么继续使用Behat描述它,与适当的利益相关者进行对话。我想您需要为系统设置一个环境,然后运行脚本,然后检查其状态是否已正确更改。