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

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

Прошлая часть: Тестировщик ПО - с чего начать?

Всем привет. Мы продолжаем.

Прежде чем начинать разбираться с тем «Что же такое тестирование ПО?», сначала разберемся с разработкой программного обеспечения в целом. Это позволит понять «Кто принимает участие в разработке ПО?», «Что такое тестирование ПО?» и «Что делает инженер по тестированию?».

Для простоты давайте рассмотрим методологию разработки Waterfall(каскадная или водопадная методология). Водопадной ее называют не просто так – если ее визуализировать, то она и правда будет похожа на водопад.

Всё начинается с идеи. Кто-то придумал как можно заработать денег, если усовершенствовать существующее приложение. Будем называть этого кого-то «бизнес-заказчик». Бизнес-заказчик связывается с владельцем продукта и говорит – «Хочу, чтобы наше приложение по доставке еды позволяло заказывать еще и продукты из магазина. Это нам принесет прибыль N миллионов в год». Владелец продукта ставит задачу на команду разработки, в которой формулирует желания бизнеса.

Задачу берет в работу инженер системный аналитик. Он формулирует технические требования к будущей доработке.

Требования – это документ, в котором подробно описано, как должна работать конкретная часть системы, какие атрибуты и свойства эта часть системы должна содержать и какие функции она должна выполнять.

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

Разработчик пишет код, который должен работать в соответствии с требованиями. По завершению он передает задачу на тестирование.

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

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

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

Давайте теперь ответим на вопросы, которые мы обозначили в самом начале:

Вопрос:

Кто принимает участие в разработке ПО?

Ответ:

  • Бизнес-заказчики – представители от бизнеса, которые бизнес-языком формулируют идеи, необходимые к реализации.
  • Системные аналитики (System analyst) - инженеры, которые формируют требования к задаче и описывают как должна работать система.
  • Разработчики (Software Developer) - инженеры, которые пишут код, который должен выполнять определенные функции.
  • Тестировщики (Test Engineer) – инженеры, которые проверяют, что разрабатываемое ПО работает в соответствии с требованиями.
  • Инженеры по сопровождению (Support Engineer) – инженеры, которые отвечают за установку программного обеспечения в промышленную эксплуатацию и обеспечивают его бесперебойную работу.
  • Владелец продукта (Product Owner) – инженер, который является ответственным за управление продуктом и является связующим звеном между командой разработки (техническими специалистами) и бизнесом (нетехническими специалистами).
  • Дополнительно стоит отметить, что есть еще такие важные инженерные роли, как системные администраторы, DevOps инженеры, специалисты по кибербезопасности, Data Scientist'ы и так далее, но для поверхностного понимания процесса разработки мы не будем вдаваться в подробности по этим ролям (надеюсь, что нам это простят).

Вопрос:

Что такое тестирование ПО?

Ответ:
Тестирование ПО – процесс, направленный на убеждение в том, что разрабатываемое программное обеспечение соответствует предъявляемым к нему требованиям, здравому смыслу, а также что в продукте отсутствуют дефекты.

Вопрос:

Что делает инженер по тестированию?

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

Если говорить более детально – то инженер по тестированию придумывает определенный перечень проверок, которые необходимо провести, чтобы удостовериться в корректной работе ПО. Также тестировщик создает условия для возможности проведения проверок и на основании выполненных проверок принимает решение по поводу конкретной версии продукта – можно ли отдавать продукт конечным пользователям или его необходимо дорабатывать.

Небольшое примечание по поводу здравого смысла – если у вас в требованиях будет написано, что вы разрабатываете калькулятор, а результатом сложения «2+2» должно получаться «5», то это как раз таки и является противоречием здравому смыслу.

У вас может возникнуть резонный вопрос – «У разработчика есть требования, почему он сам не может перепроверить свой код? Зачем тогда нужен тестировщик?». Для ответа давайте вернемся во времена школы, на уроки русского языка, когда вы писали диктанты. У вас был учебник, где были правила орфографии и пунктуации, вы их читали, учили, знали. Вы писали диктант и, наверняка, ни разу не ставили перед собой цель специально допустить ошибку. Но совершали их. Здесь ситуация аналогичная. Разработчики хороши в написании кода (увы, не все). И они его тестируют, перед передачей тестировщику. Но за счет того, что тестировщик по отношению к коду является человеком со стороны – он непредвзято проводит перечень проверок, в рамках которых он выявляет несоответствия между ожидаемой работой системы и фактической.

Следующая часть: Еще немного про жизненный цикл и методологии разработки

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

Лайком;

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

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

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