# Системное тестирование (System Testing)

Системное тестирование означает тестирование всей системы в целом, оно выполняется после интеграционного тестирования, чтобы проверить, работает ли вся система целиком должным образом. В основном это тестирование типа «черный ящик», которое оценивает работу системы с точки зрения пользователя с помощью документа спецификации и оно не требует каких-либо внутренних знаний о системе, таких как дизайн или структура кода.

**Основное внимание уделяется следующему**:

* Внешние интерфейсы;
* Многопрограммность и сложный функционал;
* Безопасность;
* Восстановление;
* Производительность;
* Гладкое (smooth) взаимодействие оператора и пользователя с системой;
* Возможность установки;
* Документация;
* Удобство использование;
* Нагрузка / стресс;

**Зачем нужно системное тестирование**?

* Очень важно завершить полный цикл тестирования, и ST - это этап, на котором это делается;
* ST выполняется в среде, аналогичной production environment, и, следовательно, заинтересованные стороны могут получить хорошее представление о реакции пользователя;
* Это помогает свести к минимуму устранение неполадок после развертывания и количество обращений в службу поддержки;
* На этом этапе STLC тестируются архитектура приложения и бизнес-требования. Это тестирование очень важно, и оно играет важную роль в предоставлении клиенту качественного продукта;

**Критерии начала системного тестирования**:

* Система должна соответствовать критериям окончания интеграционного тестирования, то есть все test cases должны быть выполнены, и не должно быть открытых критических ошибок или ошибок с приоритетом P1, P2;
* System Test Plan должен быть одобрен и подписан;
* Test cases/scenarios/scripts должны быть готовы к выполнению;
* Все нефункциональные требования должны быть доступны, и для них должны быть созданы test cases;
* Среда тестирования должна быть готова;

**Критерии окончания системного тестирования**:

* Все test cases должны быть выполнены;
* В открытом состоянии не должно быть критических, приоритетных или связанных с безопасностью ошибок;
* Если какие-либо ошибки со средним или низким приоритетом находятся в открытом состоянии, они должны быть исправлены с согласия клиента;
* Отчет о выходе (Exit Report) должен быть отправлен;

**Чем отличается системное тестирование от сквозного** (E2E - end-to-end testing)?

Сквозное тестирование - это методология тестирования программного обеспечения для тестирования flow приложения от начала до конца. Целью сквозного тестирования является моделирование реального пользовательского сценария и проверка тестируемой системы и ее компонентов на предмет интеграции и целостности данных.

Системное тестирование - этап предпоследний этап STLC и уровень тестирования, а E2E - подход к тестам. Обычно сквозные тесты выполняют после системного тестирования и перед приемочным, а также после внесения изменений (smoke и regression). E2E выполняется от начала до конца в реальных сценариях, таких как взаимодействие приложения с оборудованием, сетью, базой данных и другими приложениями. Основная причина проведения этого тестирования - определение различных зависимостей приложения, а также обеспечение передачи точной информации между различными компонентами системы.

Источники:

* [What Is System Testing - A Ultimate Beginner’s Guide](https://www.softwaretestinghelp.com/system-testing/)
* [What Is End To End Testing: E2E Testing Framework With Examples](https://www.softwaretestinghelp.com/what-is-end-to-end-testing/#Why_Do_We_Perform_E2E_Testing)

Доп. материал:

* [ГОСТ Р 56920-2016/ISO/IEC/IEEE 29119-1:2013](https://docs.cntd.ru/document/1200134996) “D.10 Подпроцесс тестирования системы”
* [What is End-to-End (E2E) Testing?](https://www.softwaretestingmaterial.com/end-to-end-testing/)
* [Лекция 7: Разновидности тестирования: системное и регрессионное тестирование](https://intuit.ru/studies/courses/48/48/lecture/1436)
