Найти в Дзене
Блог тестировщика

Еще немного про жизненный цикл и методологии разработки

Прошлая часть: Жизненный цикл ПО и роль тестировщика в нем

И снова здравствуйте.

В прошлой части мы разобрали «кто такие тестировщики» и «этап тестирования в жизненном цикле ПО». Теперь мы разберем роль тестировщика в еще одной популярной методологии разработки ПО – Agile (гибкая методология). Почему мы это сделаем? Да по причине того, что она более ярко описывает фактические обязанности тестировщика и показывает, как инженер по тестированию задействован в каждом из этапов ЖЦ. «Что делается?» проще понять если понимать «Зачем это делается?» Итак, определение Agile или гибкой методологии из интернета:

Agile - обобщающий термин для целого ряда подходов и практик, основанных на ценностях «Манифеста гибкой разработки программного обеспечения» и 12 принципах, лежащих в его основе.
Выделяют 4 основные ценности Agile:
· Приоритет людей и взаимодействия перед инструментами и процессами.
· Работающий продукт важнее доскональной документации.
· Взаимодействие с заказчиком полезнее точного соблюдения условий договора.
· Готовность к переменам эффективнее слепого следования изначальному плану.

Снова «ничего не понятно, но очень интересно». По запросу Agile вы найдете в поисковиках что-то вроде этого:

Если простыми словами – ребята, работающие по гибким методологиям, якобы «За всё хорошее, против всего плохого». И с людьми они взаимодействовать хотят (но инструментами всё еще пользуются и частенько долго их выбирают), и хотят качественное ПО больше, чем писать документацию (как будто в каскадной методологии всем так нравится печатать документацию), и к переменам они готовы…

Почему же эту методологию применяют:

  • Бизнес хочет прибыль. Желательно, чтобы она была «еще вчера». Если продукт выпустить на рынок в виде минимальной жизнеспособной версии (Minimal Viable Product или MVP) – вы можете обогнать конкурентов, даже сделав функциональность не в полном объеме.
  • Не каждый продукт должен быть досконально протестирован. Если у одного из ста тысяч пользователей в специфической ситуации зависнет приложение по доставке продуктов из магазина – никто не умрёт (воспринимайте слово «умрёт» буквально).
  • Работа в коротких временных циклах и над меньшими по объему задачами - удобнее. Аналитик лучше помнит свои требования двухнедельной давности, чем трёхмесячной. Разработчик лучше помнит код, который писал 2 недели назад, а не месяц.

В чем отличие от каскадной методологии

Если в каскадной методологии каждый этап шел строго за предыдущим, то в Scrum (методика управления проектами, основанная на принципах Agile) всё немного иначе. Проще будет изобразить ту же картинку на шкале времени:

-2

Большой отрезок времени разбивается на маленькие, в рамках которых итеративно будет происходить разработка нового функционала и доработка старого. Эти отрезки времени называют «спринты». Обычно они длятся в районе 2-4 недель и, по итогу спринта, получается конкретная версия программного обеспечения – релиз.

Как видно с картинки – теперь вся команда в рамках спринта взаимодействует как единое целое. На примере спринта №2 рассмотрим кто чем занят из команды разработки (на примере основных активностей):

Системный аналитик:

  • Проводит аналитику и формирует требования по задачам, которые на него запланировали в начале спринта №2, чтобы разработчик их взял в работу в спринте №3.
  • Консультирует разработчика и уточняет требования по задачам, которые разработчик не успел завершить в спринте №1.
  • Консультирует разработчика и уточняет требования по задачам, по которым он пишет код в спринте №2.
  • Консультирует тестировщика и уточняет требования по задачам, которые тестировщик не успел протестировать в спринте №1.
  • Консультирует тестировщика и уточняет требования по задачам, которые тестировщик начал тестировать в спринте №2.
  • Анализирует совместно с бизнесом обратную связь от пользователей по результатам доработок из спринта №1.

Разработчик:

  • Пишет код по задачам, которые на него запланировали в начале спринта №2.
  • Консультирует тестировщика по нюансам тестирования задач, которые тестировщик не успел протестировать в спринте №1.
  • Консультирует тестировщика по нюансам тестирования задач, которые тестируются в спринте №2.
  • Исправляет дефекты по задачам, которые тестировщик не успел протестировать в спринте №1.
  • Исправляет дефекты по задачам, которые были переданы в тестирование в спринте №2.
  • Иногда экстренно готовит хот-фиксы по результатам внедрения релиза из спринта №1.

Тестировщик:

  • Уточняет требования у системного аналитика по задачам, которые не успел протестировать в спринте №1.
  • Консультируется с разработчиком по нюансам тестирования задач, которые тестировщик не успел протестировать в спринте №1.
  • Тестирует задачи, которые не успел протестировать из спринта №1, попутно заводя дефекты.
  • Уточняет требования у системного аналитика по задачам, которые на него запланировали в тестирование в спринте №2.
  • Консультируется с разработчиком по нюансам тестирования задач, которые на него запланировали в тестирование в спринте №2.
  • Тестирует задачи, которые на него запланировали в тестирование в спринте №2, попутно заводя дефекты.
  • Перепроверяет исправленные дефекты.
  • Участвует в локализации проблем, возникающих в результате внедрение релиза из спринта №1.

Инженер по сопровождению:

  • Участвует / проводит приемо-сдаточные испытания версии релиза (ПСИ или может встретиться аббревиатура UAT - User Acceptance Testing), который получился в результате работы команды в спринте №1.
  • Устанавливает релиз в промышленную эксплуатацию.
  • Участвует в разборе проблем, которые возникают при установке / эксплуатации релиза спринта №1.
  • Занимается мониторингом работы релиза спринта №1 в промышленной эксплуатации.

Для понимания «чем будет заниматься команда в спринте №3» - в каждом из пунктов, перечисленных ранее, прибавьте единицу ко всем номерам спринтов.

«Что нам даёт эта картина?» спросите вы. Во-первых, мы видим какие коммуникации происходят между членами команды разработки. Во-вторых, мы видим, что работа тестировщика не ограничивается лишь тем, что проводится тестирование программного обеспечения. Тестировщик еще прикладывает руку к тестированию требований, работе с дефектами, локализации проблем в промышленной эксплуатации и целой куче коммуникаций с коллегами по команде. На самом деле активностей гораздо больше, но для общего понимания нам пока что хватит.

Внимательный читатель задастся вопросом «Если Scrum так хорош и дает столько плюсов – почему же его не используют везде». Это хороший вопрос, и я вскользь уже отвечал на него. Например, вы не можете сделать MVP программного обеспечения для какого-то медицинского оборудования или ПО для управления самолетом, потому что результатом такого MVP могут быть крайне страшные последствия. И для определенного ПО лучше подойдет разработка по каскадной методологии, т.к. в требованиях будут учтены все возможные нюансы перед этапом написания кода. Но есть программное обеспечение, где такие жесткие согласования не обязательны и ПО осознанно могут установить в промышленную эксплуатацию, зная о некритичных проблемах в нём, ведь эти проблемы будут исправлены уже в следующем спринте.

Следующая часть: Требования и тестирование требований

Поддержать или поблагодарить можете:

Лайком;

Комментарием;

Подпиской на канал;

#Блог_тестировщика #QA #Тестирование_ПО #Тестирование_с_нуля