# Системное тестирование (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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vladislaveremeev.gitbook.io/qa_bible/vidy-metody-urovni-testirovaniya/sistemnoe-testirovanie-system-testing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
