Тестирование в жизненном цикле и Agile
Тестирование — не финальная стадия, а нить, проходящая через весь процесс разработки.
В современной разработке тестирование сопровождает весь жизненный цикл: от обсуждения требований до эксплуатации, а не появляется отдельной фазой в самом конце.
Старая модель и её проблема
В классической «водопадной» схеме тестирование шло отдельной поздней фазой: сначала всё спроектировали, написали, и лишь потом тестировали. Проблема — дефекты находились в самом конце, когда (вспомним урок о стоимости ошибки) исправлять их дороже всего. Если требование было ошибочным, это вскрывалось спустя месяцы.
QA в Agile: с самого начала
В Agile работа идёт короткими итерациями (спринтами), и тестирование встроено в каждую. QA-инженер участвует уже на этапе обсуждения задачи:
- Уточняет требования. Задаёт «а что если ввести пусто? а отрицательное?» — ловит дыры в постановке до написания кода.
- Формулирует критерии приёмки. Заранее ясно, что значит «готово».
- Тестирует внутри спринта. Фичу проверяют сразу, а не копят к релизу.
Часто критерии приёмки записывают в формате примеров поведения — это сближает требование и тест. Идея: «спецификация на примерах» одновременно служит и описанием, и проверкой.
# Критерий приёмки как исполняемая проверка поведения
def can_checkout(cart_total, min_order):
"""Оформление доступно, если сумма не ниже минимальной."""
return cart_total >= min_order
# Критерии приёмки из обсуждения задачи, сразу как тесты:
assert can_checkout(1000, 500) is True # выше минимума — можно
assert can_checkout(500, 500) is True # ровно минимум — можно
assert can_checkout(300, 500) is False # ниже минимума — нельзя
print("Критерии приёмки выполнены — фича соответствует договорённости")
Вывод:
Критерии приёмки выполнены — фича соответствует договорённости
«Definition of Done» включает тесты
В зрелых командах задача не считается выполненной, пока не покрыта тестами и не прошла проверку. Качество — не отдельный этап, а часть определения «готово». Это и есть встраивание тестирования в процесс.
Итог
- Тестирование сопровождает весь жизненный цикл, а не финальную фазу.
- В Agile QA подключается с обсуждения требований и тестирует внутри спринта.
- Критерии приёмки = договорённость о поведении, выраженная как проверки.