Smoke Testing | Software Testing
Functional and regression testing is typically a mixture of manual testing and automated testing. Functional testing is used for many different tasks and at many different phases of the project. One form of testing for which functional test automation is indispensible is smoke testing.
What is Smoke Testing?
Smoke testing is testing that covers the important features of an application without delving into details. Smoke testing is often done right after a build to ensure that the build is a valid build. Daily builds are often scheduled at odd hours. The allocation of manual testers to do the daily smoke test is usually time consuming particularly in cases where many obvious defects are easily caught by a well constructed automated smoke test. A well designed automated smoke test will save you lots of time and will allow you to spot basic issues with the build. A smoke test can also be used prior to code check-in by individual developers. This will ensure that code that breaks the build is not mistakenly checked in.
How should a smoke test be designed?
A smoke test is often really a set of automated regression and functional tests that are focused on very frequently used features. If you have a web application, you could create a smoke testing server. After each build the latest application is published to the smoke testing server and an automated smoke test suite is run against the smoke testing server. For an order entry system, this could involve a set of tasks such as logging into the system, viewing an order, updating an order, and logging out. It could also involve a few other tasks. However, it would be a mistake to dump every feature into this smoke test as a more comprehensive functional test (that involves both manual and automated tests) should be conducted separately once the smoke test has passed.
Should smoke testing involve performance testing as well? That depends. If the web application has a significant amount of traffic and performance metrics such as page response times are critical, it would make sense to run a small automated performance test in addition to the functional test.