Принципы программирования
1. SOLID — принципы ООП-дизайна
(часто спрашивают даже у автотестеров)
S — Single Responsibility Principle (Принцип единственной ответственности) → Класс/метод должен иметь только одну зону ответственности. Пример в тестах:
Класс
LoginPage
только описывает элементы страницы и действия на ней, а не выполняет API-запросы.
O — Open/Closed Principle (Открыт для расширения, закрыт для изменения) → Легко добавлять функционал через наследование/композицию, не меняя старый код.
L — Liskov Substitution Principle (Принцип подстановки Лисков) → Подклассы должны полностью заменять базовые классы без изменения поведения.
I — Interface Segregation Principle (Принцип разделения интерфейсов) → Не заставлять класс реализовывать лишние методы.
D — Dependency 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) — структура теста:
Arrange (Подготовка данных и окружения).
Act (Выполнение действия).
Assert (Проверка результата).
FIRST (для тестов):
F — Fast (быстрые).
I — Independent (независимые).
R — Repeatable (повторяемые).
S — Self-Validating (сами проверяют результат).
T — Timely (пишутся вовремя, а не после релиза).
6. Принципы проектирования автотестов
Локаторы и тестовые данные не должны быть захардкожены в тестах.
Логика повторного использования — в фикстурах и утилитах.
Минимум зависимости тестов друг от друга.
Last updated
Was this helpful?