# QA for SA

Тестированием продукта занимается специальный член IT команды - QA, как и говорилось в самом начале в разделе "Роли в IT продукте". Однако системный аналитик должен иметь представления об отдельно взятых методах тестирования, которые отмечены :warning:.

Все виды тестирование можно поделить на две основные части: функциональное и нефункциональное тестирование.

## Функциональное тестирование

Функциональное тестирование делится на подвиды:

* **Юнит-тестирование (Модульное тестирование)** — проводится для тестирования какого-либо одного логически выделенного и изолированного элемента (модуля) системы в коде. Проводится самими разработчиками, так как предполагает полный доступ к коду.
* :warning: **Тестирование API** — это процесс проверки корректности работы интерфейса между двумя приложениями или между приложением и внешней системой. Целью тестирования API является проверка соответствия функциональных возможностей, производительности, безопасности и надежности разработанного API.
* **Интеграционное тестирование или интеграционно-функциональное (ИФТ)** — тестирование, направленное на проверку корректности взаимодействия нескольких модулей, объединенных в единое целое.
* **Системное тестирование** — процесс тестирования системы, на котором проводится не только функциональное тестирование, но и оценка характеристик качества системы — ее устойчивости, надежности, безопасности и производительности.
* :warning: **Приёмочное тестирование** — проверяет соответствие системы потребностям, требованиям и бизнес-процессам пользователя. Системному аналитику зачастую приходиться иметь дело с данным типом тестирования.

## Нефункциональное тестирование

Нефункциональное тестирование делится на подвиды:

* :warning: **Нагрузочное тестирование** — для проверки производительности приложения под нагрузкой. Во время теста программа подвергается нагрузке: тестировщик, например, увеличивает число пользователей или операций и проверяет, как она будет работать.
* **Тестирование на проникновение** — для проверки уровня безопасности. Этот вид тестирования проводится, чтобы узнать, насколько безопасна программа или веб-сайт от потенциальных кибератак и несанкционированного доступа. Тестировщики, как настоящие хакеры, используют различные методы, чтобы проверить защиту программы и предотвратить возможные угрозы для безопасности данных.
* **Тестирование совместимости**. На этом этапе тестировщики проверяют работу программы на различных платформах, устройствах и браузерах, чтобы убедиться в их совместимости.
* **Стресс-тестирование** — этот вид тестирования помогает выявить уязвимости и слабые места в системе, которые могут проявиться при больших нагрузках.
* **Тестирование на отказоустойчивость** — помогает удостовериться, что приложение может успешно справляться с различными неполадками, такими как сбои серверов, потеря связи или другие неблагоприятные события, и продолжать функционировать нормально без значительных нарушений или потери данных.
* :warning: **Тестирование интерфейса пользователя** — подразумевает проверку удобства, доступности и правильности работы пользовательского интерфейса программы.
* **Тестирование на восстановление**. В ходе этого тестирования создаются различные сценарии отказов: отключение серверов или потеря связи, чтобы убедиться, что приложение может быстро и корректно восстановиться и продолжить работу без значительных проблем.

## Инструменты тестирования API

* Postman (полноценный API-клиент)
* Insomnia (полноценный API-клиент)
* Swagger (проверка endpoints[^1])

Про каждый из инструментов поговорим немного подробнее в следующих разделах.&#x20;

Источник: <https://ru.hexlet.io/blog/posts/vidy-testirovaniya>

[^1]: Endpoint (конечные точки) - это интерфейсы, через которые сервисы предоставляют свои функциональные возможности. Они представляют собой URL-адреса, к которым можно обратиться, чтобы получить данные или выполнить определенные действия.


---

# 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://docs.system-analyst-base.ru/hard-skills/qa-for-sa.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.
