Лог — это последовательная запись всех событий в системе: что произошло, кто это вызвал, когда и с каким результатом. У каждой записи есть уровень — своего рода приоритет, который показывает, насколько событие критично: от FATAL (система вот-вот упадёт) до DEBUG и TRACE (подробности, интересные только разработчику). Разница между уровнями — один из самых частых вопросов на собеседовании тестировщика, и без понимания логов невозможно нормально дебажить баги и писать баг-репорты с доказательствами.
Что такое лог и зачем он нужен тестировщику
Слово log пришло из английского и когда-то означало бревно с зарубками — в средневековье такие зарубки делали, чтобы фиксировать происходящие события. Смысл с тех пор не изменился: лог-файл — это журнал, в который система пишет всё, что с ней случается. Одна запись в этом журнале называется лог-записью, а вся их совокупность — лог-файлом. Это похоже на личный дневник: человек записывает, что делал в течение дня, чтобы потом вспомнить детали, проанализировать своё поведение или найти закономерности.
Логи решают сразу несколько задач, и не только техническую отладку. Во-первых, это дебаггинг: если тестировщик добавил товар в корзину, перешёл в чекаут, а товар пропал, но воспроизвести баг заново не получается — разработчик по логам может точно сказать, какой именно товар был добавлен, и тестировщик воспроизведёт проблему уже прицельно. Во-вторых, логи помогают восстановить потерянные данные — например, случайно удалённый отчёт. В-третьих, по логам собирают статистику: какие кнопки нажимают пользователи, куда чаще кликают, пользуются ли вообще той или иной функцией. Ещё логи помогают находить баги при тестировании (открыли консоль — увидели красную ошибку), ловить проблемы у реальных пользователей, которые просто молча уходят с сайта вместо того, чтобы писать в поддержку, и отслеживать общую стабильность системы — как часто она падает под нагрузкой.
Важный момент: логи не появляются сами по себе. Что именно логировать, решает разработчик — он пишет код, который вызывает функцию логирования. Если в проекте логов не хватает для полноценного тестирования, это нормально обсудить с разработчиком и попросить добавить больше деталей.
Логи решают сразу несколько задач, и не только техническую отладку. Во-первых, это дебаггинг: если тестировщик добавил товар в корзину, перешёл в чекаут, а товар пропал, но воспроизвести баг заново не получается — разработчик по логам может точно сказать, какой именно товар был добавлен, и тестировщик воспроизведёт проблему уже прицельно. Во-вторых, логи помогают восстановить потерянные данные — например, случайно удалённый отчёт. В-третьих, по логам собирают статистику: какие кнопки нажимают пользователи, куда чаще кликают, пользуются ли вообще той или иной функцией. Ещё логи помогают находить баги при тестировании (открыли консоль — увидели красную ошибку), ловить проблемы у реальных пользователей, которые просто молча уходят с сайта вместо того, чтобы писать в поддержку, и отслеживать общую стабильность системы — как часто она падает под нагрузкой.
Важный момент: логи не появляются сами по себе. Что именно логировать, решает разработчик — он пишет код, который вызывает функцию логирования. Если в проекте логов не хватает для полноценного тестирования, это нормально обсудить с разработчиком и попросить добавить больше деталей.
Что записывается в лог-запись
Хорошая лог-запись отвечает на несколько вопросов сразу: что произошло, кто это вызвал (пользователь, сама система или внешний сервис), когда это случилось (обычно с точностью до секунды), какой был результат, с помощью чего это было сделано (какие данные, какой эндпоинт) и в каком модуле системы — в корзине, авторизации, работе с базой данных. На практике почти в любой нормальной системе в записи можно найти четыре обязательных поля: дату и время, название события, описание с контекстом и уровень — то есть тип критичности записи.
Какие бывают виды логов
В классической клиент-серверной архитектуре логи делятся по месту сбора. Логи клиента собираются в консоли браузера (DevTools) и показывают ошибки JavaScript, неудачные запросы, предупреждения. Логи сервера содержат основную бизнес-логику и большинство серверных ошибок. Логи базы данных фиксируют ошибки запросов и любые события внутри БД. Логировать можно вообще любую систему — не только веб-сайт, но и мобильное приложение, десктопную программу и даже калькулятор, если в этом есть смысл.
Отдельно стоит audit log — журнал, предназначенный не для разработчиков, а для пользователей самой системы: администраторов и менеджеров. Формат у него дружелюбнее — обычно это читаемая лента событий за день, неделю или месяц, а не сырой технический текст. Технически это тот же самый лог, только оформленный понятнее для нетехнической аудитории.
Отдельно стоит audit log — журнал, предназначенный не для разработчиков, а для пользователей самой системы: администраторов и менеджеров. Формат у него дружелюбнее — обычно это читаемая лента событий за день, неделю или месяц, а не сырой технический текст. Технически это тот же самый лог, только оформленный понятнее для нетехнической аудитории.
6 уровней логирования — от критичного до подробного
Уровень логирования — это приоритет записи, похожий на приоритет баг-репорта. Всего их шесть, плюс дополнительный VERBOSE, который встречается в консоли браузера:
— FATAL — фатальная ошибка, после которой программа должна завершиться. Встречается редко, но требует немедленной реакции всей команды.
— ERROR — ошибка, из-за которой часть функциональности работает некорректно. О таких сообщают разработчику незамедлительно.
— WARN (Warning) — предупреждение: что-то пошло не совсем так, но некритично. Требует внимания, но не паники.
— INFO — информационные сообщения о состояниях и операциях системы, обычно интересны разработчику больше, чем тестировщику.
— DEBUG — подробные записи для локальной разработки.
— TRACE — самый подробный уровень: состояния переменных, последовательность вызова функций.
Тестировщику в первую очередь важны ERROR, WARN и INFO — именно эти уровни чаще всего попадают в баг-репорты. DEBUG, TRACE и VERBOSE больше нужны разработчику, но полезно знать, что они существуют и для чего.
Важный нюанс: не каждая красная ошибка ERROR в консоли критична. Часть таких ошибок связана с аналитическими скриптами, сторонними вызовами или расширениями браузера, а не с реальным багом продукта. На новом проекте разумная тактика — сделать скриншот ошибки и показать разработчику: он подскажет, какие ошибки можно игнорировать, а какие стоит зафиксировать как баг.
— FATAL — фатальная ошибка, после которой программа должна завершиться. Встречается редко, но требует немедленной реакции всей команды.
— ERROR — ошибка, из-за которой часть функциональности работает некорректно. О таких сообщают разработчику незамедлительно.
— WARN (Warning) — предупреждение: что-то пошло не совсем так, но некритично. Требует внимания, но не паники.
— INFO — информационные сообщения о состояниях и операциях системы, обычно интересны разработчику больше, чем тестировщику.
— DEBUG — подробные записи для локальной разработки.
— TRACE — самый подробный уровень: состояния переменных, последовательность вызова функций.
Тестировщику в первую очередь важны ERROR, WARN и INFO — именно эти уровни чаще всего попадают в баг-репорты. DEBUG, TRACE и VERBOSE больше нужны разработчику, но полезно знать, что они существуют и для чего.
Важный нюанс: не каждая красная ошибка ERROR в консоли критична. Часть таких ошибок связана с аналитическими скриптами, сторонними вызовами или расширениями браузера, а не с реальным багом продукта. На новом проекте разумная тактика — сделать скриншот ошибки и показать разработчику: он подскажет, какие ошибки можно игнорировать, а какие стоит зафиксировать как баг.
Стек-трейс: путь ошибки от конца к началу
Стек-трейс (трассировка стека) — это последовательность вызовов функций, которая привела к возникновению ошибки. Работа программы устроена как цепочка вызовов одних функций другими, и стек-трейс показывает этот путь в обратном порядке: сначала сама ошибка, а затем — какая функция её вызвала, какая вызвала ту функцию, и так далее до самого начала цепочки. В консоли разработчика такой путь виден как список строк кода и названий функций.
Для тестировщика понимать код построчно не обязательно — задача в том, чтобы зафиксировать факт ошибки, приложить стек-трейс или ссылку на систему логирования в баг-репорт и передать разработчику. Хорошая привычка — тестировать интерфейс с открытой консолью браузера: тогда любая ошибка, даже если она не проявляется визуально, сразу попадает в поле зрения.
Понимание логов и уровней логирования — это база, которая нужна тестировщику каждый день: от чтения консоли браузера до анализа серверных логов в больших системах. В Quality Academy на курсе «Инженер по ручному тестированию» тема логирования разбирается на реальных примерах: работа с консолью DevTools, разбор конкретных ошибок и практика составления баг-репортов с приложенными логами.
-------
Для тестировщика понимать код построчно не обязательно — задача в том, чтобы зафиксировать факт ошибки, приложить стек-трейс или ссылку на систему логирования в баг-репорт и передать разработчику. Хорошая привычка — тестировать интерфейс с открытой консолью браузера: тогда любая ошибка, даже если она не проявляется визуально, сразу попадает в поле зрения.
Понимание логов и уровней логирования — это база, которая нужна тестировщику каждый день: от чтения консоли браузера до анализа серверных логов в больших системах. В Quality Academy на курсе «Инженер по ручному тестированию» тема логирования разбирается на реальных примерах: работа с консолью DevTools, разбор конкретных ошибок и практика составления баг-репортов с приложенными логами.
-------
Полезные ссылки школы
Сайт Quality Academy:
/main
Telegram-канал:
https://t.me/quality_academy
YouTube-канал:
https://www.youtube.com/@quality_academy
ВКонтакте:
https://vk.com/quality_academy
Канал отзывов учеников (58+ отзывов):
https://t.me/quality_academy_reviews
Задать вопрос менеджеру:
https://t.me/quality_academy_bot
Тест «Подойдёт ли вам тестирование»:
https://quiz.quality-academy.ru
5000+ вопросов с собесов тестировщика — бот-тренажёр:
https://t.me/quality_academy_interview_bot
3 практические задачи и дорожная карта:
https://t.me/quality_academy_tasks_bot
Бесплатные тренажёры — SQL Arena, Playwright Arena, Python Arena:
SQL Arena · Playwright Arena · Python Arena
/main
Telegram-канал:
https://t.me/quality_academy
YouTube-канал:
https://www.youtube.com/@quality_academy
ВКонтакте:
https://vk.com/quality_academy
Канал отзывов учеников (58+ отзывов):
https://t.me/quality_academy_reviews
Задать вопрос менеджеру:
https://t.me/quality_academy_bot
Тест «Подойдёт ли вам тестирование»:
https://quiz.quality-academy.ru
5000+ вопросов с собесов тестировщика — бот-тренажёр:
https://t.me/quality_academy_interview_bot
3 практические задачи и дорожная карта:
https://t.me/quality_academy_tasks_bot
Бесплатные тренажёры — SQL Arena, Playwright Arena, Python Arena:
SQL Arena · Playwright Arena · Python Arena