Код профессиональных разработчиков содержит меньше ошибок, чем код начинающих. Это происходит не потому, что они умнее, внимательнее к деталям или видят код насквозь. Настоящая причина кроется в том, что они пишут тесты.
Автоматизированное тестирование — неотъемлемая часть процесса программирования в профессиональной среде. Тесты — единственный надежный способ убедиться в работоспособности кода. Они не избавляют от багов, но позволяют держать их количество на приемлемом уровне. Тесты дают уверенность, что изменения в одной части системы не сломали другие части.
Но тесты нужны не только для проверки работоспособности кода. Существуют и другие виды автоматизированных тестов: например, тесты производительности или тесты на уязвимости.
В первую очередь программисты отвечают за функциональные тесты. Эти тесты проверяют, что код выполняет свою прямую задачу с точки зрения пользователей программы, например:
- Программист написал код, который отвечает за регистрацию пользователя
- Далее он проводит функциональный тест, который показывает, получается ли у пользователя зарегистрироваться
По степени изолированности тестируемых частей кода функциональные тесты принято делить на три типа:
- Модульные — простые, но не очень эффективные тесты. Они проверяют работоспособность функций или других конкретных модулей программы
- Интеграционные — такие тесты охватывают большую часть системы и проверяют, работают ли модули вместе. Таким тестам программисты уделяют основное внимание. Интеграционные тесты все еще достаточно просто писать, если экосистема проекта подготовлена к этому
- Системные — самые эффективные тесты, но при этом их сложно писать и поддерживать. Они эмулируют поведение пользователя: кликают на ссылки, отправляют формы. Такие тесты часто ломаются, потому что они опираются на верстку сайта, а она может непредсказуемо поменяться. Еще при таком тестировании невозможно точно определить, когда с точки зрения программы закончилось одно действие и началось другое
Несмотря на различия, в основе всех автоматических тестов лежат одни и те же принципы, часто используются одни и те же инструменты. Этот курс знакомит с общими принципами тестирования и шаг за шагом проводит через все возникающие во время тестирования задачи. На курсе мы затронем такие основные темы:
- Утверждения (Asserts)
- Фреймворки для тестирования (Pytest)
- Модульное тестирование (Unit)
- Покрытие кода тестами
- Разработка через тестирование (TDD)
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар «Как самостоятельно учиться»
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.