TESTDRIVEN DEVELOPMENT AND MVP Cory Foy and Michael

  • Slides: 15
Download presentation
TEST-DRIVEN DEVELOPMENT AND MVP Cory Foy and Michael Russo

TEST-DRIVEN DEVELOPMENT AND MVP Cory Foy and Michael Russo

What’s Ahead Process Flavors Techniques Demo Introducing TDD Challenges Questions?

What’s Ahead Process Flavors Techniques Demo Introducing TDD Challenges Questions?

Process Test versus Design Red, Green, Refactor No Production Code without a Failing Test

Process Test versus Design Red, Green, Refactor No Production Code without a Failing Test State Based versus Interaction Based Tests

Flavors Behavior-Driven Development Domain-Driven Design Acceptance-Test Driven Development Feature-Driven Development Example-Driven Development Hope-Driven Development

Flavors Behavior-Driven Development Domain-Driven Design Acceptance-Test Driven Development Feature-Driven Development Example-Driven Development Hope-Driven Development

Techniques - Tools x. Unit Tools . NET – NUnit, Mb. Unit, x. Unit.

Techniques - Tools x. Unit Tools . NET – NUnit, Mb. Unit, x. Unit. NET, Visual Studio Test Tools, TD. NET, Resharper Java – JUnit, JBehave Ruby – test_unit, r. Spec, Cucumber Other Tools Fit. Nesse/FIT Agile. Docs/Test. Docs

Techniques – Rules Two main sources of “rules” Feather’s Rules – from Michael Feathers’

Techniques – Rules Two main sources of “rules” Feather’s Rules – from Michael Feathers’ Working Effectively with Legacy Code North’s Rules – from Dan North’s BDD sessions

Techniques – Feathers’ Rules Not a unit test if it Talks to the database

Techniques – Feathers’ Rules Not a unit test if it Talks to the database Communicates Across the Network Touches the File System Can’t run at the same time as your other unit tests Have to do special things in your environment to run it (config file changes, code changes, etc)

Techniques – North’s Rules Come from Behavior-Driven Development Test Method Names should be sentences

Techniques – North’s Rules Come from Behavior-Driven Development Test Method Names should be sentences Keep Test Methods Focused It should be clear from the name what the test is doing “Behavior” is more useful than “test” Acceptance Criteria should be executable BDD is an umbiqutious language for analysis

Techniques - Spikes When it absolutely, positively has to be there without tests Useful

Techniques - Spikes When it absolutely, positively has to be there without tests Useful for determining if something is even going to work Timebox the Spike Throw away the code at the end and redo it test-first

Techniques – Helpful Patterns Dependency Injection Separation of Concerns MVP/MVC Model View Presenter Model

Techniques – Helpful Patterns Dependency Injection Separation of Concerns MVP/MVC Model View Presenter Model View Controller

Demo TDD / MVC Demo Starring Michael Russo as “Newbie” Cory Foy as “Cory”

Demo TDD / MVC Demo Starring Michael Russo as “Newbie” Cory Foy as “Cory” The audience as “The Hecklers”

Introducing TDD Legacy Code Pick up a copy of Working Effectively With Legacy Code

Introducing TDD Legacy Code Pick up a copy of Working Effectively With Legacy Code Write unit tests for bugs Write Characterization tests for features Greenfield Project No production code without a failing test Executable Specifications Automated Acceptance Test Criteria

Challenges Language Support Slow Tests Keeping up with the tests Developer Mindsets Management Mindsets

Challenges Language Support Slow Tests Keeping up with the tests Developer Mindsets Management Mindsets Legacy Code

Questions? Ask now Or, you know, ask later, afterwards, or via email, or twitter,

Questions? Ask now Or, you know, ask later, afterwards, or via email, or twitter, or we’ll give you our phone numbers. Come over for dinner. We’ll chat more then.

Information Agile Tampa – http: //agiletampa. spaces. live. com Cory’s Blog – http: //www.

Information Agile Tampa – http: //agiletampa. spaces. live. com Cory’s Blog – http: //www. cornetdesign. com Agile Florida – http: //www. agileflorida. com NUnit – http: //www. nunit. org Fit. Nesse – http: //www. fitnesse. org