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

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

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

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

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

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

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

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

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

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

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