Перейти к содержимому

Bug prod что это

  • автор:

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 .

Исправление багов IFT

При таком подходе, сохраняется следующая взаимосвязь: ветка 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-термины: как разговаривать с программистами

                        Сколько раз с вами случалось, что в ответ на предложение «скипануть» встречу или «заэстимейтить» план задач собеседник удивленно приподнимал бровь? Такое происходит довольно часто, когда 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, детские курсы программирования будут полезны!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *