Найти в Дзене
Азбука тестировщика

Регрессионное тестирование

Жизненный цикл ПО Регрессионное тестирование - вид тестирования, направленный на проверку изменений в ПО для подтверждения того факта, что существующая функциональность работает как и прежде. Цель РТ - обнаружить регресс в ПО любыми способами при каких-либо изменениях. Типы РТ РТ бывает полное и выборочное Полное: Итерация 1 Итерация 2 - Тест-комплект 1 Итерация 3 - тест-комплект 2 Итерация N - тест-комплект N-1 Охватывает всё, но требует всё больше времени с каждой итерацией. Выборочное РТ Выбираются точечные моменты. Нужно уметь выбирать, что тестировать. Понимать логику ПО. Очень экономит время, но можно пропустить баги. Как выбрать тесты для РТ Жизненный цикл теста Новый - пригодный для повторного использования - устаревший Когда нужно добавлять новый регрессионный тест: Когда можно удалять регрессионный тест: Нужно ли что-то менять в рег. тестах? Не забывать про эффект пестицида Оптимизация рег. тестов Приоритезация регрессионных тестов Сначала проверять новые задачи, далее
Оглавление

Жизненный цикл ПО

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

Цель РТ - обнаружить регресс в ПО любыми способами при каких-либо изменениях.

Типы РТ

  • Регрессия ошибок (bug regression) - попытка доказать, что исправленная ошибка на самом деле не исправлена
  • Регрессия старых ошибок - попытка доказать, что изменение кода или данных сломало исправление старых ошибок
  • Регрессия побочного эффекта - попытка доказать, что изменение сломало другие части ПО.

РТ бывает полное и выборочное

Полное:

Итерация 1

Итерация 2 - Тест-комплект 1

Итерация 3 - тест-комплект 2

Итерация N - тест-комплект N-1

Охватывает всё, но требует всё больше времени с каждой итерацией.

Выборочное РТ

Выбираются точечные моменты. Нужно уметь выбирать, что тестировать. Понимать логику ПО. Очень экономит время, но можно пропустить баги.

Как выбрать тесты для РТ

  • С анализом кода
  • С анализом бизнес-модели

Жизненный цикл теста

Новый - пригодный для повторного использования - устаревший

Когда нужно добавлять новый регрессионный тест:

  • Появление нового функционала
  • Когда была исправлена ошибка в ПО
  • Когда нужно улучшить тестовое покрытие
  • Когда мы можем позволить себе добавить новый неповторяющийся тест

Когда можно удалять регрессионный тест:

  • Когда есть дублирование
  • Когда тест не улучшает покрытие
  • Когда он ни разу не поймал баг
  • Когда тест обнаруживает такие же баги, как и другие тесты

Нужно ли что-то менять в рег. тестах?

Не забывать про эффект пестицида

Оптимизация рег. тестов

  • Похожие или мелкие тесты можно склеить
  • крупные тесты можно сократить или разбить на куски

Приоритезация регрессионных тестов

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

Приоритет. На основе чего ставить?

  • интуиция
  • знания о тестовом покрытии ПО

Когда проводится регрессионное тестирование

  • внесение изменений в код в разных разделах ПО
  • есть риск побочных эффектов
  • интуиция

Не обязательно, если:

  • изменения только косметические
  • изменения внесены в изолированный раздел ПО