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.
Continuous integration is a great way to keep your code base organized and well tested. But when a test suite takes so long to run that developers stop running it before every commit, they lose their constant feedback loop and quality drops. In this talk we’ll explore methods of speeding up the test suite so that developers can be confident about the code they’ve written before they share it with the team. We’ll start with quick cheap fixes, like optimizing your operating system, that can yield drastic results (like cutting test time in half!) with no loss of functionality. We’ll also cover methods of writing tests that reduce their run time with gems like fast_context for shoulda. At then end, we’ll move to more involved methods of multi-tasking your test suite to run on all the cores in your workstation and even to setting up a distributed testing cloud to run all your tests in parallel. Every tactic will be backed up with hard benchmarks from real production code. We’ll show the evolution of a test suite from its full run time of 13 minutes down to a number you won’t believe.
Steve Freeman proposes advice to write good tests that make development easier avoiding adding code that is hard to maintain. This presentation covers: test readability, complex test data, test diagnostics and test flexibility.
How to get started with TDD? Test-First Teaching is an innovative teaching approach that is gaining widespread adoption. Sarah Allen talks about how she teaches Ruby and Rails through a test-first approach. She demonstrates test-first teaching and then discuss how to turn the corner from simply making tests pass to how to use a test-first approach to software design.
As part of his talk on integration tests J.B. Rainsberger talked about how contract tests can be used to test the interaction between classes when using a mockist approach to developer testing. He wondered aloud if it would be possible to write these kinds of tests using abstract classes and JUnit 4. The answer is yes, with some caveats, as Ben Rady demonstrates it.
Video produced by Ben Rady
Michael Feathers defines legacy code as “code without tests.” There’s a major qualitative difference when working on code without tests. Feathers’ job is to move software teams from their current process to a test-driven development process. In this interview he also discusses functional programming and other important paradigms that developers should consider.
In this episode we are going to take at how to use Pex and Moles for .Net. Unit testing is great, but most free isolation frameworks require that your mocks implement an interface. But what do you do when the class you are trying to mock is static or sealed with no interface. If you can’t modify the class then your unit testing efforts are usually stuck. Moles, the new free isolation framework from Microsoft, supports mocking almost any CLR based class (including sealed and static classes).
This screencast demonstrates how to use Rake to build .NET solution, run unit tests and build documentation. Rake with Ruby is a perfect combination which will eliminate Nant and MSBuild hell.
One of the foundational concepts of Agile software development is ensuring that your solution is loosely-coupled, highly-cohesive, and able to respond easily to changes; in this session we will explore the fundamentals of unit testing and their application through the practice of using TDD to evolve the design of your solution such that the results are both testable and flexible in the face of changing real-world requirements.
In this episode we are going to take a look at how to use manual mocks for testing. Often times when creating unit tests we need to work in isolation in order to cover the paths we are attempting to test. When we want to test in isolation you can use a testing technique where you mock out your dependencies. When using Mocks you can either do it manually (what we are looking at) or you can use a mocking framework like Rhino Mocks. Either way you achieve the same results.keep looking »