smoke test что это
В чём разница Smoke, Sanity, Regression, Re-test и как их различать?
Оригинал. Перевод разбавлен размышлениями и дополнениями автора из своего опыта
О чём это всё
Будучи инженером по тестированию, вы, вероятно, слышали о таких видах тестирования как «дымовое» (smoke), «санитарное тестирование» (sanity), «ре-тест» и регрессионное тестирование. Вполне возможно, многие из этих видов используются вами на ежедневной основе.
В этой статье я хотел бы внести ясность и объяснить разницу между этими видами тестирования и попробовать разобраться, провести границы (хоть и условные) где заканчивается один вид тестирования, и начинается другой.
Для новичков в тестировании (и даже опытных тестировщиков) разделение этих понятий может быть затруднительно. И в самом деле, как отличить где начинается санити-тестирование и заканчивается smoke? Насколько сильно нам надо ограничить проверку части функциональности системы или её компонентов, чтобы назвать это «дымовым» тестированием? Является ли ввод логина/пароля в пользовательскую форму входа на сайт дымовым тестом, или сам факт её появления на странице сайта уже является пройденным тестом?
Строго говоря, вы всё равно сможете проводить тестирование, даже при том что не сможете точно сказать, в чём же разница. Можно даже не задумываться о разграничении, каким именно видом тестирования вы сейчас заняты. Но всё же, чтобы расти над собой в профессиональном смысле, нужно знать что вы делаете, зачем, и насколько правильно вы это делаете.
Ликбез
Ниже приведены краткие определения видов тестирования, которые мы сегодня сравниваем:
Ну а по существу?
Приведу пример разграничения понятий на моём текущем проекте.
Пример: у нас есть веб-сервис с пользовательским интерфейсом и RESTful API. Будучи тестировщиками, мы знаем:
Подведём итог
Надеюсь, что после чтения данной статьи, у вас появится ясность в определении какой вид тестирования вы используете на каком этапе, и в чём разница между этими видами тестирования. Как и было упомянуто вначале, граница между этими понятиями весьма условная и остаётся на ваше усмотрение в рамках проекта.
UPD:
Часто «тестирование согласованности» или «тестированием на вменяемость», называют термином «санитарное тестирование». Думаю что это пошло из-за фонетических свойств английского слова sanity, схожего по звучанию с чем-то «санитарным». Гугл транслейт вносит ясность. В интернете встречаются оба варианта. Относительно данной статьи прошу считать «санитарное» тестирование как «тестирование на согласованность».
Smoke test что это
Что пишут в блогах
2 декабря выступала в Костроме у Exactpro Systems с темой «Организация обучения джуниоров внутри команды». Уже готово видео! Ссылка на ютуб — https://youtu.be/UR9qZZ6IWBA
Привет! В блоге появляется мало новостей, потому что все переехало в telegram.
Стоимость в цвете — 2500 рублей самовывозом (доставка еще 500-600 рублей, информация по ней будет чуть позже)
Онлайн-тренинги
Что пишут в блогах (EN)
Software Testing
Разделы портала
Про инструменты
Оригинальная публикация: http://habr.com/post/358142/
Оригинал. Перевод разбавлен размышлениями и дополнениями автора из своего опыта
О чём это всё
Будучи инженером по тестированию, вы, вероятно, слышали о таких видах тестирования как «дымовое» (smoke), «санитарное тестирование» (sanity), «ре-тест» и регрессионное тестирование. Вполне возможно, многие из этих видов используются вами на ежедневной основе.
В этой статье я хотел бы внести ясность и объяснить разницу между этими видами тестирования и попробовать разобраться, провести границы (хоть и условные) где заканчивается один вид тестирования, и начинается другой.
Для новичков в тестировании (и даже опытных тестировщиков) разделение этих понятий может быть затруднительно. И в самом деле, как отличить где начинается санити-тестирование и заканчивается smoke? Насколько сильно нам надо ограничить проверку части функциональности системы или её компонентов, чтобы назвать это «дымовым» тестированием? Является ли ввод логина/пароля в пользовательскую форму входа на сайт дымовым тестом, или сам факт её появления на странице сайта уже является пройденным тестом?
Строго говоря, вы всё равно сможете проводить тестирование, даже при том что не сможете точно сказать, в чём же разница. Можно даже не задумываться о разграничении, каким именно видом тестирования вы сейчас заняты. Но всё же, чтобы расти над собой в профессиональном смысле, нужно знать что вы делаете, зачем, и насколько правильно вы это делаете.
Ликбез
Ниже приведены краткие определения видов тестирования, которые мы сегодня сравниваем:
Оба эти вида тестирования нацелены на то, чтобы избежать потерь времени и усилий, чтобы быстрее определить недостатки ПО и их критичность, а так же то, заслуживает ли оно перехода в фазу более углублённого и тщательного тестирования или же нет.
Для лучшего понимания ниже представлена сравнительная таблица этих понятий и области применения:
Дымовые (Smoke) | Санити (Sanity) | Регрессионные (Regression) | Ре-тест (Re-test) |
---|---|---|---|
Исполняются с целью проверить что критически важные функциональные части AUT работают как положено | Нацелено на установление факта того, что определённые части AUT всё так же работают как положено после минорных изменений или исправлений багов | Подтверждают, что свежие изменения в коде или приложении в целом не оказали негативного влияния на уже существующую функциональность/набор функций | Перепроверяет и подтверждает факт того, что ранее заваленные тест-кейсы проходят после того, как дефекты исправлены |
Цель — проверить «стабильность» системы в целом, чтобы дать зелёный свет проведению более тщательного тестирования | Целью является проверить общее состояние системы в деталях, чтобы приступить к более тщательному тестированию | Цель — убедиться что свежие изменения в коде не оказали побочных эффектов на устоявшуюся работающую функциональность | Ре-тест проверяет что дефект исправлен |
Перепроверка дефектов не является целью Smoke | Перепроверка дефектов не является целью Sanity | Перепроверка дефектов не является целью Regression | Факт того что дефект исправлен подтверждает Re-Test |
Дымовое тестирование выполняется перед регрессионным | Санитарное тестирование выполняется перед регрессионным и после smoke-тестов | Проводится на основании требований проекта и доступности ресурсов (закрывается автотестами), «регресс» может проводиться в параллели с ре-тестами | — Ре-тест выполняется перед sanity-тестированием — Так же, приоритет ре-теста выше регрессионных проверок, поэтому должно выполняться перед ними |
Может выполняться автоматизированно или вручную | Чаще выполняется вручную | Лучший повод для автоматизации данного вида тестирования, т.к. ручное может быть крайне затратным по ресурсам или времени | Не поддаётся автоматизации |
Является подмножеством регрессионного тестирования | Подмножество приёмочного тестирования | Выполняется при любой модификации или изменениях в уже существующем проекте | Ре-тест проводится на исправленной сборке с использованием тех же данных, на том же окружении, но с различным набором входных данных |
Тест-кейсы часть регрессионных тест-кейсов, но покрывающие крайне критичную функциональность | Санитарное может выполняться без тест-кейсов, но знание тестируемой системы обязательно | Тест-кейсы регрессионного тестирования могут быть получены из функциональных требований или спецификаций, пользовательских мануалов, и проводятся вне зависимости от того, что исправили разработчики | Используется тот же самый тест-кейс, который выявил дефект |
Ну а по существу?
Приведу пример разграничения понятий на моём текущем проекте.
Пример: у нас есть веб-сервис с пользовательским интерфейсом и RESTful API. Будучи тестировщиками, мы знаем:
Тогда можно сделать ряд утверждений о том, какие типы тестов нужно использовать в какой момент времени:
При этом, если это api принимает так же post-запросы, то очевидно что в другой набор тестов sanity нужно включить именно эти запросы. По аналогии с UI мы будем проверять все страницы приложения.
Подведём итог
Надеюсь, что после чтения данной статьи, у вас появится ясность в определении какой вид тестирования вы используете на каком этапе, и в чём разница между этими видами тестирования. Как и было упомянуто вначале, граница между этими понятиями весьма условная и остаётся на ваше усмотрение в рамках проекта.
Смок-тестирование релиз-кандидата автотестами за 15 минут
Меня зовут Лилия, я QA Lead в одном из проектов финансовой группы БКС (сервис по подбору выгодных для клиента предложений из ряда кредитных продуктов), и сегодня я расскажу, как мы автоматизировали смок-тестирование, с какими проблемами столкнулись и какой стек технологий используем.
Сначала мы решили автоматизировать регресс-тестирование, но время шло, функциональность менялась и мы поняли, что довольно много времени тратится на поддержку уже написанных автотестов. Поэтому решили автоматизировать сначала смок-тест, а затем уже расширять его до автоматического проведения регрессионного тестирования. Перед отделом тестирования была поставлена задача в максимально сжатые сроки произвести автоматизацию смок-тестирования, т.к. проект продолжал расти и обрастать дополнительными функциями.
Что такое смок-тестирование
Смок-тестирование, как его еще называют «дымовое тестирование» – быстрая проверка наиболее критичной функциональности.
Стек технологий для написания автотестов
Автотесты мы пишем на вот таком стеке: Java + Selenium + Cucumber + отчеты в Allure2.
BDD Автотесты для смок-тестирования
2. Шаги steps. В нем находятся классы, в которых описаны действия с элементами на странице и проверки этих элементов.
3. Работа с локаторами на страницах (паттерн PageObject)
Настройка CI
Пока мы писали автотесты, у финансовой группы БКС появился Selenoid, и мы смогли настроить запуск тестов в pipline GitLab
Организация написания автотестов для разных стендов
У нас есть несколько стендов, на которых и происходит разработка, отладка, приемка, а еще есть очень много feature-стендов, где мы тестируем новые функции, разрабатываемые распределенными командами.
Так же у нас есть несколько стендов веток, которые соответствуют разным средам разработки, при изменении файлов на стенде происходит автоматический запуск соответствующего стенда с автотестами.
QA evolution
Smoke testing
Это короткий цикл тестов, подтверждающий (отрицающий) факт того, что приложение стартует и выполняет свои основные функции. Данный тип тестирования позволяет на начальном этапе выявить основные быстро находимые критические дефекты. Исходя из того, что данные проверки практически всегда одинаковы и редко претерпевают изменениям, целесообразно будет их автоматизировать.
Пример smoke testing:
Если к примеру брать проект DI Tool STAR, то данный тип тестирования будет включать в себя проверку следующих функциональностей:
Login form (логин с валидными данными)
Log out form (клик по кнопке)
Property selection (проверка что функциональность есть и она работает)
Property Lists (что они есть, без сохранения/удаления)
Proceed to STAR
Menu (клик)
Views switching
Drawer (переключение табов, переключение кнопок внутри табов)
Export (срабатывание кнопки)
Header property selector
Favorites (проверка что функциональность есть и она работает)
Нужно определить какие задачи нужно достичь благодаря нашему приложению, какие очевидные шаги для достижения поставленной задачи, какие важные требования мы должны соблюдать и в какой последовательности.
Для этого создаем набор тестов. Набор тестов — это сгруппированная совокупность тестовых случаев, связанная определенным образом (к примеру, по функциональности).
Smoke-тесты созданы для того, чтобы проверить основную функциональность и должны быть неотъемлимой частью процесса тестирования. Они могут включать что-то простое, вроде “Могу ли я зарегистрироваться?”. Smoke-тестирование предполагает ответы ДА/НЕТ и все тест-кейсы должны быть пройдены с положительным результатом.
Smoke test должны быть быстрыми и легковесными, для того, чтобы их можно было запускать часто. В зависимости от специфика проекта, smoke test можно пройти как за несколько минут, так и за несколько часов.
Стоит понимать, что данный тип тестирования является видом тестирования продукта по глубине, а не просто видом тестовых испытаний. Как говорилось выше, данный тип тестирования определяет, пригоден ли продукт для дальнейшего, более полного тестирования. В случае, если он не проходит smoke testing — продукт необходимо отправить на доработку.
Обязательно необходимо записывать результаты прохождения теста. Это необходимо для того, чтобы сохранить записи того, что работает, а что нет. Можно разделить результаты на пройдено и провалено.
Пройдено: все отлично работает.
Провалено: не работает.
Тестирование дыма
Что такое тестирование дыма?
SMOKE TESTING — это тип тестирования программного обеспечения, который определяет, является ли развернутая сборка стабильной или нет. Цель Smoke Проверяет это, чтобы подтвердить, может ли команда QA продолжить дальнейшее тестирование. Дымовые тесты — это минимальный набор тестов, запускаемых на каждой сборке.
Дымовое тестирование — это процесс, в котором сборка программного обеспечения развертывается в среде QA и проверяется для обеспечения стабильности приложения. Он также называется «Тестирование проверки сборки» или «Проверка достоверности».
Проще говоря, мы проверяем, работают ли важные функции, и в тестируемой сборке нет демонстраторов.
Это мини и быстрый регрессионный тест основных функций. Это простой тест, который показывает, что продукт готов к тестированию. Это помогает определить, является ли сборка дефектной, что делает дальнейшее тестирование пустой тратой времени и ресурсов.
Испытания на дым пригодны для дальнейшего формального тестирования. Основной целью тестирования дыма является выявление ранних серьезных проблем. Дымовые тесты предназначены для демонстрации стабильности системы и соответствия требованиям.
Сборка включает в себя все файлы данных, библиотеки, многократно используемые модули, инженерные компоненты, необходимые для реализации одной или нескольких функций продукта.
В этом уроке вы узнаете
Когда мы проводим тестирование на курение
Тестирование дыма проводится всякий раз, когда новые функциональные возможности программного обеспечения разрабатываются и интегрируются с существующей сборкой, развернутой в среде QA / staging. Это гарантирует, что все критические функции работают правильно или нет.
Любой сбой указывает на необходимость обработки системы обратно в команду разработчиков. Всякий раз, когда происходит изменение в сборке, мы проводим тестирование дыма, чтобы обеспечить стабильность.
Кто будет делать тестирование дыма
После выпуска сборки в среду QA, инженеры QA / ведущие специалисты по QA проводят тестирование дыма. Всякий раз, когда появляется новая сборка, команда QA определяет основные функциональные возможности приложения для тестирования дыма. Команда QA проверяет наличие showtoppers в тестируемом приложении.
Тестирование, проводимое в среде разработки кода, чтобы убедиться в корректности приложения перед выпуском сборки для QA, это называется тестированием Sanity. Обычно это узкое и глубокое тестирование. Это процесс, который проверяет соответствие разрабатываемого приложения его основным функциональным требованиям.
Проверка работоспособности определяет завершение этапа разработки и принимает решение о том, сдать или нет программный продукт для дальнейшей фазы тестирования.
Почему мы проводим тестирование на курение?
Тестирование дыма играет важную роль в разработке программного обеспечения, поскольку оно обеспечивает правильность работы системы на начальных этапах. Этим мы можем сэкономить усилия по тестированию. В результате, тесты дыма приводят систему в хорошее состояние. Как только мы закончим тестирование дыма, только мы начнем функциональное тестирование.
Пример 1: Окно регистрации: возможность перехода к следующему окну с действительным именем пользователя и паролем при нажатии кнопки «Отправить».
Пример 2. Пользователь не может выйти из веб-страницы.
Как сделать тестирование дыма?
Тестирование дыма обычно выполняется вручную, хотя есть возможность выполнить то же самое с помощью автоматизации. Это может варьироваться от организации к организации.
Ручное тестирование дыма
В общем, тестирование дыма проводится вручную. Это подходы варьируется от одной организации к другой. Дымовое тестирование проводится для обеспечения того, чтобы навигация по критическим путям соответствовала ожидаемым и не мешала функционированию. После того, как сборка выпущена в QA, необходимо выполнить тесты с высоким приоритетом функциональности и проверить их на предмет выявления критических дефектов в системе. Если тест пройден, мы продолжаем функциональное тестирование. Если тест не пройден, сборка отклоняется и отправляется обратно в команду разработчиков для исправления. QA снова начинает тестирование дыма с новой версией сборки. Дымовое тестирование выполняется на новой сборке и будет интегрировано со старыми сборками для поддержания правильности системы. Прежде чем проводить тестирование на дым, команда QA должна проверить правильность версий сборки.
Тестирование дыма автоматизацией
Вместо того, чтобы повторять тестирование вручную всякий раз, когда развертывается новая сборка программного обеспечения, для сборки выполняются записанные тесты дымового теста. Он проверяет, все ли основные функции все еще работают должным образом. Если тест не пройден, они могут исправить сборку и немедленно повторно развернуть сборку. Благодаря этому мы можем сэкономить время и обеспечить качественную сборку в среде QA.
Используя автоматизированный инструмент, инженер-тестировщик записывает все шаги, выполняемые вручную при сборке программного обеспечения.
Цикл испытаний дыма
Ниже блок-схема показывает, как выполняется тестирование дыма. Как только сборка развернута в QA и пройдены тесты дыма, мы приступаем к функциональному тестированию. Если тест дыма не пройден, мы прекращаем тестирование, пока проблема в сборке не будет устранена.
Цикл испытаний дыма
Преимущества тестирования дыма
Вот несколько преимуществ, перечисленных для тестирования дыма.
Что произойдет, если мы не проведем тестирование дыма
Если мы не проводим тестирование дыма на ранних стадиях, дефекты могут возникнуть на более поздних стадиях, где это может быть экономически эффективным. И Дефект, обнаруженный на более поздних стадиях, может показать пробки, где он может повлиять на выпуск результатов.
Образец примера тестов дыма
T.ID | СЦЕНАРИИ ИСПЫТАНИЙ | ОПИСАНИЕ | ТЕСТОВЫЙ ШАГ | ОЖИДАЕМЫЙ РЕЗУЛЬТАТ | ФАКТИЧЕСКИЙ РЕЗУЛЬТАТ | ПОЛОЖЕНИЕ ДЕЛ |
---|---|---|---|---|---|---|
1 | Действительные учетные данные для входа | Проверьте функциональность входа в систему веб-приложения, чтобы убедиться, что зарегистрированному пользователю разрешено входить с именем пользователя и паролем. | 1. Запустите приложение 2. Перейдите на страницу входа в систему 3. Введите действительное имя пользователя 4. Введите действительный пароль 5. Нажмите на кнопку входа | Логин должен быть успешным | как и ожидалось | Проходить |
2 | Добавление функциональности предмета | Возможность добавить товар в корзину | 1. Выбрать список категорий 2. Добавить товар в корзину | Товар должен быть добавлен в корзину | Товар не добавляется в корзину | Потерпеть поражение |
3 | Функциональность выхода | Проверьте выход функциональности | 1. выберите кнопку выхода | Пользователь должен иметь возможность выйти. | Пользователь не может выйти | Потерпеть поражение |
Резюме:
В программной инженерии тестирование Smoke должно выполняться на каждой сборке в обязательном порядке, поскольку это помогает находить дефекты на ранних стадиях. Тестирование дыма — последний шаг перед тем, как сборка программного обеспечения войдет в системную стадию. Дымовые тесты должны выполняться на каждой сборке, включенной в тестирование. Это относится к новым разработкам и основным и второстепенным версиям системы.
Перед проведением дымового тестирования команда QA должна убедиться в правильности сборки версии тестируемого приложения. Это простой процесс, который требует минимального времени для проверки стабильности приложения.
Дымовые тесты могут минимизировать усилия по тестированию и могут улучшить качество приложения. Тестирование дыма может быть сделано или вручную или автоматизацией в зависимости от клиента и организации.
Эта статья предоставлена Павани Ичапурапу