Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

TDD vs BDD vs DDD

No description
by

Sergey Sergyenko

on 19 February 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of TDD vs BDD vs DDD

TDD vs BDD vs DDD

Definitions
These are three Software Development processes based on a concept of Extreme Programming.
What if we combine TDD and DDD?
Behavior-driven Development
BDD under the hood
Conclusion
One software development methodology framework is not necessarily suitable for use by all projects. Each of the available methodology frameworks are best suited to specific kinds of projects, based on various technical, organizational, project and team considerations.
Test-driven Development
TDD is a software development process that relies on the repetition of a very short development cycle:
Write an (initially failing) automated test case that defines a new feature,
Produce the minimum amount of code to pass that test,
Refactor the new code to acceptable standards.
Pros
Shifting from thinking in "tests" to thinking in "behavior".
Collaboration between Business stakeholders, Business Analyst, QA team and Developers.
Ubiquitous language.
Cons
Customers need to participate in writing / reviewing scenarios.
Developers consider it as an overkill work.


Sergey Sergyenko, Feb 2014
Agenda
Definitions: TDD, BDD, DDD
Deep look inside
Comparison
Real life examples
Takeaways
Behavior-driven Development
Domain-driven Design
DDD is a software development approach that connects the implementation to an evolving model in order to:
Place the project's primary focus on the core domain and domain logic.
Base complex designs on a model of the domain.
Initiate a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.

Acceptance TDD
TDD =
Refactoring + TFD
Continuous TDD
Developers can consider it as a "waste of time" and anticipate the concept of "Testing".

The tests can be targeted on verification of classes and methods but not on what the code should do.
Unit tests prove that code actually works.

Refactoring allows to improve design of the code.
Low-level regression test suite.

Test-first reduces the cost of bugs.
TDD under the hood
Is that usefull at all?
DDD under the hood
BDD is a software development process based on Test-driven Development (TDD), that combines the general techniques and principles of TDD with ideas from Domain-driven Design (DDD) and Object-oriented Analysis and Design to provide software developers and business analysts with shared tools and a shared process to collaborate on software development, with the aim of delivering "software that matters".
Domain
Domain
: A sphere of knowledge (ontology), influence, or activity. The subject area to which the user applies a program is the domain of the software.
Model
Model
: A system of abstractions that describes selected aspects of a domain and can be used to solve problems related to that domain.
Ubiquitous Language
Ubiquitous Language
: A language structured around the domain model and used by all team members to connect all the activities of the team with the software.
Context
Context
: The setting in which a word or statement appears that determines its meaning.
Full transcript