Smoke-тестирование — проверка программного обеспечения на стабильность и наличие явных ошибок. Тест должен подтвердить или опровергнуть правильность выполнения ПО своих основных функций перед его передачей на более глубокое тестирование.
Сам термин появился впервые в среде инженеров, занимавшихся отопительным оборудованием. Когда изготавливалась новая печь или котел, все ее заглушки задвигались, после чего она затапливалась. Если дым шел только из положенных мест (например дымохода), то отопительное устройство было собрано правильно. Позже этот термин стал в ироничном ключе использоваться разработчиками микроэлектроники, которые проверяли устройства путем подачи напряжения на короткое время и таким образом выявляли сильно нагревающиеся компоненты.
Как проводится дымовое тестирование
Дымовое тестирование осуществляется при выпуске каждой новой сборки. Такая проверка включает в себя несколько этапов.
Планирование. Smoke-тест планируется, как правило, в начале проекта командой quality assurance (QA) инженеров в сотрудничестве с менеджером проекта, программистами, заказчиками и пользователями. Типичное планирование выглядит следующим образом:
- определение функций и задач ПО, которые планируется подвергнуть проверке;
- разработка тестовой ситуации (сценария или тест-кейса), в котором будут задействованы определенные на первом этапе функции сборки (например, запуск и прекращение работы, работоспособность меню, отклик на действия пользователя и т.д.);
- настройка среды тестирования — где, в каких условиях, в течение какого времени, кем и когда оно будет проводиться;
- определение вводных данных, с помощью которых будет осуществляться проверка функциональности продукта;
- определение критериев выхода — данных, по которым можно оценить, насколько продукт соответствует заявленным характеристикам.
Выполнение. Это непосредственно этап самого тестирования. В ходе него проверяемая сборка подвергается испытанию в рамках предварительно разработанных тест-кейсов:
- в продукт водятся определенные на этапе планирования исходные данные;
- полученные выходные данные фиксируются для дальнейшей оценки.
Фактически smoke-тестирование представляет собой эксперимент, поэтому оно должно проводиться по заранее определенным сценариям в контролируемой среде. Это исключает воздействие на тестируемую систему непредвиденных внешних факторов, которые могут исказить результаты проверки.
Анализ и оценка. На этом этапе полученные в ходе тестирования выходные данные сравниваются с заранее определенными критериями. Если они соответствуют друг другу, то сборка признается работоспособной и отправляется на более глубокое тестирование, дальнейшую разработку или согласование с заказчиком. Если выходные данные не отвечают критериям оценки, то продукт передается разработчикам на доработку и исправление ошибок.
Рассмотрим алгоритм smoke-тестирования на примере основных функций сайта или веб-приложения, где предусмотрена регистрация и авторизация пользователей, — например, соцсети или электронной почты. В них предусмотрены основные пользовательские функции:
- регистрация пользователя;
- авторизация в системе;
- личная страница пользователя;
- редактирование личных данных.
Для проверки этого функционала тестировщик в ходе дымового тестирования должен провести основные пользовательские сценарии:
- успешное создание аккаунта при введении валидных сведений (телефона, электронной почты, имени, фамилии и т.д.) в поля регистрационной формы;
- успешный вход с валидными учетными данными (логином и паролем, полученными или заданными при регистрации);
- неудачная авторизация с помощью недействительных учетных данных;
- просмотр страницы пользователя после авторизации;
- успешное изменение регистрационных данных (например имени или адреса email).
Что проверяется с помощью дымовых тестов
Дымовое тестирование проводится для проверки основных функций программного продукта. Соответственно, содержание конкретного теста зависит от того, для чего разработан этот продукт:
- Для социальных сетей или электронной почты важно проверить отображение в браузере, функции регистрации и авторизации, отправки текстовых сообщений или мультимедийных файлов, заполнения и изменения личных данных пользователя.
- В тестировании мобильного фоторедактора в первую очередь проверяются инсталляция, запуск и выход из приложения, функции обращения к хранилищу файлов на устройстве, отмены внесенных в фотографию изменений и т.д.
- В мобильной игре также тестируются запуск и выход, основные геймплейные функции (движение, взаимодействие с окружением), скачивание дополнительного контента, подключение к серверу (если речь о многопользовательских играх).
Дымовое тестирование может применяться как к новому, так и к модернизированному продукту.
Чек-лист для Smoke-тестирования:
Этот чек-лист является базовым руководством для smoke-тестирования и может быть дополнен в зависимости от особенностей вашего проекта.
- Запуск приложения:
- Приложение успешно запускается без ошибок.
- Отсутствуют критические ошибки на этапе запуска.
- Основные функции:
- Главные функции приложения (например, вход в систему, создание нового пользователя) работают корректно.
- Основной пользовательский интерфейс открывается и отображается без существенных дефектов.
- Навигация:
- Навигация между разделами приложения происходит без проблем.
- Отсутствуют сломанные ссылки или переходы.
- Ввод данных:
- Ввод данных (текст, числа и т.д.) в поля происходит без ошибок.
- Поля ввода ограничивают ввод некорректных данных.
- Отображение данных:
- Данные корректно отображаются на экране (текст, изображения и т.д.).
- Отсутствуют аномалии в структуре или визуальном отображении.
- Ошибки и уведомления:
- Проверка наличия понятных и информативных сообщений об ошибках.
- Проверка наличия уведомлений о действиях пользователя (успешные операции, предупреждения).
- Кросс-браузерное тестирование:
- Приложение работает корректно на основных браузерах (Chrome, Firefox, Safari, Edge и т.д.).
- Респонсивный дизайн:
- Приложение адекватно отображается на различных устройствах (мобильные телефоны, планшеты, настольные компьютеры).
- Базовая безопасность:
- Проверка наличия базовых мер безопасности (например, валидация данных на сервере, защита от SQL-инъекций).
- Интеграции:
- Проверка корректной работы с внешними системами или API, если они используются.
- Тестовые данные:
- Проверка наличия тестовых данных или демонстрационных аккаунтов для удобства тестирования.
- Восстановление после сбоев:
- Проверка, что приложение может восстановиться после временных сбоев (например, если интернет-соединение было потеряно).
- Документация:
- Обновленная документация, описывающая, какие тесты и функциональности должны быть протестированы в рамках smoke-тестирования.
- Производительность:
- Общая производительность приложения на базовом уровне.
- Обратная связь:
- Проверка наличия механизмов для предоставления обратной связи о найденных ошибках.
Когда проводится smoke-тестирование
Дымовое тестирование является первым, поверхностным этапом проверки. Его цель заключается в том, чтобы избежать напрасных трат ресурсов и времени на более сложные тесты в том случае, когда продукт не выполняет основные функции. Проводить smoke-тесты имеет смысл в следующих случаях:
- при частом выпуске командой разработчиков исправлений и сборок, обычно на начальном этапе разработки программного продукта;
- когда разработка продукта осуществляется по одной из методик постоянной интеграции и развертки, подразумевающих большое количество итераций (циклов, спринтов);
- если продукт разрабатывается небольшой командой — в этом случае дымовое тестирование позволяет избежать затрат ограниченных ресурсов на неоправданное проведение глубоких проверок.
Преимущества дымового тестирования
- Экономия времени и ресурсов. Smoke-тесты сравнительно простые и не требуют значительных затрат на свое проведение, могут осуществляться самими разработчиками или ограниченной командой QA-инженеров. В то же время они могут показать, что текущая сборка не выполняет даже основных своих задач и потому проводить более глубокое и затратное тестирование просто не имеет смысла до тех пор, пока главный функционал продукта не будет стабильно работать.
- Автоматизация. Дымовые тесты обычно стандартные и повторяющиеся для каждой сборки одного и того же продукта или различных однотипных проектов. Соответственно, для ускорения и упрощения тестирование можно автоматизировать. Однако автоматизация самого теста зачастую может быть труднее его «ручного» проведения, поэтому ее нужно осуществлять соразмерно сложности проекта.
- Стабильность сборки. В случае, когда сборки выпускаются часто, регулярное проведение smoke-тестов придает разработчику и другим задействованным в разработке продукта сторонам уверенность, что он будет работать стабильно по крайней мере в отношении основных функций. Соответственно, на каких-то этапах можно опустить затратную глубокую проверку — например, если текущий билд отличается от предыдущего незначительными изменениями.
- Обнаружение проблем на ранних этапах. Особенно это преимущество проявляется в непрерывной интеграции, когда продукт проходит быструю и частую смену итераций. Потенциально такая скорость может привести к накоплению большого количества ошибок в финальной версии. Внедрение smoke-тестов в рамках каждого цикла позволяет этого избежать.
Недостатки дымового тестирования
- Ограниченность. Smoke-тесты покрывают только основные функции приложения. Соответственно, их проведение не гарантирует, что продукт будет работать абсолютно без ошибок, в том числе критических.
- Стереотипность. Повторяющиеся и стандартизированные smoke-тесты упрощают их проведение и автоматизацию. Однако в процессе работы приложения могут возникнуть непредвиденные новые ошибки, тестовые сценарии для которых не были заранее предусмотрены.
Таким образом, smoke-тесты — это простой и действенный способ проверить основной функционал сборки. Тем не менее они не отменяют необходимость проведения более глубоких проверок, затрагивающих функции, не столь важные для самой сборки, но имеющие большое значение для пользователя. Кроме того, тестовые сценарии нуждаются в периодическом обновлении, чтобы исключить риск пропуска новых ошибок.
1 комментарий