Куда ведут все эти пути? Путеводитель по базовым методологиям
Сегодня хотелось бы рассмотреть основной список методологий применимых в тестировании и самый простым языком описать для чего каждая годна.
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 тестирование ориентировано на минимизацию избыточности и оптимизацию процессов. Тут тестировщики стремятся к идентификации и устранению дефектов на ранних этапах разработки, чтобы избежать потерь времени и ресурсов на исправление проблем позже.
Конечно можно углубиться в каждую методологию еще глубже, но мне хотелось отразить общее настроение каждой из перечисленных методологий. Каждая из этих методологий имеет свой собственный подход к тестированию, и конечно, есть другие, но общая цель этих и других заключается в обеспечении качества продукта и удовлетворения потребностей пользователей, а выбор методологии зависит от специфики проекта и предпочтений команды разработки.