Опишите процесс тестирования отдельного модуля.

«Опишите процесс тестирования отдельного модуля.» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Процесс модульного (компонентного) тестирования включает несколько этапов:

  1. Анализ спецификации: Изучение требований к модулю (API-контракт, ожидаемое поведение, входные/выходные данные).
  2. Тест-дизайн: Создание тест-кейсов, покрывающих:
    • Позитивные сценарии (корректные данные).
    • Негативные сценарии (некорректные данные, ошибки).
    • Граничные значения.
  3. Изоляция модуля: Использование моков (mocks) и стабов (stubs) для замены зависимостей (база данных, внешние API). Это ключевой аспект модульного тестирования.
  4. Написание и выполнение тестов:
    
    # Пример модульного теста для функции логина с использованием pytest и unittest.mock
    from unittest.mock import Mock
    import pytest

def test_login_success(mocker):

Мокаем вызов к базе данных

mock_db = mocker.patch('module.database.get_user', return_value={"id": 1, "password_hash": "..."})
# Мокаем функцию хеширования пароля
mocker.patch('module.auth.verify_password', return_value=True)

result = login(username="valid_user", password="correct_pass")

assert result["status"] == "success"
assert "auth_token" in result
mock_db.assert_called_once_with(username="valid_user")  # Проверяем, что мок был вызван

5.  **Анализ покрытия кода (Code Coverage):** Использование инструментов (например, `pytest-cov`) для оценки процента кода, выполненного тестами.
6.  **Рефакторинг и поддержка:** Тесты служат "страховкой" при изменении кода модуля.

**Инструменты:** `pytest`/`unittest` (Python), `JUnit` (Java), `Jest` (JavaScript), `Mockito`.