Why I test.

November 21, 2008 Abhijit Hiremagalur

This is a cross post from my personal blog, because I’d like to hear from other Pivots about why they test.

First about unit and integration tests.

  • I write unit tests for focused feedback; i.e. tell me exactly what broke. To keep them focused I try to keep them orthogonal which usually means using fakes of any collaborators.
  • I write integration tests where I need more safety than a unit test will offer. They seem even more important when I’m stubbing and mocking a lot in a dynamically typed language like Ruby.
  • I write both types of tests to help convey intent and understand the problem better. I TDD with either a unit test or integration test, whichever feels natural.

Then about interaction and state based testing.

  • I pick the approach that feels natural at the time, favouring neither by default. I struggle with rules about when to use which.
  • I dislike interaction tests that look suspiciously similar/symmetrical/coupled to the code they refer to. I expect a test to earn its right to exist, and therefore add to the size of the codebase and build’s time, by either conveying intent that is difficult to express in the code itself (which is why I love the term ‘example‘) or addressing some other consciously identified risk.

So, now it’s your turn – why do you test?

About the Author

Biography

More Content by Abhijit Hiremagalur
Previous
Project Startup: Early Adopters and Beyond
Project Startup: Early Adopters and Beyond

Hosted by Pivotal Labs and VentureArchetypes. Moderated panel discussion on building a brand and attractin...

Next
Notes on Google Chrome Compatiblity
Notes on Google Chrome Compatiblity

Pivot Jonathan and I were recently working on support for Google Chrome in Pivotal Tracker. Tracker's exte...

Enter curious. Exit smarter.

Learn More