I'm not quite on the test driven development bandwagon yet - I would love to be, but I think I need to be more disciplined to make it work, and really need to learn more about mocking - and properly interfacing out my objects.
For my projects there are a few types of test that I'll write:
- Integration tests that are testing a few components, for example creating a new object, validating the data and then saving to the database.
- Story based integration tests - usually testing the API or services that are available, ensuring they correctly accept data, validate, save and return.
- Simple database connectivity tests - to ensure my NHibernate mapping is correct.
- Unit tests to test a single method.
There is probably a wide range of scenarios that I'm not checking, which is where working with a tester to manually write up the scenarios and work through them really helps. Over the last couple of weeks I've been working with a colleague, and have found this to be really useful.
Now we've got into our 4th round of testing, and testing is really starting to become labor intensive, which brings me to the question of how do I automate all these tests? To me, I would be confident building the tests in code, but how do you help others build confidence in your coded tests?
How does traditional test planning fit into an agile type development project? As I've written a large number of tests, where does the need to manually test come in?
For the continuing development, testing will obviously need to continue, and we'll need to keep automated tests up to date, which is a subject for another post.