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

В зависимости от целей делятся на:

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

Функциональные виды тестирования рассматривают внешнее поведение системы. Функциональные тесты базируются на функциях и особенностях, а также взаимодействии с другими системами, и могут быть представлены на всех уровнях тестирования: компонентном или модульном (Component/Unit testing), интеграционном (Integration testing), системном (System testing) . Самыми распространенными видами функциональных тестов являются:

  • функциональное тестирование (Functional testing)
  • тестирование безопасности (Security and Access Control Testing)
  • тестирование взаимодействия (Interoperability Testing)
Как сократить ручное тестирование и можно ли без него обойтись | DOU
 

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

Этот вид тестирования занимает 90% времени отведённого на тестирование. Функциональное тестирование предполагает проверку функциональных требований: логики и бизнес-правил приложения или системы. Полноценное системное/функциональное тестирование является самым трудоёмким процессом и может занимать до 80% всего бюджета проекта по тестированию. Тестирование функциональности может проводиться в двух аспектах:

  1. Требования
  2. Бизнес-процессы
 

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

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

 

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

Нефункциональное тестирование описывает тесты, необходимые для определения характеристик программного обеспечения, которые могут быть измерены различными величинами. Это тестирование того, «Как» система работает. Основными видами нефункциональных тестов являются:

  • Все виды тестирования производительности:

          — нагрузочное тестирование (Performance and Load Testing)

          — стрессовое тестирование (Stress Testing)

          — тестирование стабильности или надежности (Stability / Reliability Testing)

          — объемное тестирование (Volume Testing)

  • Тестирование установки (Installation testing)
  • Тестирование удобства пользования (Usability Testing)
  • Тестирование на отказ и восстановление (Failover and Recovery Testing)
  • Конфигурационное тестирование (Configuration Testing)
 

 3. Виды тестирования связанные с изменениями

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

  • Дымовое тестирование (Smoke Testing)
  • Регрессионное тестирование (Regression Testing)
  • Тестирование сборки (Build Verification Test)
  • Санитарное тестирование или проверка согласованности/исправности (Sanity

Testing)

  По знанию внутренностей системы (доступности кода):


По объекту тестирования:

 1. Функциональное тестирование (functional testing). Проверка функций и характеристик разрабатываемого ПО на основе проектной документации;

 2. Тестирование производительности (performance testing). Проверка работоспособности системы под нагрузкой. Может служить для проверки и подтверждения других атрибутов качества системы, таких как масштабируемость, надёжность и потребление ресурсов. Выделяются следующие подвиды:

  • нагрузочное тестирование (load testing)
  • стресс-тестирование (stress testing)
  • тестирование стабильности (stability testing)

   3. Юзабилити-тестирование (usability testing). Цель данного вида тестирования заключается в определении степени удобства и практичности пользовательского интерфейса;

   4. Тестирование безопасности (security testing). Проверка надежности системы от возможных рисков и угроз (потеря, конфиденциальность, целостность и доступность данных);

   5. Тестирование графического интерфейса пользователя (GUI);

 6. Тестирование локализации (localization testing). Корректность работы отдельных компонентов системы (форматы дат, единицы измерения, не меняется часовой пояс при переезде и т.д.);

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

  8. Тестирование совместимости (compatibility testing). Проверка возможности приложения взаимодействовать с различными программными продуктами, операционными системами и окружением.

 

По степени автоматизации:


По времени проведения тестирования:

Альфа-тестирование. Внутреннее тестирование (имитация реальной работы с системой штатными разработчиками).

Бета-тестирование. Внешнее пробное использование с привлечением отобранных пользователей.

Дымовое тестирование (smoke testing). Минимальный набор тестов на явные ошибки;

Тестирование новой функциональности (new feature testing). Тестируется новые функции системы;

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

Приёмочное тестирование (acceptance testing). Целью приемочного тестирования является оценка готовности системы для его выпуска на рынок или передачи клиенту. Может включать в себя альфа-тестирование (alpha testing) и бета-тестирование (beta testing).

По признаку позитивности сценариев:

Позитивное тестирование (positive testing). Проверка позитивных (правильных) пользовательских сценариев. На вход подается разрешенные (ожидаемые) данные.

Негативное тестирование (negative testing). Проверка реакции системы на ввод негативных (не разрешенных/некорректных) данных.

По степени подготовленности к тестированию:


По Уровням тестирования:

Тестирование на разных уровнях производится на протяжении всего жизненного цикла разработки и сопровождения программного обеспечения. Уровень тестирования определяет то, над чем производятся тесты: над отдельным модулем, группой модулей или системой, в целом. Проведение тестирования на всех уровнях системы — это залог успешной реализации и сдачи проекта.

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

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

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

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

 

По Технологии тестирования:

Технологий тестирования существует целое множество. Условно их можно отнести к статическим или к динамическим.

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

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

 

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

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