Sobes.tech
Junior

Co je to smoke-test?

sobes.tech AI

Odpověď od AI

Smoke-testování (dýmové testování) je typ testování softwaru, který se provádí po sestavení nové verze, aby se rychle ověřila základní funkčnost a stabilita. Cílem je určit, zda stojí za to pokračovat v dalším, podrobnějším testování.

Hlavní charakteristiky:

  • Povrchní: Kontrolují se pouze nejdůležitější a kritické funkce aplikace.
  • Rychlé: Provádí se během krátké doby, obvykle do 30-60 minut.
  • Kritické: Zaměřeno na odhalení vážných chyb, které činí další testování bezúčelným.
  • Gatekeeper: Pokud smoke-test selže, sestavení je zamítnuto a celý testovací cyklus se neprovádí.

Scénáře použití:

  1. Každá nová sestava: Kontroluje se po nasazení nové verze aplikace.
  2. Před vydáním: Finální rychlá kontrola před uvedením do produkce.
  3. Po provedení změn: Kontroluje se, zda nedávné změny nezlomily hlavní funkce.

Příklad kontroly (pro webovou aplikaci):

  • Úspěšné načtení hlavní stránky.
  • Možnost přihlášení do systému.
  • Funkčnost hlavních sekcí (například prohlížení seznamu produktů).
  • Kontrola správného odhlášení ze systému.

Smoke-testy mohou být jak ruční, tak automatizované. Automatizace smoke-testů výrazně urychluje proces a zajišťuje stabilitu kontrol.

# Příklad jednoduchého automatizovaného smoke-testu s použitím 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)
        # Kontrola, že je pole pro zadání přihlašovacího jména
        login_field = driver.find_element(By.ID, "login-input")
        assert login_field.is_displayed(), "Pole pro přihlášení není zobrazeno"

        # Kontrola, že je pole pro zadání hesla
        password_field = driver.find_element(By.ID, "password-input")
        assert password_field.is_displayed(), "Pole pro heslo není zobrazeno"

        # Kontrola, že je tlačítko pro přihlášení
        login_button = driver.find_element(By.ID, "login-button")
        assert login_button.is_displayed(), "Tlačítko pro přihlášení není zobrazeno"

        # Pokus o přihlášení (volitelné, záleží na hloubce smoke testu)
        # login_field.send_keys(username)
        # password_field.send_keys(password)
        # login_button.click()
        # assert "dashboard" in driver.current_url # Kontrola přesměrování

        print("Smoke test: Základní prvky přihlášení jsou přítomny.")
        return True
    except Exception as e:
        print(f"Smoke test selhal: {e}")
        return False
    finally:
        driver.quit()

# Příklad volání
# smoke_test_login("http://example.com/login", "testuser", "password123")