Behavior-Driven Development is more than a technique for creating and organizing unit tests. It is also a wonderful way to communicate with customers and users about the software being created. This video demonstrates some techniques and tools you can use to start delivering software with BDD. : Using Behavior-Driven Development frameworks, this session explores ways to create software starting with solid Agile requirements, moving all the way through automated testing. We use .NET in C# and Visual Studio ALM, although none of these exact tools are required to accomplish the goals we set forth.
In this episode we are going to take a look at another refactoring technique, the Extract Interface technique. This technique allows you to extract an interface from a class in order to break your concrete dependencies. By doing this you can provide yourself with better testing support as well as a better layer of abstractions.
These two videos show how to use the refactoring tools in Visual Studio.
After presenting some basics of Design by Contract using Microsoft’s SpecSharp framework, Greg Young explains how we can keep the Test First mentality in a Contract First world.
This video shows why you want to write unit tests for the perspectives of specifications, feedback, regression & granularity. Then write a GUI in C# using Windows Forms & Approval Tests. ApprovalTests is an open source tool that supports C#, Java, Ruby for unit or acceptance tests.
Manuel Fähndrich and Peli de Halleux sit down for a quick coding session that shows how to use Code Contracts and Pex together. Code Contracts can be used to specify what your code should do, they get turned into runtime checks which Pex can analyze and try to find counter-examples for. This was a fun session with Manuel and really shows the synergy of the two tools/approaches.
Agile development practices and good Object Oriented Design principles are supposed to enable unending, gentle modification of an existing codebase. Is this really true, though? In the course of 5+ years developing and evolving an open source framework, I’ve learned a lot of painful lessons about the issues that retard code extensions and modifications. I’ve also learned a little bit about the design decisions that dramatically increased my ability to extend the code. In this talk I’ll show several instances of how failing to heed design fundamentals introduced code viscosity, and how some strategic refactorings opened up the flood gates for new functionality.
Undoubtedly, the practice of Test Driven Development directly supports your ability to modify a system, but I found out the hard way that there are also plenty of ways to do it wrong. I’ll share examples of high friction TDD and the changes in strategy I employed to reduce that friction to wring more value out of TDD. The programming languages we use for .Net development have changed dramatically in 5 years. We can apply the new language features in C# 3.0 to improve the readability and structure of both our code and the way that we express unit test specifications. Lastly, I’ll discuss our changing expectations on framework usability and the resulting impact on design.
NGourd, a BDD framework for C#, is presented by Michael Minutillo (@wolfbyte) at the Australian Virtual Alt.Net meeting, May 11 2009. NGourd is designed heavily influenced by the Cucumber tool from the ruby world. The intention is to create a clean separation between the intent of a specification versus it’s execution. This allows developers to concentrate on the technical details while non-programmers can verify and even author specifications.