# Тестирование ПО

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

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

Однако, что конкретно подразумевается под тестированием, какие существуют виды и надо ли вам постигать эту непростую науку? 

## Виды тестирования

- [x] [Виды тестирования ПО](https://qaevolution.ru/wp-content/uploads/2016/01/bd6dcbbb7d7c44a485b65ae29b4c0ae4.png)
- [x] [GivenWhenThen](https://martinfowler.com/bliki/GivenWhenThen.html)

На этой фотографии мы можем увидеть все виды тестирования ПО, разделенные по категориям:

![AboutTestsTypes](/pictures/ComputerScience/AboutTestsTypes.jpg?raw=true)

Остановимся на наиболее популярных: 

* Функциональное тестирование - когда тестируется приложение целиком.

* Нефункциональное тестирование - проверка на соответствие нефункциональным требованиям: удобство, маштабируемость, производительность, безопасность, надежность.

* Модульное / юнит-тестирование – проверка корректной работы одной функции, одной задачи. Этот вид тестирования могут выполнять сами разработчики.

* Интеграционное (Integration) – проверка взаимодействия между несколькими единицами ПО. 

* Системное - конечная обкатка вашего приложения. Как правило выполняется в ручном режиме «научного тыка».

* Нагрузочные (Load) – тестирование максимального количества запросов, которые вы тянете. Миллион запросов по 1 мегабайту.

* Стресс – какой самый большой или самый сложный реквест. 1 файл на максильное количество мегабайт

* Альфа тестирование: 

    * Регресс - оценка работоспособности уже проверенного кода после внедрения в него изменений. 
    Актуально для динамических систем, где появление новых данных может реально повлиять на работоспособность всего кода. 
    Такой тест нужен нам чтобы посмотреть не сломал ли ты другие важные фичи.

    * [Смок (smoke)](https://qaevolution.ru/testirovanie-po/vidy-testirovaniya-po/smoke-testing/) (встречаются названия дымное тестирование, intake test , build verification test) - маленький тест похожий на интеграционный чтобы быстро прогнать перед выкладкой в продакшн

---

[2.4.3 Web Patterns Theme Folder](../2.4.3%20WebAppPatterns.md) | [Back To iTWiki Contents](https://github.com/eldaroid/iTWiki) | [2.4.4.2 Driven Development Theme](./2.4.4.2%20DrivenDevelopment.md)
