Типы и уровни тестов.

Разработка программного обеспечения - это написание кода или сбор требований клиентов, но этот процесс намного шире и требует больше времени. Один из элементов этой цепочки зависимостей - тесты.

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

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

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

Типы тестов

Я расскажу, какие типы тестов могут происходить при проверке кода. Основными критериями являются цель испытаний и то, что мы хотим протестировать.

Основные тесты работоспособны

Они определяют тесты, направленные на проверку функциональности, предлагаемой кодом. Проверка не анализирует, как работает приложение, а проверяет результаты, полученные путем ввода определенных значений на входе. Часто говорят о тестах черного ящика, потому что в основе лежит документация, а не способ (код), которым было написано программное обеспечение.

Структурные испытания - это еще один вид испытаний

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

Стоит добавить, что структурные тесты также являются статическими. К ним относятся, например, ревью кода, то есть проверка кода без его запуска (DRY).

Нефункциональные тесты - это группа тестов, которые не проверяют, что возвращает код или как производятся вычисления.

В этом случае проверяются компоненты и то, как работает система. Таким образом, вы можете проверить производительность системы с точки зрения нагрузки или надежности и протестировать безопасность системы. Есть много возможностей, но часто требуется, чтобы каждый тест имел свою среду, которая обеспечит надежную проверку. Очень часто тесты выполняются специальными людьми / группами, которые занимаются только одной областью тестирования (например, тестирование безопасности).

В конце типов тестов стоит упомянуть тесты, созданные в связи с изменениями системы. Проект все еще жив, и даже если он только на стадии обслуживания, новый код исправления может повлиять на существующие функции.

По этой причине проводятся повторные тесты, т. Е. Повторные тесты после устранения ошибки. Кроме того, вы также можете выполнить регрессионные тесты, чтобы убедиться в отсутствии ошибок в работающих модулях. Напоследок стоит упомянуть про дымовые тесты (дымовые тесты).

Это тесты, которые проверяют основные и наиболее важные части системы. Часто речь идет о быстрых тестах, которые проверяют, правильно ли работает центральное ядро ​​приложения.

Уровни тестирования

Еще одна разбивка тестов - когда и для кого они были созданы. Наконец, можно говорить об отдельных этапах проекта и разделении испытаний в каждой из таких фраз.

1. Модульное тестирование

Этот сборник охватывает изучение отдельных модулей, часто крошечных, даже отдельных классов или методов. Несмотря на то, что тестируется небольшой фрагмент системы, чаще всего он зависит от других внешних элементов. Для этого очень часто в модульных тестах используются заглушки (так называемые mock или stub), которые позволяют тестировать модуль, не беспокоясь о внешнем коде. Кроме того, в модульных тестах мы проводим аудит всех доступных путей в коде.

Примером может служить тест модуля размещения ставок на онлайн-аукционе. Наш код будет протестирован для листинга через API, но для тестирования будет использоваться плагин вместо реального API. Эта проблема может включать функциональные тесты (проверка определенного кода) и нефункциональные тесты (производительность модуля).

2. Интеграционные тесты идут на один уровень выше.

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

3. Системные тесты - это тесты для конечных пользователей.

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

4. Приемочные испытания

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

Ручные или автоматические тесты?

Тестирование может проводиться тестером вручную или по написанным скриптам (автоматически).

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

К тому же они дороже автоматических тестов. Часто они сводятся к ручному выбору соответствующих путей в тестируемых модулях или к использованию инструментов, которые будут проверять проверенный элемент (например, Postman может помочь в тестировании создаваемого API).

Автоматические тесты - это сценарии, заранее подготовленные тестировщиками или разработчиками.

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

Тестирование так же важно, как и программирование

Проверка кода - важный элемент при создании системы. Это процесс, который позволит вам создать продукт, который можно будет безопасно разрабатывать и поддерживать.

Отличное качество тестов позволит без проблем работать маленьким клиентам небольшого приложения из магазина Google, а также сэкономить миллиарды долларов на приложениях, управляющих сложным оборудованием (а о последствиях свидетельствует баг в ракете Ariane-5. программное обеспечение, вызвавшее его самоуничтожение или недавние проблемы Boeing 737 MAX)

Приведенная выше разбивка тестов - это этап, на котором нужно определить, когда и какие тесты следует проводить. Он также управляет тем, кто обслуживает тесты, не дублируя одни и те же процедуры и пути проверки.

Тестирование - важная часть создания нового кода и его поддержки. Интересно, что в будущем тестировщики могут стать последним оплотом человечества во всем процессе разработки программного обеспечения.

Больше контента на plainenglish.io