CSC/ECE 517 Fall 2014/ch1b 28 cg

From Expertiza_Wiki
Revision as of 17:05, 28 September 2014 by Jgu7 (talk | contribs)
Jump to navigation Jump to search

==Behavior-Driven Development and Test-Driven Development

Background

What is Test-Driven Development?

[1]Test-driven development (TDD)Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes an (initially failing) automated test case that defines a desired improvement or new function, then produces the minimum amount of code to pass that test, and finally refactors the new code to acceptable standards.

Development cycle

A TDD development cycle could be simply described as followed

  • first write an automated test for your code. While writing the automated tests, you must take into account all possible inputs, errors, and outputs. This way, your mind is not clouded by any code that's already been written.
  • The first time you run your automated test, the test should fail—indicating that the code is not yet ready.
  • programming. Since there's already an automated test, as long as the code fails it, it means that it's still not ready. The code can be fixed until it passes all assertions.
  • Begin cleaning up codes and remove redundancy via refactoring. As long as the code still passes the test, it means that it still works. You no longer have to worry about changes that introduce new bugs.
  • Start the whole thing over again with some other method or program.

Example of TDD

What is Behavior-Driven Development?

Definition

  • BDD(Behavior Driven Development) is a synthesis and refinement of practices stemming from TDD(Test Driven Development) and ATDD(Acceptance Test Driven Development). Behavior driven development combines the ideas from domain-driven design and object-oriented *analysis design, providing the collaboration between business interests and technical insights with shared tools and shared process to collaborate on software development.
  • During the "Agile specifications, BDD and Testing eXchange" in November 2009 in London, Dan North[6] gave the following description of BDD:
  • BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.


Comparison

Differences

Advantages

Disadvantags

See Also

Reference