Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7859281
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 2, 20262026-06-02T21:51:26+00:00 2026-06-02T21:51:26+00:00

BDD is an outside-in methodology, which as I understand it, means you start with

  • 0

BDD is an “outside-in” methodology, which as I understand it, means you start with what you know. You write your stories and scenarios, and then implement the outermost domain objects, moving “inwards” and “deliberately” discovering collaborators as you go–down through service layers, domain layers, etc. For a collaborator that doesn’t exist yet, you mock it (or “fake it”) until you make it. (I’m stealing some of these terms straight from Dan North and Kent Beck).

So, how does a UI fit into this?

Borrowing from one of North’s blog entries, he rewrites this:

Given an unauthenticated user
When the user tries to navigate to the welcome page
Then they should be redirected to the login page
When the user enters a valid name in the Name field
And the user enters the corresponding password in the Password field
And the user presses the Login button
Then they should be directed to the welcome page

into this:

Given an unauthenticated user
When the user tries to access a restricted asset
Then they should be directed to a login page
When the user submits valid credentials
Then they should be redirected back to the restricted content

He does this to eliminate language from non-relevant domains, one of which is the UI (“Name field”, “Password field”, “Login button”). Now the UI can change and the story (or rather, the story’s intent) doesn’t break.

So when I write the implementation for this story, do I use the UI or not? Is it better to fire up a browser and execute “the user submits valid credentials” via a Selenium test, or to connect to the underlying implementation directly (such as an authentication service)? BTW, I’m using jBehave as my BDD framework, but it could just as easily be Cucumber, rSpec, or a number of others.

I tend not to test UI in an automated fashion, and I’m cautious of GUI automation tools like Selenium because I think the tests (1) can be overly brittle and (2) get run where the cost of execution is the greatest. So my inclination is to manually test the UI for aesthetics and usability and leave the business logic to lower, more easily automatible layers. (And possibly layers less likely to change.)

But I’m open to being converted on this. So, is BDD for UI or not?

PS. I have read all the posts on SO I could find on this topic, and none really address my question. This one gets closest, but I’m not talking about separating the UI into a separate story; rather, I’m talking about ignoring it entirely for the purposes of BDD.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-02T21:51:29+00:00Added an answer on June 2, 2026 at 9:51 pm

    Most people who use automated BDD tools use it at the UI layer. I’ve seen a few teams take it to the next layer down – the controller or presenter layer – because their UI changes too frequently. One team automated from the UI on their customer-facing site and from the controller on the admin site, since if something was broken they could easily fix it.

    Mostly BDD is designed to help you have clear, unambiguous conversations with your stakeholders (or to help you discover the places where ambiguity still exists!) and carry the language into the code. The conversations are much more important than the tools.

    If you use the language that the business use when writing your steps, and keep them at a high level as Dan suggests, they should be far less brittle and more easily maintainable. These scenarios aren’t really tests; they’re examples of how you’re going to use the system, which you can use in conversation, and which give you tests as a nice by-product. Having the conversations around the examples is more important than the automation, whichever level you do it at.

    I’d say, if your UI is stable, give automation a try, and if it doesn’t work for you, either drop to a lower level or ensure you’ve got sufficient manual testing. If you’re testing aesthetics anyway that will help (and never, ever use automation to test aesthetics!) If your UI is not stable, don’t automate it – you’re just adding commitment to something that you know is probably going to change, and automation in that case will make it harder.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

In Cucumber you define steps which define your BDD syntax; for instance, your test
Having a look at BDD frameworks and I can't help but wonder which one
I am newbie to Rails and trying to write application with TDD and BDD.
I am running BDD steps with cucumber to implement my autlogic login behavior. Scenario:
I want to start using Behaviour Driven Development (BDD) in Mono/MonoDevelop using a natural
I have been using Jasmine to write BDD tests for a web app. I
I recently heard of BDD and found it very similar to TDD. Which of
Does anyone know of a BDD framework for C++ that allows the execution of
I am trying to write an interface between RSPEC (ruby flavoured BDD) and a
What would you recommend to start learning and applying BDD on a casual game

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.