如何使用 Cucumber 来测试我们的设计是不是分层

Posted

技术标签:

【中文标题】如何使用 Cucumber 来测试我们的设计是不是分层【英文标题】:How to use Cucumber to test if our design is split by layer如何使用 Cucumber 来测试我们的设计是否分层 【发布时间】:2014-09-17 19:56:07 【问题描述】:

从我了解到的书中,大多数 Cucumber 测试都是从外到内(自上而下的方法)开始的。它从 UI(Web 或桌面应用程序)开始。

我的团队是 Web 服务团队,我们有独立的团队负责 UI 层,这是我们无法控制的。我的问题是,我们 Cucumber 测试的边界是什么?是从 Web 服务层开始的吗?

自顶向下方法的一个好处是,它允许方法被拉取(方法是根据调用对象的需要创建的)而不是被推送(方法是通过猜测调用对象将如何创建的用它)。

但是,如果我们在 Web 服务层本身上使用黄瓜测试(没有调用对象,UI 层),似乎我们不是在做自顶向下的方法(通过拉取方法)。

请指教如何在 Web 服务层上运行黄瓜测试。

【问题讨论】:

【参考方案1】:

您仍然可以通过调用服务层的表示层的深奥用户视角来编写 Cucumber 测试。

例如,你的业务分析师给了你一个共同的要求(我故意让这个例子简单!):

As a user
I want to log-on
So that I can access a particular service

接受标准是用户将提供有效的凭据(即有效的用户名和密码)。

因此,有了这个故事,表示层团队将能够使用 Cucumber 测试来推动开发,他们将在其中模拟对您的服务层的调用。

您的服务层团队也可以并行编写涵盖他们关注点的测试,例如

Given the authentication service knows about the user "jdoe"
When the client requests to authenticate "jdoe" with the password "contrived" 
Then the response is grant user access

可以在here 找到更详细地介绍服务级别黄瓜测试的精彩文章。

【讨论】:

@janetsmith 很高兴我能帮上忙 :)

以上是关于如何使用 Cucumber 来测试我们的设计是不是分层的主要内容,如果未能解决你的问题,请参考以下文章

测试使用带有 Cucumber 的设计令牌可验证模块的 JSON API

Cucumber + XCTest 集成?

如何在 Cucumber 测试套件中订购功能文件?

如何从不同的main方法调用Cucumber runner类

行为驱动:Cucumber + Selenium + Java - 使用标签实现测试分组

Cucumber测试驱动开发