Sobes.tech
Junior

What is smoke testing?

sobes.tech AI

Answer from AI

Smoke testing (also known as build verification testing) is a type of software testing performed after a new build is created to quickly verify its basic functionality and stability. The goal is to determine whether further, more in-depth testing is worthwhile.

Main characteristics:

  • Shallow: Only the most important and critical functions of the application are checked.
  • Fast: Performed in a short period, usually no more than 30-60 minutes.
  • Critical: Aimed at identifying serious defects that make further testing pointless.
  • Gatekeeper: If the smoke test fails, the build is rejected, and the full testing cycle is not conducted.

Use scenarios:

  1. Each new build: Checked after each deployment of a new version of the application.
  2. Before release: Final quick check before going to production.
  3. After making changes: Checks whether recent changes have broken core functions.

Example of a check (for a web application):

  • Successful loading of the main page.
  • Ability to log in.
  • Functionality of main sections (e.g., viewing a product list).
  • Checking correct logout.

Smoke tests can be manual or automated. Automating smoke tests significantly speeds up the process and ensures stability of checks.

# Example of a simple automated smoke test using Selenium
from selenium import webdriver
from selenium.webdriver.common.by import By

def smoke_test_login(url, username, password):
    driver = webdriver.Chrome()
    try:
        driver.get(url)
        # Check for login input field
        login_field = driver.find_element(By.ID, "login-input")
        assert login_field.is_displayed(), "Login field not displayed"

        # Check for password input field
        password_field = driver.find_element(By.ID, "password-input")
        assert password_field.is_displayed(), "Password field not displayed"

        # Check for login button
        login_button = driver.find_element(By.ID, "login-button")
        assert login_button.is_displayed(), "Login button not displayed"

        # Attempt login (optional, depends on smoke depth)
        # login_field.send_keys(username)
        # password_field.send_keys(password)
        # login_button.click()
        # assert "dashboard" in driver.current_url # Check redirect

        print("Smoke test: Basic login elements are present.")
        return True
    except Exception as e:
        print(f"Smoke test failed: {e}")
        return False
    finally:
        driver.quit()

# Example call
# smoke_test_login("http://example.com/login", "testuser", "password123")