Jonathan Bennett

System Tests When They Matter

My TDD workflow with a new feature is pretty simple:

  • Create a system test walking through home page -> feature successfully used
  • Create a system test for any critical workflows, but disable them
  • Make the initial test pass
  • Write some unit tests to handle edge cases
  • Clean things up
  • Repeat process for all critical workflows

I write system tests for critical workflows early to start thinking through what I’ll need soon — but I disable them at first so they don’t get in the way while I’m getting that first test to pass. Sometimes I sketch out the interface instead if that’s faster.

This process keeps your system test count low — which helps your suite stay fast — while still giving you strong coverage and confidence in your app.