What's in a smoke test?

When figuring out what to smoke test for a release/build/environment, I run down the following list in my head:

  • What's changed in this build/release?

  • What features/functions are most frequently used?

  • What features/functions are most important or business critical to the client?

  • Is there technical risk related to the deploy, environment, or a third-party service?

  • Are there any automated tests I can leverage for any test ideas I came up with in the previous questions?

Based on my answers to those questions, I come up with my set of tests for the release. If it's a big release (aka more features or more visible), I'll do more smoke tests. It's been my experience that different releases often require different levels of smoke testing.