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

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): Это практика, объединяющая разработку и IT операции , чтобы ускорить развертывание и улучшить качество программного обеспечения. 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 тестирование ориентировано на минимизацию избыточности и оптимизацию процессов. Тут тестировщики стремятся к идентификации и устранению дефектов на ранних этапах разработки, чтобы избежать потерь времени и ресурсов на исправление проблем позже.

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

Комментарии (5)


  1. itGuevara
    05.10.2023 06:52
    -1

    Плюсую исключительно за попытку классификации технологий \ методологий "улучшайзинга", однако, тема раскрыта "не очень". Кроме того, табличку бы сравнительную, картинку.

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

    Поправьте текст (неужели GPT так косячит?): «операцию» на «эксплуатацию».

    Пара ссылок в помощь.


    1. sorokinaa Автор
      05.10.2023 06:52

      Соглашусь, табличка для более лучшего понимания не помешала бы, нужно озадачиться)

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

      В данном случае использование термина "операция" обусловлено тем, чтобы показать объемность деятельности, связанной с управлением и обслуживанием программного обеспечения после его разработки. "Операции'" включают в себя различные задачи (мониторинг, обновления, безопасность, автоматизация). "Эксплуатация" тоже могла быть тут использована , но описывать именно общую эксплуатацию системы. В целом вопрос в обширности понятия, поскольку "Операции" также включают в себя и эксплуатацию. Но стоит отметить, что речь идет именно об IT операциях, поэтому подредактировать все-так есть что в данном моменте.


  1. asatost
    05.10.2023 06:52

    "Смешались в кучу кони, люди..."

    Так методологии в тестировании? Или место тестирования в моделях жизненного цикла информационных систем?

    Водопад, V, спираль, циклическая - это модели жизненного цикла информационной системы. В каждой из которых есть этап тестирования.

    DevOps - методология автоматизации этапов тестирования, развёртывания, эксплуатации и вывода из эксплуатации.

    Agile, Scrum, Lean - методологии этапов проектирования, разработки и тестирования.

    Kanban - инструмент решения задач по отслеживанию хода выполнения многостадийного процесса.

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


    1. sorokinaa Автор
      05.10.2023 06:52

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

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


  1. Vitaliy8589
    05.10.2023 06:52

    Работаем в Аспро.Agile по методологии Agile. Система отлично дополняет методологию, в ней легко работать и эффективно управлять коллективом.