Sobes.tech
Junior

Wat is een smoke-test?

sobes.tech AI

Antwoord van AI

Smoke-testen (rooktest) is een type softwaretest dat wordt uitgevoerd na het bouwen van een nieuwe versie om snel de basisfunctionaliteit en stabiliteit te controleren. Het doel is om te bepalen of het zinvol is om door te gaan met diepere tests.

Belangrijkste kenmerken:

  • Oppervlakkig: Alleen de belangrijkste en kritieke functies van de toepassing worden gecontroleerd.
  • Snel: Wordt in een korte tijd uitgevoerd, meestal niet langer dan 30-60 minuten.
  • Kritisch: Gericht op het opsporen van ernstige defecten die verdere tests zinloos maken.
  • Gatekeeper: Als de rooktest faalt, wordt de build afgewezen en wordt geen volledige testcyclus uitgevoerd.

Gebruiksscenario's:

  1. Elke nieuwe build: Wordt gecontroleerd na elke implementatie van een nieuwe versie van de toepassing.
  2. Voor release: Laatste snelle controle voor uitrol naar productie.
  3. Na wijzigingen: Wordt gecontroleerd of recente wijzigingen de hoofdfuncties niet hebben gebroken.

Voorbeeld van een test (voor een webapplicatie):

  • Succesvolle lading van de hoofdpagina.
  • Mogelijkheid om in te loggen.
  • Functionaliteit van hoofdsecties (bijvoorbeeld, bekijken van de productlijst).
  • Correct uitloggen uit het systeem.

Smoke-tests kunnen handmatig of geautomatiseerd worden uitgevoerd. Automatisering versnelt het proces aanzienlijk en zorgt voor stabiliteit van de controles.

# Eenvoudig geautomatiseerd smoke-testvoorbeeld met 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)
        # Controleren of het login-veld aanwezig is
        login_field = driver.find_element(By.ID, "login-input")
        assert login_field.is_displayed(), "Login-veld niet zichtbaar"

        # Controleren of het wachtwoord-veld aanwezig is
        password_field = driver.find_element(By.ID, "password-input")
        assert password_field.is_displayed(), "Wachtwoord-veld niet zichtbaar"

        # Controleren of de login-knop aanwezig is
        login_button = driver.find_element(By.ID, "login-button")
        assert login_button.is_displayed(), "Login-knop niet zichtbaar"

        # Poging tot inloggen (optioneel, afhankelijk van de scope van de smoke-test)
        # login_field.send_keys(username)
        # password_field.send_keys(password)
        # login_button.click()
        # assert "dashboard" in driver.current_url # Redirect controleren

        print("Smoke-test: Basis login-elementen zijn aanwezig.")
        return True
    except Exception as e:
        print(f"Fout bij smoke-test: {e}")
        return False
    finally:
        driver.quit()

# Voorbeeld van aanroep
# smoke_test_login("http://example.com/login", "testuser", "password123")