Sobes.tech
Junior

Šta je smoke-test?

sobes.tech АИ

Одговор од АИ

Смок тестирање (димно тестирање) је тип тестирања софтвера који се изводи након изградње нове верзије како би се брзо проверила основна функционалност и стабилност. Циљ је утврдити да ли је вредно наставити са даљим, детаљнијим тестирањем.

Главне карактеристике:

  • Површно: Проверјају се само најважније и критичне функције апликације.
  • Брзо: Извршава се у кратком времену, обично не дуже од 30-60 минута.
  • Критично: Усмерено на откривање озбиљних дефеката који чине даље тестирање бесмисленим.
  • Gatekeeper: Ако смок-тест не успе, билд се одбија, и цео циклус тестирања се не спроводи.

Сценарији употребе:

  1. Свака нова верзија: Проверја се након сваког распоређивања нове верзије апликације.
  2. Пре изласка: Финална брза проверa пре пуштања у продукцију.
  3. После измена: Проверја се да ли су недавне промене сломиле основне функције.

Пример провере (за веб апликацију):

  • Успешно учитавање главне странице.
  • Могућност пријаве у систем.
  • Функционалност основних делова (на пример, преглед листе производа).
  • Провера исправног одјављивања из система.

Смок-тестови могу бити ручни или аутоматизовани. Аутоматизација смок-тестова значајно убрза процес и обезбеђује стабилност провера.

# Пример једноставног аутоматизованог смок-теста уз коришћење 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)
        # Провера да ли постоји поље за унос логина
        login_field = driver.find_element(By.ID, "login-input")
        assert login_field.is_displayed(), "Поље за логин није приказано"

        # Провера да ли постоји поље за унос лозинке
        password_field = driver.find_element(By.ID, "password-input")
        assert password_field.is_displayed(), "Поље за лозинку није приказано"

        # Провера да ли постоји дугме за улаз
        login_button = driver.find_element(By.ID, "login-button")
        assert login_button.is_displayed(), "Дугме за улаз није приказано"

        # Покушај уласка (опционално, зависи од дубине смок теста)
        # login_field.send_keys(username)
        # password_field.send_keys(password)
        # login_button.click()
        # assert "dashboard" in driver.current_url # Провера редиректа

        print("Смок тест: Основни елементи за пријаву су присутни.")
        return True
    except Exception as e:
        print(f"Смок тест није успео: {e}")
        return False
    finally:
        driver.quit()

# Пример позива
# smoke_test_login("http://example.com/login", "testuser", "password123")