What is smoke testing? When to use it? Advantages and Disadvantages

Smoke testing is a type of software testing which ensures that the major functionalities of the application are working fine. This testing is also known as ‘Build Verification testing’. It is a non-exhaustive testing with very limited test cases to ensure that the important features are working fine and we are good to proceed with the detailed testing.

The term ‘smoke’ testing is originated from the hardware testing, where a device when first switched on is tested for the smoke or fire from its components. This ensures that the hardware’s basic components are working fine and no serious failures are found.

Similarly, when we do smoke testing of an application then this means that we are trying to ensure that there should NOT be any major failures before giving the build for exhaustive testing.

  • The purpose of the smoke testing is to ensure that the critical functionalities of an application are working fine.
  • This is a non-exhaustive testing with very limited number of test cases.
  • It is also known as Build verification testing where the build is verified by testing the important features of the application and then declaring it as good to go for further detailed testing.
  • Smoke testing can be done by developers before releasing the build to the testers and post this it is also tested by the testing team to ensure that the build is stable enough to perform the detailed testing.
  • Usually smoke testing is performed with positive scenarios and with valid data.
  • It is a type of shallow and wide testing because it covers all the basic and important functionalities of an application.
  • Usually the smoke testing is documented.
  • Smoke testing is like a normal health check up of the build of an application.

Examples for Smoke Testing

Let us assume that there is an application like ‘Student Network’ which has 15 modules. Among them, there are 4 important components like Login page, Adding student details, Updating it and Deleting it. As a part of smoke testing we will test the login page with valid input. After login we will test the addition, updating and deletion of records. If all the 4 critical components work fine then the build is stable enough to proceed with detailed testing. This is known as Smoke testing.

When to use smoke testing

Smoke testing is used in the following scenarios:

  • It is done by developers before giving build to the testing team.
  • It is done by the testers before they start the detailed testing.
  • Smoke testing is done to ensure that the basic functionalities of the application are working fine.

Advantages of Smoke testing

  • It helps in finding the bugs in the early stage of testing.
  • It helps in finding the issues that got introduced by the integration of components.
  • It helps in verifying the issues fixed in the previous build are NOT impacting the major functionalities of the application.
  • Very limited number of test cases is required to do the smoke testing.
  • Smoke testing can be carried out in small time.

Disadvantages of Smoke testing

  • Smoke testing does not cover the detailed testing.
  • It’s a non-exhaustive testing with small number of test cases because of which we not are able to find the other critical issues.

Smoke testing is not performed with negative scenarios and with invalid data.

What are Testing and Agile Development Activities?

The main objective in Agile is to generate working software at the end of iteration and receive feedback from the customer, to provide early business value to the stakeholders. It all starts with release planning at the start of a release followed by construction iterations. At the beginning of iteration there is iteration planning in which the user stories of high priority are pulled into the iteration backlog to define the iteration scope. Design, development and testing happen iteratively throughout the sprint and not at the end of the iteration. All the developers and testers will work together as a team to reach the iteration goal. [Read more…]

What are the advantages or benefits of using testing tools?

There are many benefits that can be gained by using tools to support testing. They are:

  • Reduction of repetitive work: Repetitive work is very boring if it is done manually. People tend to make mistakes when doing the same task over and over. Examples of this type of repetitive work include running regression tests, entering the same test data again and again (can be done by a test execution tool), checking against coding standards (which can be done by a static analysis tool) or creating a specific test database (which can be done by a test data preparation tool). [Read more…]

What is Performance testing, Load testing and stress-testing tools in software testing?

Performance testing tools are basically for system level testing, to see whether or not the system will stand up to a high volume of usage. A load testing is to check that the system can handle its expected number of transactions. A volume testing is basically to check that the system can handle a large amount of data, e.g. many fields in a record, many records in a file, etc. A stress testing is one that goes beyond the normal expected usage of the system (to see what would happen outside its design expectations), with respect to load or volume. [Read more…]

What is Dynamic analysis tools in software testing?

Dynamic analysis tools are ‘dynamic’ because they require the code to be in a running state. They are ‘analysis’ rather than ‘testing’ tools because they analyze what is happening ‘behind the scenes’ that is in the code while the software is running (whether being executed with test cases or being used in operation). [Read more…]

What are Security testing tools in software testing?

There are many tools that protect systems from external attack. Like firewall, this is very important for any system.

Security testing tools can be used to test security of the system by trying to break it or by hacking it. The attacks may focus on the network, the support software, the application code or the underlying database. [Read more…]

What is Test harness/ Unit test framework tools in software testing?

These tools are mostly used by developers. These two types of tool are grouped together because they are variants of the type of support needed by developers when testing individual components or units of software. A test harness provides stubs and drivers, which are small programs that interact with the software under test (e.g. for testing middleware and embedded software). Some unit test framework tools provide support for object-oriented software, others for other development paradigms. [Read more…]