В этой части рассмотрим, что необходимо знать про процессы разработки и жизненный цикл программного обеспечения (ПО). В принципе от каждого специалиста (и вакансия тестировщика не исключение), ожидают, что он быстро впишется в общий рабочий процесс. Для этого он конечно же должен представлять как этот процесс выглядит (хотя бы в теории), кто и как в нем участвует. Именно поэтому при приеме на работу большинство интервьюеров оценивают знание процессов промышленной разработки ПО, то, как кандидат видит в нем свое место. Подробно об этапах жизненного цикла ПО и методологиях разработки с точки зрения тестирования я напишу в отдельно, а ниже приведу основные моменты, которые потребуются для подготовки к собеседованию.
1. Нужно иметь представление через какие этапы проходит разработка ПО. Важно знать жизненный цикл программного продукта, чем характеризуется и для чего нужен каждый этап
В целом жизненный цикл каждого ПО, вне зависимости от подходов к его разработке, как правило включает одних и те же этапы:
- Планирование – формируется бизнес идея и определяются функциональные требования к ПО
- Проектирование - разрабатывается архитектурное решение системы и выполняется системный анализ, готовится техническое задание для разработки
- Разработка – непосредственно написание программного продукта
- Тестирование – выполняется проверка и отладка ПО в соответствии с требованиями. Сюда же относиться UAT - пользовательское тестирование и приемка ПО заказчиком
- Внедрение – предварительная тестовая установка релиза - DryRun, подготовка всех необходимых инструкций, настройка окружения и установка ПО
- Поддержка – консультирование пользователей, исправление ошибок, внедрение доработок
2. Помимо знания самих этапов разработки важно понимать кто выполняет работу на этих этапах, какие роли и задачи у участников процесса. В процессе разработки ПО все роли (по крайней мере в идеальном мире) тесно взаимодействуют между собой, поэтому важно знать кто за что отвечает как в рамках команды IT, так и за ее пределами. Отмечу основных участников процесса:
- Заказчики – формируют требования к продукту, верхнеуровнево описывают задачу на языке бизнес целей и выгоды
- Архитекторы – разрабатывают архитектурное решение продукта, схему интеграций с другими системами
- Аналитики – бизнес аналитики и системные аналитики. Бизнес аналитики отвечают за проработку бизнес задач и формирование основных функциональных и нефункциональных (если они критичны для заказчика) требований к ПО. Системные аналитики детализируют и переводят в техническую плоскость (на уровень таблиц, функций, классов, интерфейсов и т.п.) бизнес требования, формируют техническое задание для команды разработки
- Разработчики – разрабатывают и документируют код ПО, занимаются отладкой и исправлением ошибок, проверяют код при помощи Unit-тестирования, собирают билды и поставки, готовят инструкции по установке
- Тестировщики (QA специалисты) – отвечают за качество ПО, выполняя для этого анализ требований, разработку планов и сценариев тестирования, выполняя тестирование ПО и т.д.
- Команда поддержки – занимаются выводом ПО в эксплуатацию, установками и настройкой среды для пользователей
- Пользователи – являются конечными потребителями ПО, в рамках процесса разработки могут привлекаться к приемочному тестированию
3. Следующий вопрос, с кем из перечисленных выше ролей и как взаимодействует группа тестирования. Правильный ответ – со всеми. В идеале QA специалист включается в работу на всех этапах, взаимодействуя со всеми участниками процесса разработки ПО:
- С заказчиками и бизнес аналитиками для уточнения требований, валидации тестовых сценариев, выявления критичности функционала, проработки рисков
- С архитекторами и системными аналитиками для выяснения и уточнения технических требований и возможностей системы, подготовки и проверки тестовых сценариев, анализа найденных ошибок
- С командой разработчиков во время уточнения деталей реализации ПО, работы над дефектами и ошибками ПО
- С командами тестирования других систем\продуктов в рамках интеграционного тестирования
- С командой поддержки при подготовке к установки ПО в промышленную среду, во время обсуждения возможных рисков и ограничений
- С пользователями во время организации приемочного тестирования, в процессе исправления ошибок, обнаруженных в процессе эксплуатации ПО
4. Большим плюсом на собеседовании будет общее представление о моделях и методологиях разработки ПО. Достаточно знать основные модели и чем они отличаются, а также пару примеров методологий:
- Модели разработки ПО, это виды процесса разработки, порядок выполнения работ. Есть три основных модели:
- Каскадная – модель водопада, все этапы разработки ПО выполняются последовательно от планирования до внедрения и сопровождения, выстраиваясь в одну длинную цепочку
- Итеративная – весь процесс разбивается на множество коротких циклов разработки – итераций. Цель каждой итерации – создание фрагмента или версии ПО. Разработка ведется с непрерывным анализом результатов каждой итерации и корректировкой последующих.
- Спиральная – вариант итеративной модели, при котором в разработке выделяются уровни развития ПО – витки спирали, для получения контрольных точек и оценки рисков проекта
- Методологии разработки ПО, это подходы и практики, которые применяются для разработки. Существует множество методологий знать их все невозможно и это не нужно для прохождения собеседования. Но лучше всего иметь представление хотя бы о некоторых из них, например: Agile, RUP, MSF, TDD.
На сегодняшний момент очень многие компании внедряют и используют (или думают, что используют) в своей работе гибкие методологии разработки. Поэтому общее представление об Agile, даже теоретические, будут совсем не лишними.
Список требований к тестировщику ПО