GitFlow в его простоте от dev до prod
В какой ветке вести разработку? Из какой ветки деплоить на PROD? В какой ветке чинить багу, выявленную на IFT? Многие команды закрыли для себя этот вопрос, но для многих он остаётся открытым.
Этот пост не будет содержать каких-то особых ноу-хау и киллер-фич. В нём я расскажу наиболее простую и понятную (лично мне) практику релизных циклов на основе git flow. И постараюсь объяснить каждое своё решение и каждый подход.
Сколько понадобится стендов?
В идеале, в дополнение к проду, хорошо иметь ещё два стенда: интеграционно‑функциональный (далее — IFT) и, конечно, DEV. Опишем каждый стенд, его задачи и назначение более подробно:

- DEV. Стенд для разработки. Все новые фичи и починенные баги в рамках спринта в первую очередь выкатываются на этот стенд. Активное тестирование фич и исправленных багов происходит тут. Деплоит на него в основном команда разработки. Содержит синтезированные данные.
- IFT. Стенд для интеграционно‑функционального тестирования. На этапе отладки фичи и исправленные баги тестируются на нём. Как правило, размещается в тестовом окружении заказчика и содержит реальные обезличенные данные. Если у Вас проект чуть сложнее CRUD, а стенда IFT у Вас нет, разрабатывать будет больно.
- PROD. Продуктивный стенд, с реальными посетителями. Вершина иерархии окружения. Деплоем на такие стенды занимается специальная команда внедрения. Лучше, если у разработчиков вообще не будет к нему доступа.
Как управлять разработкой для этого минимума стендов, мы и поговорим в этом посте.
Как мы поделим спринт?
Спринт мы поделим на две неравные части: разработка и отладка.
Активная разработка — это бо́льшая часть спринта, во время которой реализуются фичи, заявленные в спринте и исправляются баги, найденные на DEV‑стенде.
Отладка — это вторая часть спринта, которая наступает после реализации фич спринта, а тестирование переносится на IFT‑стенд.
Какие основные ветки потребуются для разработки?
Итак, у нас 3 стенда. Для каждого из них лучше создать свою ветку, назвав её соответствующим образом: prod/master , ift/test , dev/develop — как угодно, главное, чтобы по названиям было понятно их назначение или они хотя бы были в понятийной среде разработки. В нашем примере, ветки будут master , test и develop .
Правило первое. Каждый стенд имеет свою одну-единственную мастер-ветку. Разворачивание приложения на стенд происходит только из неё.
Выглядеть это будет следующим образом:

Этот контракт необходимо поддерживать всеми силами.
Этап активной разработки.
Активная разработка ведётся только из ветки develop . Реализуете фичу — ответвляете ветку feature/XXX от develop . Исправляете баг — пожалуйста, bug/XXX . По окончании разработки, ветка вливается обратно в develop , а оттуда уже изменения попадают на DEV-стенд.

Правило второе. Вся активная разработка ведётся в ветках, образованных от ветки develop , которые по окончании разработки в них вливаются обратно в develop .
На DEV-стенде размещено приложение в состоянии, соответствующем текущему спринту; на IFT и PROD — предыдущему. Выглядит это так:

Как видно из картинки, на IFT и PROD код ещё в версии спринта А, тогда как на DEV-стенде уже в версии спринта Б.
Этап отладки.
По окончании активной разработки, весь код из ветки develop вливается в ветку test . Тестирование на DEV‑стенде прекращается и переносится на IFT‑стенд. Этот процесс можно назвать code freeze в рамках спринта.
С этого момента, разработчик уже может брать задачи следующего спринта и продолжать реализовывать обычным способом, в ветках от develop , по окончании реализации которых он в обычном режиме деплоится на DEV‑стенд. Происходит разделение стендов на уровне спринтов: IFT‑стенд принадлежит текущему спринту, тогда как DEV‑стенд — будущему.
С момента отладки уже можно проводить планирование следующего спринта, чтобы определить scope задач, которые разработчик уже может брать в работу.
Таким образом, на этапе отладки каждый стенд находится в версии своего спринта: тогда как PROD всё ещё в версии предыдущего спринта, то IFT уже в версии нынешнего, а DEV — в версии спринта будущего.

Таким образом, разработчик не простаивает на время отладки и уже может сделать часть работы, намеченной на следующий спринт.
Этап отладки: что, если был найден баг на стенде IFT?
Интеграционно‑функциональный стенд имеет несколько важных отличий от стенда разработки: а) он находится в окружении заказчика, что позволяет отладить взаимодействие с этим окружением, и б) он наполнен не синтезированным мусором, а обезличенными данными с PROD. Это позволяет тестировщику провести тестирование фич на уровне, наиболее близком к продуктивному.
Конечно, целью такого тестирования является обнаружение новых багов.
Итак, тестировщик нашёл новый баг. Как мы помним, IFT находится в состоянии текущего спринта, а DEV — будущего. Если мы для устранения бага создадим ветку от develop , то к тому моменту в develop уже могут оказаться фичи следующего релиза, которые не были ещё протестированы и не должны попасть в текущий релиз. Тогда, после устранения бага, нам придётся черри‑пикать изменения из develop в test и держать потом эти черри‑пики в уме, но это плохой выход из ситуации (в целом, практика черри‑пиков является костылём и в разработке может применяться только от безысходности).
Отсюда вытекает правило третье:
Правило третье: мы помним правило Первое, согласно которому, изменения на стенд деплоятся только из своей мастер‑ветки. Стало быть, если на каком‑то конкретном стенде были найдены причины для изменения кода, то и разработка в рамках этих изменений ведётся из мастер‑ветки этого стенда.
Иными словами, если на IFT был найден баг, для его устранения мы образуем ветку из test . После исправления бага, ветка вливается обратно в test , происходит деплой на IFT, баг тестируется повторно, и если всё ок, ветка test вливается в develop .

При таком подходе, сохраняется следующая взаимосвязь: ветка test содержит в себе версию кода, актуальную по текущий релиз; ветка develop содержит в себе версию кода, актуальную по текущий релиз + изменения в рамках следующего релиза.
Окончание этапа отладки и заход на новый спринт.
Единственное назначение стенда IFT — это тестирование приложения «как бы на проде». Окружение и наполнение IFT‑стенда не должно кардинально отличаться от прода и как можно чаще обогащаться оттуда обезличенными данными. Если у Вас не так — будете тестировать на проде, что уж.
После окончания этапа отладки изменения из ветки test переносятся в ветку master и деплоятся на PROD. Версионность стендов возвращается к состоянию активной разработки (в следующей итерации), начинается новый спринт, с его победами и поражениями.

Как будет выглядеть полный релизный цикл?
В соответствии с вышеописанным, полный релизный цикл будет выглядеть так:

Вместо заключения: что делать, если баг найден на проде?
Мы приложили все усилия для того, чтобы это не произошло. Но мы точно знаем, что это произойдёт. Что делать?
В первую очередь, попробуйте воспроизвести баг на стенде IFT. Если вы держите IFT в состоянии, актуальном PROD, он в очень высокой долей вероятности воспроизведётся. Если воспроизвёлся, переходим к разделу «Этап отладки: что, если был найден баг на стенде IFT?«, правилу 3 и далее вниз по посту: исправили на IFT, влились из IFT в develop , влились в master , зарелизились на PROD повторно.
Если баг не воспроизвёлся на IFT, значит, это проблема чисто PROD и применяем правило 3 уже к нему: бранчуемся из master , исправляем проблему, далее переливаем изменения из master → test → develop .
- Программирование
- Системы управления версиями
- Управление разработкой
Home

Мало что сравнится по степени кошмарности для тестировщика с осознанием того, что на проде найден баг. В этой статьей я приведу набор шагов, помогающих тестировщику разобраться с багами на проде и предотвратить их появление в будущем.
Шаг 1: сохраняйте спокойствие.
Так как именно мы – те самые люди, которые тестировали продукт и передавали его в релиз, легко удариться в панику при обнаружении бага на проде. Мы тут же спрашиваем себя «Как же это могло произойти?», и можем начать агонизировать в поиске ответов. Однако это непродуктивно – нашей приоритетной задачей должно быть убеждение, что баг исправлен. Если мы не сохраним спокойствие, то можем недоисследовать проблему или недотестировать исправление.
Шаг 2: воспроизведите проблему.
Если о проблеме сообщил заказчик или другой человек внутри компании, то первое, что нужно сделать – это посмотреть, можете ли вы ее воспроизвести. Возможно, это просто пользовательская ошибка или проблема конфигурации. Однако не делайте поспешных выводов! Удостоверьтесь, что вы тщательно прошли по всем описанным пользователем шагам, и при возможности убедитесь, что пользуетесь тем же ПО и железом, что и он. К примеру, используйте тот же тип мобильного устройства и тот же билд, или же ту же ОС и тот же браузер. Если воспроизвести проблему не удается, запросите дополнительную информацию и продолжайте пробовать. Посмотрите статью «как воспроизвести баг», если вам нужны подсказки.
Шаг 3: узнайте как можно больше.
Теперь, когда проблема воспроизведена, соберите максимум информации о ней. Воспроизводится ли она на тест-стенде? Проявляется ли в предыдущем билде? Если это так, на каком билде она не проявляется? Проявляется ли она на какой-то определенной ОС/в определенном браузере? Необходимы ли для ее воспроизведения определенные настройки конфигурации? Чем больше информации вы соберете, тем быстрее разработчики смогут исправить баг.
Шаг 4: выявите первопричину.
На этом этапе ваш разработчик уже занят разбирательством, что вызывает проблему. Когда он(а) это выяснит, удостоверьтесь, что вам сообщили, что это была за проблема, и убедитесь, что вы все поняли. Это поможет вам разобраться, как тестировать исправление, а также определить, какие регрессионные тесты тут понадобятся.
Шаг 5: решите, когда исправлять проблему
Когда баг найден на проде, очень хочется исправить его немедленно, однако это не всегда наилучшее решение. Уверена, вы сталкивались с ситуациями, когда исправление бага порождало новые проблемы. Вам понадобится время на то, чтобы протестировать все области, на которые мог повлиять фикс.
Решая, когда исправлять баг, подумайте вот о чем:
- Сколько пользователей им затронуто?
- Насколько он серьезен?
Возможно, проблема затрагивает меньше процента пользователей. Однако если это серьезный баг, и они не могут пользоваться приложением, то, возможно, его стоит исправить прямо сейчас.
Другой случай: баг затрагивает всех пользователей, но он настолько незначителен, что не влияет на их опыт использования приложения. К примеру, плохо выровненная кнопка может выглядеть не очень, но не мешает пользоваться программой. В этом случае лучше подождать до следующего планового релиза и внести исправления в нем.
Шаг 6: протестируйте исправление.
Тестируя исправление бага, не проверяйте его единоразово. Убедитесь, что вы проверили все используемые браузеры и устройства, а затем прогоните регресс-тесты в областях, которые могло затронуть изменение кода. Если вы следовали шагу 4, то знаете, какие области тестировать. И, наконец, проведите быстрый смоук-тест, чтобы удостовериться, что важная функциональность не пострадала.
Шаг 7: проанализируйте, что пошло не так.
Крайне заманчиво вздохнуть с облегчением и перейти к чему-то другому, когда баг прода исправлен. Однако тут очень важно найти время на то, чтобы понять, как именно он попал на прод. Это не относится к поиску виноватых и козлов отпущения – все совершают ошибки, неважно, разработчики ли, тестировщики, продакт-оунеры, менеджеры или релизные инженеры. Суть в том, чтобы понять, что произошло, чтобы не допустить такой проблемы впредь.
Возможно, ваши разработчики внесли изменения в код и забыли сказать вам об этом, и поэтому эти изменения не тестировались. Возможно, вы тестировали фичу, но забыли проверить все браузеры, и в одном браузере возникла проблема. Может быть, ваш продакт-оунер забыл рассказать вам о важном сценарии использования, и этот сценарий не попал в тест-план.
Неважно, в чем было дело – убедитесь, что вы внятно донесли причину до вашей команды. Н бойтесь взять ответственность за свою роль в возникновении проблемы. См. статью про семь оправданий тестировщиков, чтобы узнать больше.
Шаг 8: проведите мозговой штурм для выявления способов предотвращения схожих проблем.
Теперь, когда вы знаете, что пошло не так, надо задуматься, как избежать таких проблем в будущем. Обсудите это с командой и попробуйте выработать соответствующие стратегии.
Возможно, нужно изменить процесс: к примеру, продакт-оунер должен давать отмашку по каждой новой фиче, чтобы удостовериться, что ничего не упущено. Или нужно убеждаться, что разработчики сообщают вам о любом рефакторинге кода, чтобы вы провели регресс-тест, даже если они убеждены, что ничего в целом не менялось.
Может быть, нужно изменить стратегию: если два тестировщика работают над каждой фичей, то куда менее вероятно, что что-то будет упущено. Или же можно создавать тест-планы, автоматически включающие шаг тестирования в каждом браузере.
Возможно, нужно менять и процесс, истратегию! Какой бы подход вы ни выбрали, вы теперь сможете рассматривать баг на проде как удачу, потому что он сделал вас мудрее, а вашу команду – сильнее.
Bug prod что это

События
- Тестирование
- Основы
- Откуда берутся ошибки в ПО?
- Почему тестирование необходимо?
- Мифы о тестировании
- Психология тестирования
- Когда начинать и заканчивать тестирование?
- Фундаментальный процесс тестирования
- Принципы тестирования
- Верификация и валидация
- QA, QC и тестирование
- Кто занимается тестированием?
- Цели тестирования
- Что такое тестирование программного обеспечения?
- Роль тестирования в процессе разработки ПО
- Сколько стоят дефекты?
- Качество программного обеспечения (ISO/IEC 25010)
- Матрица соответствия требований (Requirements Traceability Matrix)
- Матрица покрытия и Матрица отслеживания
- Тестирование веб-проектов: основные этапы и советы.
- Мобильное и веб-приложение. В чем разница?
- Тест дизайн (Test Design)
- Agile
- Словарь тестировщика
- 75 популярных вопросов на собеседовании QA (+ примеры и ответы)
- HTML и CSS для тестировщиков
- Итеративная модель (Iterative model)
- Спиральная модель (Spiral model)
- V-модель (V-model)
- Каскадная модель (Waterfall model)
- Стадии цикла разработки ПО
- Жизненный цикл ПО
- Приемочное тестирование
- Системное тестирование
- Интеграционное тестирование
- Модульное тестирование
- White/Black/Grey Box-тестирование
- Статическое и динамическое тестирование
- Ручное и автоматизированное
- Тестирование документации
- Интернационализация и локализация
- Стресс тестирование
- Тестирование установки
- Конфигурационное тестирование
- Тестирование на отказ и восстановление
- Юзабилити
- Тестирование сборки
- Тестирование взаимодействия
- Тестирование безопасности
- Дымное тестирование
- Регрессионное тестирование
- Тестирование производительности
- Функциональное тестирование
- Нефункциональное тестирование
- Спецификация требований
- Test Plan
- Checklists для тестировщика
- Test Case
- Bug report
- Жизненный цикл дефектов
- Классификация дефектов
- Тестирование мобильных приложений
- Протоколы
- Протокол TCP/IP или как работает Интернет (для новичков)
- HTTP-запрос (HTTP request)
- Автоматизация
- Автоматизированное тестирование
- Теория по X-Path локаторам
- Как написать X-Path локатор.
- Использование tagname
- Вложенность родительского элемента.
- Как выбрать инструмент автоматизации?
- Базы данных в тестировании
- Зачем нужен SQL для тестирования?
- Общее
- Интерфейс в коде ПО
- Парадигмы программирования «ООП»
- Процесс коммуникации с помощью API
- Рефакторинг Кода
- Фреймворк в программировании
- Микросервисная архитектура ПО.
- Монолитная архитектура ПО.
- Что такое API?
- Что такое JSON
- Что не так с Android?
- Android Studio 2.0
- RxJava
- Основы
- Внутренний мир компьютера: что там внутри
Когда Вы начинаете работать в ИТ-сфере, часто сталкиваетесь с ситуацией непонимания некоторых слов и терминов. Чтобы облегчить ваш «вход» в ИТ, сделать его более понятным и комфортным, тренинг-центр QALight подготовил базовый перечень терминов, которые чаще всего используют тестировщики.
Автоматизированное тестирование (Automated testing) — процесс тестирования программного обеспечения, используя специальные программы.
Альфа-тестирование (Alpha testing) — имитация реальной работы с системой разработчиками, или же реальная работа потенциальных пользователей на ранней стадии разработки продукта.
Анализ предельных значений (Boundary Value Analysis) — техника проверки поведения продукта на предельных значениях (поля, записи, файлы и т.п.).
Андерлокинг — снижение частоты работы оборудования.
Анекспектед бехевиер (Unexpected behavior) – неожиданное поведение.
Апдейт (Update) – обновление.
Аутпут (Output) – исходные данные, результат.
Аутсорсинг (Outsourcing) – полная или частичная передача задач, процессов для выполнения посторонним лицам – юридическим или физическими.
Баг (bug) — дефект; несоответствие фактического результата выполнения программы ожидаемому результату.
Багзилла (bugzilla) – система отслеживания ошибок и ведения задач.
Баг-репорт (bug report) — технический документ, содержащий в себе полное описание бага, включающий информацию, как о самом баге (краткое описание, серьезность, приоритет), так и об условиях возникновения этого бага.
Багтрекер (bug tracker) – система отслеживания ошибок; компьютерная программа, помогающая команде разработчиков и тестировщиков отслеживать и контролировать ошибки и пожелания пользователей, а также следить за устранением ошибок и исполнением пожеланий.
Баундри вельюс (boundary values) – предельные значения.
Бекенд (back-end) – программная часть, которую не видят пользователи сайта, связана с написанием серверных скриптов.
Бек лог (backlog) – документ, в котором по уровню важности собран перечень требований к функциональности, которые должны быть реализованы.
Бета-тестирование (Beta testing) — интенсивное использование почти готовой версии продукта с целью выявить и исправить как можно больше дефектов перед окончательным выпуском для пользователей.
Билд (build в ИТ) – объединение отдельных модулей программы в одну работающую систему.
Валидация (validation) — это процесс оценки конечного продукта, необходимо проверить, соответствует ли программное обеспечение ожиданиям и требованиям клиента. Это динамичный механизм проверки и тестирования фактического продукта.
Верификация (verification) — это статическая практика проверки документов, дизайна, архитектуры, кода и тому подобное.
Гайдлайн (guideline) – инструкция. В ИТ-сфере – руководство от одних разработчиков для других для правильной трактовки определенной работы.
Генерить (generate) – создавать, предлагать.
Голд плейтинг (gold plating) – лишен пользы.
Дебагинг (debugging) — процесс, во время которого находят и исправляют ошибки.
Девелопер (developer) – специалист, занимающийся разработкой программного обеспечения.
Деплоймент (deployment) – процесс развертывания программного продукта в готовности к использованию. Задеплоить – перенос программы в следующую среду, например в тестовую систему или на другой сервер.
Десктоп (desktop) – персональный компьютер.
Дефект репорта (defect report) – отчет об ошибке.
Джира (JIRA) – система отслеживания ошибок, предназначенная для общения с пользователями и управления проектами.
Домен – набор символов, которые определяют сайт в поисковой сети и идентифицируют для пользователей.
Дропдаун (dropdown) – выпадающий список.
Дымное тестирования (Smoke test) — проверка выполнения функций продуктом после сборки нового или исправленного текущего кода.
Эквивалентное разделение (equivalence partitioning) — техника, при которой функционал разделяется на группы значений, эквивалентных по воздействию на систему.
Жизненный цикл программного обеспечения — это условная схема, включающая в себя отдельные этапы, которые являются стадиями развития процесса создания ПО.
Обеспечение качества (Quality Assurance, QA) — совокупность мероприятий, охватывающих все технологические этапы разработки, выпуска и использования ПО;
Сбой (failure) — несоответствие фактического результата работы системы или компонента тому результату, который ожидали.
Инсталляционное тестирование (Installation Testing) — процесс тестирования стадии установки.
Интродакшн (introduction) – знакомство с продуктом, командой и т.п.; представление кого-то, чего-нибудь.
Итеративная модель (iterative model) — предполагает разбиение проекта на части (этапы, итерации) и прохождение этапов жизненного цикла на каждом из них. Каждый этап является законченным сам по себе, совокупность этапов формирует конечный результат.
Каскадная модель (waterfall model) — последовательный метод разработки программного обеспечения, названный так из-за диаграммы, похожей на водопад.
Кликабельность (clickable) – возможность щелкнуть курсором мышки и перейти на ту или иную страницу.
Кодинг, кодирование – процесс написания кода.
Коммон сенс (common sense) – здравый смысл.
Конфигурационное тестирование (Configuration Testing) — проверка работы программного обеспечения при различных конфигурациях системы.
Кэш (cache) – временное хранилище для часто используемых файлов.
Лог (log) – файл со служебной и системной информацией о событиях в системе.
Манки джоб (monkey job, обезьянья работа) – простая, повторяющаяся или рутинная работа, не требующая больших затрат.
Мануальный (manual) – ручной.
Матрица соответствия требованиям (Traceability matrix) — двухмерная таблица, где определено соответствие функциональных требований и подготовленных тестовых сценариев.
Нагрузочное тестирование (Load testing) — определение работоспособности, стабильности, потребления ресурсов и других атрибутов качества приложения в условиях различных сценариев использования и нагрузок.
Натянуть ПО – использование готового программного обеспечения.
Нефункциональное тестирование (Non-functional testing) — тестирование свойств, которые не отвечают функциональности системы.
Оверлокинг (Overclocking) — увеличение частоты компонента компьютера с целью увеличения скорости его работы.
Операционное тестирования (Release Testing) — процесс проверки системы на удовлетворение всех потребностей пользователя и соответствия бизнес-требованиям.
Ошибка (error) — действие, после которого возникает неправильный результат.
Пофиксить (to fix) – исправить ошибку.
Предсказание ошибки (Error Guessing) — возможность тестировщика, благодаря своим знаниям и пониманию системы, предсказать, при каких условиях система может выдать ошибку.
Повторное тестирование (retesting) — тестирование, которое проводиться чтобы убедиться в решении ранее найденных ошибок.
Пост-релиз (Post-release to manufacturing) — издание продукта с несколькими отличиями от RTM; является самой первой стадией разработки нового продукта.
Пре-альфа (Pre-alpha) — самая первая стадия разработки — от самого начала до стадии альфа.
Приемное тестирование (acceptance testing) — тестирование, направленное на проверку продукта с точки зрения конечного пользователя.
Причина/следствие (Cause/Effect) — введение определенных комбинаций для получения определенного результата.
Приоритет багов (Priority) — атрибут, указывающий на скорость устранения бага, очередность выполнения задачи.
- Trivial — косметическая малозаметная проблема.
- Minor — очевидная, незначительная проблема.
- Major — большая проблема.
- Critical — проблема, нарушает работу ключевых функций ПО.
- Blocker — проблема, нарушает функционирование ПО.
Продакт стайл гайд (product style guide) – документ, в котором указано правильное использование графических и функциональных элементов платформы для разработки программного обеспечения под эту платформу.
Продакшн (production) – выпуск готового продукта.
Профит (profit) – польза, доход.
Регрессионное тестирование (regression testing) — проверка на наличие ошибок после выполнения определенных действий или внесения изменений в систему.
Релиз (Release to manufacturing) — выпуск продукта.
Релиз-кандидат (Release candidate) — предварительный релиз, который имеет потенциал стать окончательным, если не будут выявлены значительные нарушения.
Репозиторий (repository) – хранилище; специальный сервер, на котором хранится доступное для загрузки ПО.
Ручное тестирование (manual testing) — процесс ручной проверки программного обеспечения на наличие ошибок.
Санитарное тестирование (Sanity testing) — тестирование определенной функции с целью проверки, соответствует ли ее работа заявленным требованиям.
Сервер (server) – это компьютер, устройство или программа, предназначенная для управления сетевыми ресурсами.
Серьезность (Severity) — степень влияния дефекта на работоспособность системы.
Система отслеживания ошибок (bug tracking system) — система контроля багов.
Скрам (scrum) – подход управления проектами для гибкой разработки программного обеспечения.
Скрипт (script) – сценарий; программа, содержащая последовательность действий, предназначенных для автоматического выполнения определенной задачи.
Скриншот (screen shot) – копия изображения экрана, хранящаяся и распространяемая в графическом формате.
Спецификация (specification) — детальное описание того, как должно работать ПО.
Спиральная модель (spiral model) — все этапы жизненного цикла при спиральной модели идут витками, на каждом из которых происходят проектирование, кодирование, дизайн, тестирование и тому подобное.
Сравнительное тестирование (Back-To-Back Testing) — анализ плюсов и минусов продукта в сравнении с его ближайшими конкурентами.
Стадии разработки ПО — определенные этапы, которые проходит команда разработчиков от старта до того, как продукт станет доступен широкой аудитории.
Стейт транзишн тейбл (state transition table) – таблица переходов системы из одного состояния в другое.
Стрессовое тестирование — проверка работоспособности продукта во время и после работы с гораздо большей нагрузкой, чем было запланировано.
Таблица принятия решений (Decision table) — удобный инструмент, цель которого – упорядочить бизнес-требования к продукту.
Тест-дизайн (Test design) — один из этапов тестирования, во время которого проектируются возможные тест-кейсы (случаи).
Тест-кейс (Test Case) — это тестовый артефакт, суть которого заключается в выполнении некоторого количества действий и/или условий, необходимых для проверки определенной функциональности программной системы, разрабатываемой системы.
Тест-план (Test Plan) — документ, в котором указан весь объем работ по тестированию, а также оценки рисков с вариантами их решения.
Тестирование (Testing) — процесс проверки соответствия заявленных к продукту требований и реально реализованной функциональности, происходит путем наблюдения за его работой в искусственно созданных ситуациях и на ограниченном наборе тестов, выбранных определенным образом.
Тестирование безопасности (Security testing) — проверка, насколько система готова противостоять злонамеренным попыткам получить доступ к данным.
Тестирование взаимодействия (Interoperability Testing) — функциональное тестирование, цель которого проверить, как может приложение взаимодействовать с одними или несколькими элементами/системами.
Тестирование восстановления (recovery testing) — проверка способности продукта восстанавливать свои функции после незапланированной ситуации.
Тестирование доступности (Accessibility Testing) — используется для выявления возможности использования системы и удобства для людей с ограниченными возможностями.
Тестирование сборки (Build Verification Test) — предварительная проверка разрабатываемого программного продукта перед запуском полномасштабного тестирования по всем параметрам, проведенного QA-командой.
Тестирование интернационализации/локализации — проверка готовности продукта к использованию его на разных языках, учитывая национальные и культурные особенности.
Тестирование пользовательского интерфейса (UI Testing) — тестирование, основная цель которого выявить, удобный ли определенный элемент для использования.
Тестирование масштабирования (Scalability Test) — изучение возможности увеличивать показатели производительности по мере увеличения количества доступных приложением ресурсов.
Тестирование сборки (Build Verification Test) — тестирование, цель которого выявить, соответствуют ли требования выпущенной версии критериям качества для начала тестирования.
Тестирование совместимости (Compatibility testing) — проверка возможности продукта работать в заданных условиях.
Фрилансер (freelancer) – специалист, который сам ищет проекты, компании для работы, часто работает в удаленном формате.
Фронтенд (front-end) – интерфейс взаимодействия между пользователем и бэкендом.
Функциональное тестирование (Functional Testing) — процесс проверки с целью определения функциональных возможностей приложения.
Чек-лист (Check list) — документ, в котором определен перечень того, что должно быть протестированным.
Эджайл (agile) – метод управления проектами, направленный на предоставление конечного результата на каждом этапе работы с возможным изменением конечного результата.
ISTQB (International Software Testing Qualification Board) – Международная коллегия тестирования программного обеспечения.
QC (Quality Control) — проверка соблюдения требований, предусмотренных в нормативно-технической документации.
Software architecture document – документ, описывающий архитектуру программы, подходы и технологии, которые будут использоваться для ее разработки.
UI (User Interface) — инструмент, помогающий наладить взаимодействие «пользователь-приложение».
UX (user experience) — ощущения, возникающие у пользователя при взаимодействии с продуктом.
V-модель (v-model) — модель, на каждом этапе которой осуществляется контроль текущего процесса для того, чтобы убедиться в возможности перехода на следующий уровень.
XML – стандарт построения языков разметки иерархически структурированных данных для обмена между разными приложениями, в частности, через Интернет.
Z-конфликт (Z-fighting) — наложение текстур друг на друга.
Мобильное тестирование — тестирование мобильных приложений.
Консольное тестирования — тестирование приложений для консолей.
Веб-тестирование — тестирование браузерных приложений.
ТИПЫ ТЕСТИРОВАНИЯ ПО ЗАПУСКУ КОДА НА ВЫПОЛНЕНИЕ
Статическое (Static testing) — тип тестирования, который предполагает, что программный код во время тестирования не будет выполняться.
Динамическое (Dynamic testing) — тип тестирования, который предусматривает запуск программного кода.
ТИПЫ ТЕСТИРОВАНИЯ ПО ДОСТУПУ К КОДУ
Black box — тестировщик не знает, как устроена тестируемая система.
White box — тестировщик знает все детали тестируемой системы.
Grey box — тестировщик знает только о некоторых особенностях тестируемой системы.
ТИПЫ ТЕСТИРОВАНИЯ ПО ПРИНЦИПУ РАБОТЫ С ПРИЛОЖЕНИЯМИ
Положительное тестирования (Positive testing) — процесс тестирования программного обеспечения на то, как оно должно работать.
Негативное тестирование (Negative testing) — процесс тестирования программного обеспечения на то, как оно не должно работать.
ТИПЫ ТЕСТИРОВАНИЯ ПО УРОВНЮ ДЕТАЛИЗАЦИИ ПРИЛОЖЕНИЯ
Интеграционное тестирование — тестирование взаимодействия нескольких элементов системы.
Системное тестирование — тестирование всего приложения от начала до конца.
Модульное тестирование — тестирование определенных компонентов системы.
- Выбери курс для обучения
- Тестирование
- Базовый модуль тестирования
- Тестирование ПО
- Тестирование WEB-сервисов
- Тестирование мобильных приложений
- Тестирование нагрузки с JMeter
- Расширенный модуль автоматизации тестирования
- Автоматизация тестирования с Selenium WebDriver (Python)
- Автоматизация тестирования с Selenium WebDriver (Java)
- Автоматизация тестирования с Selenium WebDriver (C#)
- Автоматизация тестирования на JavaScript
- Java для автоматизаторов
- Fullstack Web Developer
- Java
- Python
- JavaScript
- HTML5 И CSS3
- Полный стек разработки на фреймворке Laravel
- Разработка CMS на основе PHP
- Git для автоматизаторов
- Практический SQL
- Основы Unix и сети
- WEB-серверы и WEB-сервисы
- Создание проекта автоматизации и написания UI тестов
- Составление комбинированных тестов UI и API. Написание BDD тестов
- IT Project Manager
- HR-менеджер в ИТ-компании
- Как правильно составить резюме и пройти собеседование
- Подготовка к сертификации ISTQB Foundation Level на основе Syllabus Version 2018
- Тестирование
- Базовый модуль тестирования
IT-термины: как разговаривать с программистами


Сколько раз с вами случалось, что в ответ на предложение «скипануть» встречу или «заэстимейтить» план задач собеседник удивленно приподнимал бровь? Такое происходит довольно часто, когда IT-специалисты или выпускники курсов программирования используют свой сленг при общении с теми, кто работает в других сферах.
Давайте пройдемся по основным терминам, которые, на самом деле, очень легко запомнить, если провести аналогию с оригиналом их происхождения — английским.
Scrum—способ ведения разработки, при котором сохраняется итеративность (четкие списки задач на короткие отрезки времени) и равномерное распределение ответственности между всеми участниками команды.
Спринт — это не только бег спортсменов на короткую дистанцию, известный в широких кругах как sprint. В разработке это — небольшой промежуток времени (1-4 недели), укомплектованный задачами на команду.
Релиз — своеобразный «выход в свет», release. Выпуск целого приложения или его части (например, багфикс) в продакшн-версии для конечного пользователя или в промежуточной для внутреннего тестирования. В идеале каждый спринт должен заканчиваться релизом.
Продакшн —конечная версия приложения или сайта, доступная рядовым пользователям (production). Проще говоря, то, что мы можем найти в Google, скачать с Google Play или Apple Store.
Стейджинг —промежуточная, отладочная версия сайта, выкладка для тестировщиков (staging). Обычным юзерам недоступна.
Баг —нет, это не жук в стандартном понимании слова bug. С багами чаще всего сталкиваются тестировщики. Баг — это ошибка в коде, которая ломает приложение в тех или иных местах. Приносит так же мало счастья, как и реальный жук.
Багфикс — работа над ошибками и их исправление (bug fix).
Деплой — перенос разработчиками свежего кода на нужный сервер (промежуточный или продакшен), deploy. Очень часто в конце спринта можно услышать тревожное «Задеплоил ли ты свои изменения?».
Билд —сборка мобильного приложения, несущая в себе последние обновления (build). Самые свежие результаты «строительства».
Таска —задача (task). Например, добавить поле на странице регистрации.
Эстимейт — оценка времени или усилий, необходимых для выполнения задачи (estimate). Если используем время, то проставляем количество часов, необходимых для закрытия задачи. Если усилия — стори поинты.
Стори поинты —баллы, неотъемлемая часть скрама. Индивидуальная оценка задачи разработчиком. Чем больше баллов, тем сложнее. При использовании story points основная задача менеджера – понять, сколько всего баллов команда может выполнить в течение спринта.
Линк — проще, чем кажется. Ссылка, link.
Бекенд —представьте себе машину и загляните под капот. Backend — это и есть «то, что под капотом» сайта или приложения, то, что скрывается за красивой картинкой, серверная часть. Сюда относится поиск информации, отправка форм и сообщений, загрузка информации и т. д.
Фронтенд — та самая красивая картинка, «лицо» вашего автомобиля. Цвета, отступы, стрелочки, всякие кнопки и другая визуальная часть, доступная глазу пользователя.
Ну, и скипануть означает пропустить, skip something.
А если хотите узнать все термины с первых рук, вам нужны курсы IT онлайн 😉
Примечание: а если вы хотите, чтобы и ваш ребенок был в IT, детские курсы программирования будут полезны!
- Тестирование
- Основы