Как писать качественный код?

«Как писать качественный код?» — вопрос из категории SOLID и принципы программирования, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В своей работе как инженер по тестированию и автоматизации я следую тем же принципам качественного кода, что и разработчики, но с акцентом на поддерживаемость и надежность тестов.

Мои ключевые практики для тестового кода:

  1. Читаемость — это главное. Тесты — это документация. Имена тестов и переменных должны быть говорящими.

    • Плохо: test1(), def test_api():
    • Хорошо: test_user_registration_with_invalid_email_returns_400(), def test_search_returns_empty_list_when_database_is_empty():
  2. Принцип DRY (Don't Repeat Yourself) через фикстуры и хелперы. Повторяющуюся логику подготовки данных выношу в отдельные функции или фикстуры (в pytest).

    # Фикстура для часто используемого тестового пользователя
    @pytest.fixture
    def premium_user():
        return User(id=1, name="Test User", tier="premium")
    
    def test_discount_applied(premium_user):
        # Тест автоматически получает готовый объект user
        result = calculate_price(100, premium_user)
        assert result == 90
  3. Принцип единой ответственности (Single Responsibility из SOLID). Один тест — одна четкая проверка. Если тест падает, должно быть сразу понятно, что именно сломалось.

  4. Независимость тестов. Каждый тест должен запускаться изолированно и не зависеть от состояния, оставленного другими тестами. Я всегда сбрасываю базу данных или состояние приложения в известное состояние перед каждым тестом (setup/teardown).

  5. Отсутствие «магии». Избегаю сложных цепочек вызовов или неочевидных преобразований данных внутри теста. Логика теста должна быть линейной и простой для анализа.