100 видов тестирования ПО

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

Содержание:

🔥 Важное для QA-специалистов! 🔥
В QaRocks ты найдешь туториалы, задачи и полезные книги, которых нет в открытом доступе. Уже более 14.000 подписчиков – будь среди нас! Заходи к нам в телеграм канал QaRocks

Типы тестирования в зависимости от цели тестирования

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

Это вид тестирования, который включает проверку соответствия ПО его функциональным спецификациям или бизнес-требованиям. Его цель — проверить каждую функцию приложения путем выполнения тест-кейсов и сравнения ожидаемого результата с фактическим.

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

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

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

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

Типы тестирования по методу выполнения

3. Ручное тестирование

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

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

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

4. Автоматизированное тестирование

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

Кроме того, это помогает в реализации непрерывной интеграции и непрерывного развертывания (CI/CD), при которой автоматизированные тест-кейсы могут выполняться автоматически, как только новый код попадает в репозиторий.

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

Виды тестирования на основе техник тест-дизайна

5. Тестирование «черного ящика»

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

6. Тестирование на основе спецификаций

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

7. Тестирование «белого ящика»

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

8. Тестирование «стеклянного ящика»

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

9. Тестирование на основе структуры

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

10. Тестирование «серого ящика»

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

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

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

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

Преимущества:

  • Дефекты в модуле можно легко выявить на ранней стадии
  • Существенно снижаются общие затраты на исправление ошибок

12. Интеграционное тестирование

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

Типы интеграционного тестирования:

  1. Метод “большого взрыва” (Big-bang)
  2. Нисходящий подход (Bottom-up)
  3. Восходящий подход (Top-down)
  4. Гибридный подход (Hybrid) 

13. Системное тестирование

Это третий уровень тестирования, при котором полностью интегрированное приложение проверяется как единое целое. Его цель — определить, соответствует ли приложение заявленным бизнес-требованиям.

14. Приемочное тестирование

Это финальный и один из наиболее важных уровней тестирования, после успешного прохождения которого приложение выпускается в продакшн. Оно подразделяется на два типа: альфа- и бета-тестирование.

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

15. Тестирование методом “Большого взрыва”

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

16. Нисходящий метод

Это подход, при котором тестирование начинается с верхних модулей и постепенно переходит к модулям нижнего уровня. В некоторых случаях, когда нижние модули ещё не готовы к моменту тестирования верхних уровней, используются “заглушки” (Stubs). Это не что иное, как фиктивные модули, имитирующие функциональность модулей нижнего уровня.

17. Восходящий метод

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

18. Гибридное интеграционное тестирование

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

Виды приемочного тестирования

19. Альфа-тестирование

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

20. Бета-тестирование

Выполняется конечными пользователями на стороне конечного пользователя. Оно позволяет пользователям напрямую предоставлять обратную связь о ПО компании-разработчику. Оно включает в себя выполнение только тестов «черного ящика».

«Черный ящик» или типы, основанные на спецификациях

21. Эквивалентное разбиение

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

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

22. Анализ граничных значений

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

23. Тестирование на основе таблиц решений 

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

24. Тестирование на основе диаграммы причинно-следственных связей

При нем используется графическое представление взаимосвязей между входными и выходными данными. Входные данные являются причиной, а выходные – следствием. Метод направлен на создание минимального количества тест-кейсов для достижения максимального покрытия с использованием диаграмм причинно-следственных связей.

25. Тестирование переходов состояний

Основан на модели конечного автомата (state machine model), при котором приложение проверяется с учетом изменений его состояния в ответ на различные входные данные.

26. Тестирование на основе сценариев использования

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

Типы тестирования «белого ящика» или структурного тестирования

{Эти виды тестирования выполняются только разработчиками и тестировщиками «белого ящика». Не стесняйтесь игнорировать их, если вы не хотите изучать тестирование «белого ящика»}.

27. Тестирование операторов 

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

28. Тестирование решений/ветвей

Это метрика, измеряющая процент выполненных точек принятия решений (например, условий if-else) от общего количества таких точек в приложении.

29. Тестирование условий

Включает в себя тестирование результатов выполнения условий (значения TRUE или FALSE). Для достижения 100% покрытия условий необходимо проверить каждое условие как с результатом TRUE, так и FALSE с помощью тестовых скриптов. Таким образом, для n условий потребуется 2n тестовых скриптов.

30. Тестирование комбинаций условий

Оно включает в себя тестирование различных комбинаций результатов выполнения условий. Для достижения 100% покрытия потребуется 2^n тестовых скриптов. Это крайне ресурсоемко, и достичь 100% покрытия с помощью данной методики очень сложно.

31. Тестирование с определением значимости условий

Это оптимизированная версия тестирования комбинаций условий, в которой исключаются комбинации, не влияющие на результат.

32. Тестирование путей

Метод, проверяющий независимые пути в системе. Путь — последовательность исполняемых операторов кода от точки входа до точки выхода.

33. Тестирование на мутации

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

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

34. Тестирование циклов 

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

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

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

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

36. Нагрузочное тестирование

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

37. Стресс-тестирование

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

38. Тестирование на выносливость 

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

39. Soak-тестирование

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

40. Тестирование стабильности

Это то же самое, что тестирование на выносливость или Soak-тестирование.

41. Тестирование пиков нагрузки

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

42. Объемное тестирование

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

Виды тестирования ПО на основе опыта или планирования

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

Техники тестирования, основанные на опыте, полностью базируются на опыте или интуиции тестировщика. Две наиболее распространенные формы такого тестирования — это Adhoc (адхок) и исследовательское тестирование.

44. Adhoc-тестирование

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

45. Исследовательское тестирование

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

Другие виды тестирования

46. Повторное тестирование

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

47. Регрессионное тестирование

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

48. Smoke-тестирование 

Оно включает в себя выполнение только подмножества тест-кейсов, охватывающих основные функции приложения. Выполняется для того, чтобы убедиться, можно ли рассматривать приложение для исчерпывающего тестирования или нет. Если smoke-тесты не проходят, тогда сборка отклоняется и исчерпывающее тестирование не выполняется.

49. Санитарное тестирование

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

50. Динамическое тестирование

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

51. Статическое тестирование

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

52. Обезьянье тестирование

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

53. Горилла-тестирование 

Метод тестирования, при котором отдельный модуль или функциональность приложения интенсивно проверяется для оценки его отказоустойчивости.

54. Юзабилити-тестирование

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

55. Тестирование доступности

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

56. Тестирование установки

В данном виде тестирования проверяется процесс установки программного продукта в соответствии с руководством по установке.

57. Тестирование конфигурации

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

58. Тестирование локализации

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

59. Тестирование глобализации

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

60. Тестирование интернационализации

То же самое, что и тестирование глобализации.

61. Негативное тестирование

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

62. Тестирование безопасности

Это вид тестирования, целью которого является оценка целостности, аутентификации, авторизации, доступности, конфиденциальности и неотказуемости тестируемого приложения.

63. Тестирование на проникновение

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

64. Краудсорсинговое тестирование

Это тип тестирования программного обеспечения, который проводится большой группой или сообществом QA-специалистов, а не внутренними тестировщиками компании или нанятыми QA-консультантами.

65. Тестирование базы данных

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

Оно включает:

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

66. Тестирование API

Этот вид тестирования включает проверку RESTful API и SOAP веб-сервисов напрямую с использованием клиентов, таких как Advanced Rest Client, или инструментов, таких как SOAPUI, Postman и других.

67. ETL-тестирование

Тестирование Extract-Transform-Load или ETL включает в себя проверку соответствия данных после извлечения из источника до места назначения.

68. Тестирование хранилища данных

Оно включает проверку того, что данные в хранилище данных являются согласованными, надежными и точными, путем создания и выполнения комплексных тест-кейсов на различных этапах BI или хранилища данных.

69. Тестирование отказоустойчивости

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

70. A/B-тестирование

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

71. Сплит-тестирование

То же самое, что и A/B-тестирование.

72. Многопользовательское тестирование

Это тестирование с участием множества пользователей, при котором оценивается поведение приложения при одновременном доступе к одной и той же функциональности.

73. Попарное тестирование

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

74. Тестирование переключения при сбоях

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

75. Фаззинг-тестирование

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

76. Тестирование методом внедрения ошибок

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

77. Тестирование UI

Тестирование пользовательского интерфейса направлено на поиск дефектов графического интерфейса пользователя в приложении и проверку его соответствия спецификациям.

78. Пилотное тестирование

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

79. Тестирование бэкенда

Оно включает тестирование серверной части системы, которое состоит из тестирования баз данных и API в приложении.

80. Тестирование совместимости

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

81. Тестирование совместимости с браузерами 

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

82. Кросс-браузерное тестирование

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

83. Тестирование прямой совместимости

Включает проверку работы приложения с более новыми версиями платформы или другого ПО.

84. Тестирование обратной совместимости 

Включает в себя проверку работы приложения с более старыми версиями платформы или ПО. Также известно как нисходящая совместимость.

85. Тестирование нисходящей совместимости

То же самое, что и тестирование обратной совместимости.

86. Компонентное тестирование 

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

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

Это то же самое, что и компонентное тестирование, включающее проверку отдельного модуля приложения.

88. Agile-тестирование

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

89. Сквозное тестирование (E2E-тестирование)

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

90. Happy Path-тестирование

Это вид тестирования программного обеспечения, при котором проверяется стандартный/успешный сценарий работы приложения с корректными входными данными.

91. Инкрементальное тестирование

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

92. Тестирование восстановления

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

93. Тестирование на основе рисков 

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

94. Тестирование уязвимостей

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

95. Тестирование на соответствие (Compliance testing)

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

96. Тестирование на соответствие (Conformance testing)

То же самое, что и тестирование на соответствие.

97. Деструктивное тестирование

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

98. Тестирование зависимостей

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

99. Сценарное тестирование

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

100. Тестирование документации

Тестирование документации включает в себя проверку и валидацию документированных артефактов, созданных до, во время или после этапа разработки/тестирования.

Перевод статьи «Types of Testing | Software Testing Types Every QA Should Know».

🔥 Какой была ваша первая зарплата в QA и как вы искали первую работу? 

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Читать в телеграм

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *