Smoke testing is cursory or "quick and dirty" testing to see that the software works correctly.
Table of contents
Smoke testing
I recently heard the term "smoke testing" when we were talking about production deployments at work. Let's see what Wikipedia tells us about Smoke testing (software):
In computer programming and software testing, smoke testing (also confidence testing, sanity testing, build verification test (BVT) and build acceptance test) is preliminary testing to reveal simple failures severe enough to, for example, reject a prospective software release. Smoke tests are a subset of test cases that cover the most important functionality of a component or system, used to aid assessment of whether main functions of the software appear to work correctly.
So: smoke testing is cursory or "quick and dirty" testing to see that the software works correctly. Or appears to work correctly – there's no extensive testing.
For example, if you do extensive testing in your integration or staging environment (or whatever your non-production test environment is called), there might be no need to repeat the extensive tests in production. So, during production deployments it's enough to verify that everything looks good at a cursory glance. That's smoke testing.
Sanity testing
The Wikipedia quote above says that smoke testing is also called sanity testing. This may or may not be true – check out What is the difference between smoke testing and sanity testing? on Stack Overflow for different opinions.
Origin of the term
I was curious why smoke testing was called like that. Wikipedia's page about Smoke testing (electrical) explains it clearly:
The expression probably was first used in plumbing in referring to tests for the detection of cracks, leaks or breaks in closed systems of pipes. By metaphorical extension the term is used in electronics. In Lessons Learned in Software Testing, Cem Kaner, James Bach, and Brett Pettichord provided the origin of the term: "The phrase smoke test comes from electronic hardware testing. You plug in a new board and turn on the power. If you see smoke coming from the board, turn off the power. You don't have to do any more testing."
So: plumbing → electronic hardware testing → software testing.