commend a method of Driven Development :
TDD
1. What is TDD?
The steps of test first development (TFD) are overviewed in the UML activity diagram of Figure 1. The first step is to quickly add a test, basically just enough code to fail. Next you run your tests, often the complete test suite although for sake of speed you may decide to run only a subset, to ensure that the new test does in fact fail. You then update your functional code to make it pass the new tests. The fourth step is to run your tests again. If they fail you need to update your functional code and retest. Once the tests pass the next step is to start over (you may first need to refactor any duplication out of your design as needed, turning TFD into TDD).
Figure 1. The Steps of test-first development (TFD).
I like to describe TDD with this simple formula:
TDD = TFD + refactoring.
TDD completely turns traditional development around .Instead of writing functional code first and then your testing code as an afterthought, if you write it at all, you instead write your test code before your functional code. Furthermore, you do so in very small steps – one test and a small bit of corresponding functional code at a time. A programmer taking a TDD approach refuses to write a new function until there is first a test that fails because that function isn’t present. In fact, they refuse to add even a single line of code until a test exists for it. Once the test is in place they then do the work required to ensure that the test suite now passes (your new code may break several existing tests as well as the new one). Once your code works, you then refactor it to ensure that it's remains of high quality. This sounds simple in principle, but when you are first learning to take a TDD approach it proves require great discipline because it is easy to “slip” and write functional code without first writing a new test. One of the advantages of pair programming (Williams and Kessler 2002) is that your pair helps you to stay on track.
An underlying assumption of TDD is that you have a unit-testing framework available to you. Agile software developers often use the xUnit family of open source tools, such as JUnit or VBUnit, although commercial tools are also viable options. Without such tools TDD is virtually impossible. Figure 2 presents a UML state chart diagram for how people typically work with the xUnit tools. This diagram was suggested to me by Keith Ray.
Figure 2. Testing via the xUnit Framework.
Kent Beck, who popularized TDD in eXtreme Programming (XP) (Beck 2000), defines two simple rules for TDD (Beck 2003). First, you should write new business code only when an automated test has failed. Second, you should eliminate any duplication that you find. Beck explains how these two simple rules generate complex individual and group behavior:
You design organically, with the running code providing feedback between decisions.
You write your own tests because you can't wait 20 times per day for someone else to write them for you.
Your development environment must provide rapid response to small changes (e.g you need a fast compiler and regression test suite).
Your designs must consist of highly cohesive, loosely coupled components (e.g. your design is highly normalized) to make testing easier (this also makes evolution and maintenance of your system easier too).
For developers, the implication is that they need to learn how to write effective unit tests. Beck’s experience is that good unit tests:
Run fast (they have short setups, run times, and break downs).
Run in isolation (you should be able to reorder them).
Use data that makes them easy to read and to understand.
Use real data (e.g. copies of production data) when they need to.
Represent one step towards your overall goal.
2. TDD and Traditional Testing ...
3. TDD and Documentation ...
4. Test-Driven Database Development ...
5. TDD and Agile Model-Driven Development (AMDD) ...
6. Why TDD ...
7. Myths and Misconceptions ...
8. Summary ...
9. Tools ...
... ...
original text
分享到:
相关推荐
Test-Driven Development(TDD)简介,使用Nunit开发自动测试案例.
C# and .NET Core Test Driven Development: Dive into TDD to create flexible, maintainable, and production-ready .NET Core applications Learn how to apply a test-driven development process by building ...
iOS Test Driven Development by Tutorials FIRST EDITION, Learn real-world test-driven development PDF & EPUB & SourceCode
Test Driven Development in Ruby: A Practical Introduction to TDD Using Problem and Solution Domain Analysis by Bala Paranj English | 5 Apr. 2017 | ISBN: 1484226372 | 288 Pages | PDF | 5.32 MB Learn ...
Test Driven Development: A J2EE Example by Russell Gold, Thomas Hammell and Tom Snyder ISBN:1590593278 Apress © 2005 (296 pages) Targeted at Java developers who want to learn how to use test-...
This book has great reviews by other peering programmers. TDD is always our good friends, right? Honestly, I haven't read it but I might start within the next following days. Let's enjoy together.
By taking you through the development of a real web application from beginning to end, the second edition of this hands-on guide demonstrates the practical advantages of test-driven development (TDD) ...
Test Driven Development Process.
Test-Driven Development: A Practical Guide By David Astels
Test-Driven Development (TDD) is a methodology that helps you to write as little as code as possible to satisfy software requirements, and ensures that what you've written does what it's supposed to ...
the updated second edition of this hands-on guide demonstrates the practical advantages of test-driven development (TDD) with Python. You’ll learn how to write and run tests before building each ...
http://www.amazon.com/Professional-Test-Driven-Development-Applications/dp/047064320X/ref=sr_1_1?s=books&ie=UTF8&qid=1404808039&...keywords=professional+test+driven+development+with+c
test driven development in python
Test-driven development (TDD) is a development approach that relies on a test-first procedure that emphasises writing a test before writing the necessary code, and then refactoring the code to ...
Test-Driven Development简称TDD,中文为测试驱动开发。是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的...
Test-driven development (TDD) is a proven way to find software bugs early. Writing tests before your code improves the structure and maintainability of your app. Test-driven iOS Development with ...
Presents an expert overview of TDD and agile programming techniques from the Java developer's perspective Brings together practical best practices for Java, TDD, and OO design Walks through setting ...
Test-driven development (TDD) is a development approach that relies on a test-first procedure that emphasises writing a test before writing the necessary code, and then refactoring the code to ...