HR

Виды функционального и нефункционального тестирования

1383
читать 1 мин.
21.10.24

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

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

 

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


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

 

Какие есть уровни функционального тестирования?

 

Для функционального тестирования можно выделить четыре основных уровня (иногда их еще называют типы функционального тестирования):

  1. Модульное тестирование (Unit testing) – чаще всего проводится разработчиками. Это пример функционального тестирования, где тестируется определенный изолированный модуль приложения ограниченно в собственной среде. Никакие внешние факторы и взаимосвязь с другими модулями программного обеспечения не учитываются на данном уровне тестирования.
  2. Интеграционное тестирование (Integration testing) – уровень тестирования, при котором проверяется, как отдельные компоненты могут взаимодействовать между собой. Без учета внешних факторов.
  3. Системное тестирование (System testing) – уровень тестирования, где проверяется работоспособность программного обеспечения целиком. Можно сказать, что на этом уровне и проводится сравнение фактического поведения системы на соответствие с функциональными требованиями заказчика.
  4. Приемочное тестирование (Acceptance testing) – завершающий уровень тестирования, который обычно проводится заказчиком, либо же его представителем, а также может проводиться конечным пользователем. Проводится с целью получения оценки о готовности программного обеспечения и соответствии его с требованиями заказчика.

 

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

Это могут быть следующие виды тестирования:

  1. Регрессионное тестирование (Regression testing) – вид тестирования ПО, который проводится после внесения в программу изменений. Перед тестированием выбирается список тест-кейсов, по которым будет проводиться оценка ПО на предмет появления новых отклонений, а также на то, что предыдущий функционал работает исправно и без изменений.
  2. Дымовое тестирование (Smoke testing) – вид тестирования ПО, проверяющий базовую функциональность, т. е. проверка того, что основные функции программы работаю без отклонений и ошибок. Что позволяет переходить к тестированию более узких модулей и направлений работы ПО.
  3. Тестирование чистоты (Sanity testing) – так же, как и дымовое тестирование, проверяет основной ключевой функционал, но не так глубоко. В приоритете поверка именно ключевых областей, на которые могут повлиять изменения и новые функции вашего ПО.
  4. Адаптационное тестирование (Adaptation Testing) – проверка того, что программа успешно адаптируется к новым, возникшим в результате изменений, требованиям.
  5. Тестирование обновлений (Patch testing) – проводится в случае, если изменения предоставляется в виде патча или обновления. Проверяется его корректность и стабильность. Основной целью является проверка, что обновления устанавливаются без сбоев и не ведут к нежелательным побочным эффектам и багам.


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


Что касается функционального тестирования, то оно часто подлежит автоматизации. Применению определенных техник, подходов и инструментальных средств, которые позволяют частично исключить человеческое вмешательство в процесс тестирования. Это отдельный высокоструктурированный подход к тестированию, который может включать шаги по выбору инструментов автоматизации, разработке тест-кейсов для автоматизации, настройку окружений и интеграцию с CI/CD, дальнейшую поддержку с мониторингом результатов, а также получение и сбор отчетности для дальнейшего представления заказчику.

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

 


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

 

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

 

Основные виды нефункционального тестирования

  1. Тестирование производительности:

К тестированию производительности можно отнести следующие виды тестирования:

1) Нагрузочное тестирование (Load testing) – процесс проверки системы с минимальной нагрузкой, с последующим увеличением нагрузки до максимальной. Для выявления ее возможных пределов работы.

2) Стрессовое тестирование (Stress testing) – проверка системы при максимальных, а также превышающих максимально допустимую нагрузку системы. Проводится для мониторинга как система отреагирует на перегрузку, либо для выявления точек сбоя и отказа.

3) Тестирование восстанавливаемости (Recovery Testing) – проверка как система может восстанавливаться после состояния сбоя или отказа.

4) Тестирование стабильности (Stability Testing) – проверка системы в течение длительного промежутка времени под средней нагрузкой, направлено на обнаружение возможных недочетов, связанных с утечкой ресурсов, накоплением ошибок или иными факторами.

5) Тестирование скорости загрузки (Load time testing) – проверка насколько быстро система справляется с прогрузкой различных ресурсов (веб-страницы, базы данных, приложения).

6) Тестирование производительности ресурсов (Resource performance testing) – оценивает используемые ресурсы (оперативная память, сетевая пропускная способность, нагрузка на сетевой процессор и т. д.).

7) Тестирование масштабируемости (Scalability testing) – проверка системы на сохранение производительности и доступности ПО при условии увеличения нагрузки или объема обрабатываемых данных.

2. Тестирование пользовательского интерфейса (User Interface testing) – проверка пользовательского интерфейса на корректность отображения, графического дизайна, соблюдение функциональных особенностей, а также процесса взаимодействия конечного пользователя с программой.

3. Тестирование пользовательского опыта (UX testing) – проверка комфортности и понятности пользования продуктом для конечного пользователя.

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

5. Тестирование безопасности (Security testing) – процесс проверки ПО на наличие уязвимостей, рисков и угроз. Основной целью является предотвращение получения информации и конфиденциальных данных для злоумышленников. Этот вид тестирования может быть отнесен как к нефункциональному, так и к функциональному виду. Важным аспектом здесь выступает контекст, при котором вызывается данный тип тестирования.

6. Тестирование совместимости (Compatibility testing) – проверка насколько наше ПО способно корректно работать с различными операционными системами (Windows, MacOs, Linux, Android, iOS и т. д.), в различных браузерах (Chrome, Safari, Opera, Firefox и т. д.), а также на различных устройствах и в разных окружениях.

7. Конфигурационное тестирование (Configuration testing) – проверка работоспособности ПО на различных версиях ОС, версиях браузера, с различными разрешениями экрана, языковыми настройками, а также различными конфигурациями аппаратного обеспечения.

8. Тестирование локализации (Localization testing) – проверка корректности работы приложения в зависимости с языковыми и интернациональными особенностями (корректность перевода; адаптация интерфейса или простыми словами правильное отображение элементов на экране в зависимости от выбранного языка; форматирование дат, времени, единиц измерения, валют и т. д.).

9. Тестирование доступности (Accessibility testing) – проверка ПО на доступность для людей с ограниченными возможностями.


Заключение

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