Куда ведут все эти пути? Путеводитель по базовым методологиям

7228d01c34cb4cd39b643e0b938871f6.png


Сегодня хотелось бы рассмотреть основной список методологий применимых в тестировании и самый простым языком описать для чего каждая годна.

Agile:

Разбуди любого тестировщика ночью и спроси , что такое Agile и он тебе ответит , что это гибкая методология разработки программного обеспечения. И, казалось бы, в чем он не прав, но что за методология и почему она гибкая, для многих так и остается загадкой. Давайте разбираться, что там по Agile: Если по правильному, то это действительно гибкая методология разработки программного обеспечения, которая ставит акцент на коллаборацию, быстрые итерации и способность адаптироваться к изменениям в проекте. Agile делит процесс на короткие циклы разработки, называемые спринтами, что позволяет команде быстро реагировать на изменения и предоставлять клиенту более ценные результаты, поэтому она и гибкая, поскольку дает возможность команде быстро адаптироваться под все происходящее вокруг.

Но чтобы это стало более понятно давайте разберем на простых вещах, что в этом Agile вообще есть:

User Stories: В данном случае идет речь о наличии юзер сторей и их покрытия. Если User Story не включает в себя тест-кейсы, то это как книга без страниц. Тестирование начинается сразу после создания User Story, иначе мы просто будем сидеть безвылазно в багах.

Инкрементальность и итерационность: Здесь работа выполняется в короткие временные промежутки так называемые «итерации» и каждый итерация приносит новый «инкремент». Наша задача тут — проверить каждый кусочек продукта, как только он готов. И иногда состав данного продукта не особо понятен, но это нормально.

Регрессионное тестирование: Проверить всё и вся, что ваши новые приколюхи не поломали старый костяк. Это как проверка вашего старого дома после ремонта. Нужно убедиться, что новые обои никак не повлияли на какую-нибудь старую проводку. Да, кажется, что это невозможно, но проверить стоит, мало ли.

Коммуникация и сотрудничество: Тут в идеале конечно должно быть очень классное и сильное взаимодействие между участниками команды. Иногда конечно команда впадает в споры, но в конечном итоге все продолжают активно работать вместе, взаимодействуя друг с другом.

Прототипирование и тестирование: Цель начать тестировать пораньше, а для этого нужно сосредоточиться на создании прототипов, чтобы можно было проводить тестирование на ранних этапах разработки.

Автоматизация тестов: Автоматизация — то, что ускоряет наш процесс, помогает нам избежать рутины и сэкономить время на чашку чая.

Сам Agile можно подразделись на:

      Scrum

Это конкретный фреймворк в рамках Agile, который определяет роли (Product Owner, Scrum Master, Development Team), события (Sprint Planning, Daily Scrum, Sprint Review, Sprint Retrospective) и артефакты (Product Backlog, Sprint Backlog, Increment). Scrum помогает команде эффективно управлять работой и обеспечивать поставку ценных функций.

Если кратко, то скрам это про:

Спринты: Некая оговоренная дистанция для выполнения задач. Можно представить это как гонку на короткую дистанцию, где цель успеть добежать в обозначенное время и желательно как можно быстрее, а после достижения цели перейти к заслуженному отдыху.

Наличие Scrum мастера: Скрам-мастер — это наш личный тренер\коуч  называйте как хотите смысл один, он нужен, чтобы всегда подсказывать, как бежать быстрее и не спотыкаться.

Владелец продукта:  Так сказать лидер , принимающий стратегические решения , плотно взаимодействующий с командой разработки , чтобы продукт соответствовал потребностям рынка и клиентов. Иногда его идеи кажутся нам странными, но мы все равно их выполняем.

Стендапы: Ежедневные встречи с командой, где мы рассказываем друг другу, докуда успели добежать и что мешает нам двигаться дальше. Главное не забывать, что вы не отчитываетесь, а просто держите в курсе команду относительно процессов, которыми вы занимаетесь.

     Kanban:


Тут все представляет собой визуальное управление рабочим процессом. Задачи отображаются на доске Kanban и перемещаются между столбцами, представляющими разные этапы работы. Это помогает увидеть поток работы и управлять им для оптимизации процесса.

Если кратко про канбан, это:


Доска Канбан: для любителей наглядности и визуализации. Доской Канбан именуется табличка с результатами и планами, где проще отслеживать ход работы. Когда мы заканчиваем задачу, мы перемещаем ее в столбец «Готово» и радуемся.

Лимит работы в процессе (WIP): Это как диета. Мы не можем есть бесконечно, так же и задачи не могут перемещаться бесконечно. В общем-то определяем оптимальное количество, в данном случае задач, чтобы не перетруждаться и быть более эффективным.

Пулл процесс: Иначе можно сказать «Тянущий подход», когда мы сами решаем, когда брать следующую задачу. Как правило, по наличию свободного времени.


DevOps

DevOps (Development and Operations): Это практика, объединяющая разработку и операцию, чтобы ускорить развертывание и улучшить качество программного обеспечения. DevOps включает автоматизацию, непрерывную интеграцию и непрерывное развертывание (CI/CD), а также акцент на коммуникации и сотрудничестве между разработчиками и операторами.

Если выделять основные моменты в данной методологии, то:

Культура DevOps: Иначе говоря, культура сотрудничества, некая вечеринка где разработчики, тестировщики и операционщики веселятся вместе. В общем-то тут про выстраивание плотной коммуникации между отделами.

Непрерывная Интеграция и Непрерывная Доставка (CI/CD): Тут можно даже написать краткий слоган: «Если ваш код не появляется в проде, когда вы утверждаете, что должен, давайте его исправим.»  Как уже написала выше, DevOps про то, чтобы создать непрерывные циклы интеграции и развертывания, уменьшая время от написания кода до его попадания в прод. Поэтому этот пункт можно ассоциировать с какой-нибудь супер быстрой доставкой, но в данном случае не еды, а кода, чтобы все было свеженькое и без задержек.

Тестирование в проде: Благодаря непрерывному тестированию тестирование проходит в продакшене дабы обеспечить быстрее более высокую стабильность продукту.

Мониторинг и логирование:  Тут супер важно уделить вниманию этим двум вещам , чтобы быстро отреагировать и решить возникающие проблемы.

Автоматизация: Ну тут думаю, что и без описания понятно,  что в данном случае автоматизация погоняет автоматизацию , чтобы конечно же максимально всё ускорить.  

Тестирование в условиях нагрузки и безопасности: Безопасность внедряем на всех этапах разработки , а не только на последних.

Тестирование как Код (TaaS):  Можно ещё сказать  «Инфраструктура как код», где собственно инфраструктурные ресурсы управляются  с использованием кода.

Waterfall

Эта методология предполагает последовательное выполнение этапов разработки, начиная с определения требований и заканчивая тестированием и внедрением. Каждый этап зависит от завершения предыдущего. Этот метод часто используется в проектах, где требования к продукту остаются стабильными.

Пройдемся по тем самым этапам:


Анализ и планирование: Основной этап, где мы анализируем требования, именно здесь формируются все дальнейшие шаги.

Проектирование: Здесь разрабатывается архитектура системы и детальный план реализации.

Разработка: Собираем все, что до этого сделали в единый пазл и создаем код. Так сказать, воплощает проект в жизнь.

Тестирование: Тут важно провести тщательное тестирование, чтобы убедиться, что ничего не развалится, что все работает как надо, а каждый аспект проекта соответствует заявленным требованиям.

Внедрение: По сути фаза завершения, когда мы реализуем систему в реальной среде, соответственно  продукт может потрогать конечный пользователь .

Обслуживание: Как правило этот этап будет тянутся долго, поскольку нужно обеспечить полную поддержку и обновление системы после внедрения.


Lean:

Это методология, также известная как Lean Software Development, вдохновлена концепциями Lean Manufacturing. Основная идея минимизировать отходы и максимизировать ценность. Lean подразумевает эффективное управление процессами, устранение избыточной работы и обеспечение потока ценных функций.

Ключевым моментам:

Устранение избыточности: Оптимизируем разработку таким образом , чтобы предотвратить избыточность или просто убираем все, что не приносит никакой пользы.

Постоянная оптимизация: Важно всегда работать над собой и здесь как раз про постоянные улучшения .

Ориентация на клиента: Процессы строятся вокруг потребностей конечного пользователя , собственно удаляем все, что не радует нашего клиента.

Гибкость: Подстраиваемся под реалии и новые рыночные требования.

Пулл процесс: Тут как и в канбан , тянущийся процесс. Новый этап начинается только тогда, когда соответствующий этап завершен.

Поток работы: Все построено так, чтобы процессы были настроенные на постоянное движение без замедлений.

А когда начинать тестировать то?

Agile:

По ситуации.
Scrum: В Scrum тестирование интегрируется во все спринты. В начале каждого спринта тестировщики могут участвовать в планировании, определяя задачи для тестирования.
Kanban: В Kanban тестирование является непрерывным процессом. Задачи по тестированию добавляются в столбцы на доске Kanban по мере поступления.


Waterfall

В конце.
В методологии Waterfall тестирование обычно происходит после завершения всех предыдущих этапов, таких как анализ, проектирование и разработка. Этот подход называется «тестирование на последнем этапе». Тестировщики проводят комплексное тестирование всего продукта, после чего предоставляют отчеты о найденных ошибках.


DevOps

Всегда.
В DevOps тестирование интегрировано в непрерывный цикл разработки и развертывания. Это означает, что тестирование проводится на каждом этапе, начиная с разработки и заканчивая автоматизированным тестированием в процессе непрерывной интеграции и развертывания (CI/CD). Тестировщики могут также сотрудничать с разработчиками для создания тестовых сценариев и автоматизации тестов.

Lean:

Пораньше.
В Lean Software Development тестирование ориентировано на минимизацию избыточности и оптимизацию процессов. Тут тестировщики стремятся к идентификации и устранению дефектов на ранних этапах разработки, чтобы избежать потерь времени и ресурсов на исправление проблем позже.

Конечно можно углубиться в каждую методологию еще глубже, но мне хотелось отразить общее настроение каждой из перечисленных методологий. Каждая из этих методологий имеет свой собственный подход к тестированию, и конечно, есть другие, но общая цель этих и других заключается в обеспечении качества продукта и удовлетворения потребностей пользователей, а выбор методологии зависит от специфики проекта и предпочтений команды разработки.

© Habrahabr.ru