Жизненный цикл программного обеспечения (ПО) – период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации.

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

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

Нужна тестовая среда?

Почему тестирование нужно проводить на отдельном сервере?

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

Разработчики должны иметь свое изолированное окружение (dev). Среда разработки может быть как локальная, так и общий сервер разработки.
Дальше необходимо иметь промежуточный test сервер, как для последнего прогона тестов, так и для интеграционных тестов. После этапа тестирования следует деплой в промышленную среду и последующая эксплуатация. Таким образом схема внедрения нового ПО не может пропускать тестовый сервере, иначе это влечет за собой такие проблемы на промышленной среде:

  • Ошибка в работе существующего ПО
  • Повышенная нагрузка на сервер, в следствии чего замедление работы ПО
  • Полный отказ в работе сервера

Схема корректного внедрения ПО, выглядит следующим образом: разработка в среде DEV, тестирование в среде TEST, после успешного прохождения тестирование внедрение на промышленную среду PROD.

сервер для разработки и тестирования

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