Принципы программирования

1. SOLID — принципы ООП-дизайна

(часто спрашивают даже у автотестеров)

  1. SSingle Responsibility Principle (Принцип единственной ответственности) → Класс/метод должен иметь только одну зону ответственности. Пример в тестах:

    • Класс LoginPage только описывает элементы страницы и действия на ней, а не выполняет API-запросы.

  2. OOpen/Closed Principle (Открыт для расширения, закрыт для изменения) → Легко добавлять функционал через наследование/композицию, не меняя старый код.

  3. LLiskov Substitution Principle (Принцип подстановки Лисков) → Подклассы должны полностью заменять базовые классы без изменения поведения.

  4. IInterface Segregation Principle (Принцип разделения интерфейсов) → Не заставлять класс реализовывать лишние методы.

  5. DDependency Inversion Principle (Инверсия зависимостей) → Модули верхнего уровня не должны зависеть от модулей нижнего уровня напрямую.


2. DRY, KISS, YAGNI

  • DRY (Don't Repeat Yourself) — избегай дублирования кода. → Выноси повторяющуюся логику в функции/фикстуры.

  • KISS (Keep It Simple, Stupid) — пиши проще. → Чем меньше ненужной абстракции, тем лучше.

  • YAGNI (You Aren’t Gonna Need It) — не реализуй то, что не нужно сейчас. → Не трать время на “а вдруг потом понадобится”.


3. PEP 8 и Code Style

  • Единый стиль кода: отступы, длина строк, имена переменных, docstring.

  • Понятные названия методов (test_login_success, а не tl_scs).


4. Чистая архитектура (Clean Architecture)

  • Разделение кода на слои:

    • Доменная логика (что тестируем).

    • Интерфейсы (API, UI, БД).

    • Инфраструктура (логирование, конфиги).

  • В тестах это часто выражается в Page Object Model или Screenplay Pattern.


5. Принципы тестового кода

  • AAA (Arrange – Act – Assert) — структура теста:

    1. Arrange (Подготовка данных и окружения).

    2. Act (Выполнение действия).

    3. Assert (Проверка результата).

  • FIRST (для тестов):

    • F — Fast (быстрые).

    • I — Independent (независимые).

    • R — Repeatable (повторяемые).

    • S — Self-Validating (сами проверяют результат).

    • T — Timely (пишутся вовремя, а не после релиза).


6. Принципы проектирования автотестов

  • Локаторы и тестовые данные не должны быть захардкожены в тестах.

  • Логика повторного использования — в фикстурах и утилитах.

  • Минимум зависимости тестов друг от друга.

Last updated

Was this helpful?