#2 – Жизненный цикл разработки ПО (SDLC) и роль тестирования
Видеоурок
Что такое SDLC?
Сперва поговорим о жизненном цикле любого приложения. Эти знания необходимы для того, чтобы структурировать понимание того, как проходит разработка проекта и на каких этапах от нас, как от тестировщиков, будут что-либо требовать.
Итак, жизненный цикл разработки программного обеспечения, или Software Development Life Cycle (SDLC), — это структурированный процесс, охватывающий все этапы создания программного продукта, начиная с первоначальной идеи и заканчивая поддержкой готового продукта. SDLC используется для обеспечения высокого качества продукта, минимизации ошибок и стабильности разработки.

Этот процесс делится на несколько основных этапов. Рассмотрим их по порядку, чтобы понять, какую роль играет тестировщик на каждом из них.
1. Инициация проекта
Любой проект, будь то игра или сайт, начинается с этапа инициации. На этом этапе определяется основная идея проекта. Это может быть новая бизнес-инициатива или модернизация существующего программного продукта. Важно понимать, что тестировщики на этом этапе могут быть не сильно вовлечены, однако их мнение может понадобиться для оценки первоначальных рисков и определения общих требований к качеству продукта.
Роль тестировщика на этом этапе незначительна, так как мало что требует тестирования. Однако тестировщик может участвовать в обсуждениях с заказчиком или командой разработчиков, чтобы понять требования к продукту и его конечную цель.
2. Анализ и сбор требований
Это один из важнейших этапов, на котором собираются все требования к системе. Аналитики и заказчики описывают, что должен делать продукт, какие функции он должен поддерживать и какие технические требования к нему предъявляются. Также создается документация, с которой будет работать команда.
Роль тестировщика на этом этапе возрастает. Тестировщик должен участвовать в анализе требований, так как на этом этапе формируются основные критерии для тестирования. Тестировщик может определить, что именно следует проверить в проекте, и уже начать составлять основу для тест-кейсов.
3. Проектирование системы
После сбора всех требований команда архитекторов и разработчиков проектирует структуру системы. Этот этап включает проектирование пользовательского интерфейса, архитектуры базы данных, серверов, API и других компонентов системы.
Тестировщики могут помочь в оценке проектных решений с точки зрения тестирования и качества. Например, на ранних этапах можно определять сценарии для тестирования производительности или безопасности, чтобы избежать проблем в будущем.
4. Реализация (кодирование)
Это ключевой этап разработки, на котором происходит написание кода. Разработчики реализуют как функциональные, так и нефункциональные требования, определенные на предыдущих этапах.
Во время написания кода тестировщики могут начать писать тест-кейсы и готовиться к этапу тестирования. Также на этом этапе может выполняться модульное (юнит) тестирование, обычно выполняемое самими разработчиками. Однако тестировщики могут предложить дополнительные сценарии для более глубокого тестирования.
Если кратко, модульное тестирование — это процесс, при котором тестируется конкретный модуль кода. Например, в приведенном ниже примере мы тестируем класс Calculator на языке Java, вызывая метод сложения и проверяя, совпадает ли результат с ожидаемым значением:
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class CalculatorTest {
@Test
public void testAddition() {
Calculator calc = new Calculator();
int result = calc.add(2, 3);
assertEquals(5, result);
}
}5. Тестирование
После написания кода наступает этап тестирования. Тестировщики проверяют функциональность системы, выявляют ошибки, оценивают соответствие системы требованиям и качество конечного продукта.
На этом этапе проводится интеграционное тестирование, которое проверяет, работает ли система в целом и соответствует ли она ожиданиям. Тестировщик проверяет, что новые изменения в коде не повредили уже существующую функциональность, и оценивает производительность системы.
Тестировщики составляют тест-кейсы, которые описывают шаги и ожидаемые результаты для каждой функциональности. Например:
- Открыть страницу входа.
- Ввести корректный логин и пароль.
- Нажать кнопку «Войти».
Ожидаемый результат: пользователь успешно авторизуется и попадает на домашнюю страницу.
6. Внедрение (развертывание)
После успешного тестирования продукт готов к развертыванию. Это может быть установка на тестовый сервер для дополнительного тестирования или финальное развертывание на рабочем сервере.
Тестировщики могут участвовать в проверке корректности развертывания системы, например, выполняя smoke-тестирование, чтобы убедиться, что система работает после установки.
7. Поддержка и сопровождение
После развертывания начинается эксплуатация и поддержка продукта. В процессе могут возникать новые ошибки, а также запросы на добавление новых функций или улучшений.
Тестировщики продолжают свою работу, выявляя баги и тестируя новые версии продукта, обеспечивая его стабильность на протяжении всего жизненного цикла.
Модели разработки
Существуют несколько стандартных моделей разработки программного обеспечения.
- Каскадная модель: это традиционный подход, в котором каждый этап выполняется последовательно, один за другим.
- Agile: гибкая методология разработки, разбитая на небольшие итерации — спринты. В конце каждого спринта команда предоставляет работающий продукт, а тестировщики участвуют в каждом этапе.
- DevOps: объединение процессов разработки и операций (CI/CD). В этом подходе тестировщики активно участвуют в процессе непрерывного тестирования, автоматизация которого является ключевым элементом.
Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Также стоит посмотреть