← Назад ко всем вопросам

Чем Smoke отличается от Sanity и Regression

1️⃣ Как кратко ответить

Smoke тестирование — это начальная проверка критически важных функций системы, чтобы убедиться, что приложение готово к более детальному тестированию. Sanity тестирование — это узконаправленная проверка, чтобы убедиться, что конкретные изменения или исправления ошибок работают правильно. Regression тестирование — это полное тестирование системы, чтобы убедиться, что новые изменения не нарушили существующую функциональность.

2️⃣ Подробное объяснение темы

Smoke, Sanity и Regression тестирование — это три различных типа тестирования, которые применяются на разных этапах разработки программного обеспечения для обеспечения его качества.

Smoke тестирование

Smoke тестирование, также известное как "дымовое тестирование", проводится на начальных этапах тестирования. Его цель — убедиться, что основные функции приложения работают и система готова к более детальному тестированию. Это поверхностное тестирование, которое охватывает критически важные функции, такие как запуск приложения, базовая навигация и основные операции.

Пример: Представьте, что вы тестируете новое приложение для интернет-магазина. Smoke тестирование будет включать проверку, что приложение запускается, можно войти в систему, просмотреть товары и добавить их в корзину.

Sanity тестирование

Sanity тестирование проводится после получения нового билда с незначительными изменениями или исправлениями ошибок. Оно направлено на проверку того, что конкретные изменения работают правильно и не вызвали новых проблем. Sanity тестирование более узконаправленное, чем Smoke тестирование, и фокусируется на конкретных областях приложения.

Пример: Если в интернет-магазине была исправлена ошибка, связанная с расчетом стоимости доставки, Sanity тестирование будет включать проверку, что расчет стоимости доставки теперь работает правильно.

Regression тестирование

Regression тестирование проводится для проверки того, что новые изменения в коде не нарушили существующую функциональность приложения. Это более обширное тестирование, которое охватывает все основные функции системы. Regression тестирование может быть автоматизировано для повышения эффективности и охвата.

Пример: После добавления новой функции в интернет-магазин, такой как возможность оплаты через новый платежный шлюз, Regression тестирование будет включать проверку всех основных функций, таких как регистрация, поиск товаров, добавление в корзину, оформление заказа и оплата, чтобы убедиться, что они работают как ожидалось.

Код для автоматизации Regression тестирования

import unittest
​
class TestECommerceApp(unittest.TestCase):
​
    def test_login(self):
        # Проверка, что пользователь может войти в систему
        self.assertTrue(login("user", "password"))
​
    def test_add_to_cart(self):
        # Проверка, что товар можно добавить в корзину
        self.assertTrue(add_to_cart("item_id"))
​
    def test_checkout(self):
        # Проверка, что можно оформить заказ
        self.assertTrue(checkout("user_id", "payment_info"))
​
    def test_payment_gateway(self):
        # Проверка, что новый платежный шлюз работает
        self.assertTrue(process_payment("user_id", "new_gateway"))
​
if __name__ == '__main__':
    unittest.main()
  • import unittest: Импортируем модуль unittest, который используется для написания тестов в Python.
  • class TestECommerceApp(unittest.TestCase): Создаем класс тестов, который наследует unittest.TestCase.
  • def test_login(self): Определяем тестовый метод для проверки функции входа в систему.
  • self.assertTrue(login("user", "password")): Проверяем, что функция login возвращает True, что означает успешный вход.
  • def test_add_to_cart(self): Определяем тестовый метод для проверки добавления товара в корзину.
  • self.assertTrue(add_to_cart("item_id")): Проверяем, что функция add_to_cart возвращает True, что означает успешное добавление.
  • def test_checkout(self): Определяем тестовый метод для проверки оформления заказа.
  • self.assertTrue(checkout("user_id", "payment_info")): Проверяем, что функция checkout возвращает True, что означает успешное оформление.
  • def test_payment_gateway(self): Определяем тестовый метод для проверки нового платежного шлюза.
  • self.assertTrue(process_payment("user_id", "new_gateway")): Проверяем, что функция process_payment возвращает True, что означает успешную обработку платежа.
  • if __name__ == '__main__': unittest.main(): Запускаем тесты, если скрипт выполняется как основная программа.

Тема: Виды и уровни тестирования
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки