---
title: Виды тестирования
seo:
  title: Виды тестирования — QA
  description: Тема «Виды тестирования» для собеседования QA. Как часто следует проводить регрессионное тестирование продукта? Какие бывают виды интеграционного тестирования?
---

[Все темы QA](/qa)

## <strong>Как часто следует проводить регрессионное тестирование продукта?</strong> [#q-14bee738d69b81d39757f581796ba340]

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

:::note[Ссылки для изучения]

1. [Как и когда проводить регрессионное тестирование](https://pikabu.ru/story/kak_i_kogda_provodit_regressionnoe_testirovanie_2294692)
   :::

---

## <strong>Какие бывают виды интеграционного тестирования?</strong> [#q-14bee738d69b81a18a02c7e3a18202cf]

Интеграционное тестирование включает следующие виды&#58;

1. <strong>Big Bang</strong> - все компоненты интегрируются одновременно для
   проверки взаимодействия.

1. <strong>Top-down</strong> - тестирование начинается с верхних уровней и
   постепенно включает нижние.

1. <strong>Bottom-up</strong> - тестирование начинается с нижних уровней и
   постепенно включает верхние.

1. <strong>Sandwich (Mixed)</strong> - комбинирует подходы Top-down и Bottom-up,
   начиная с определенного уровня.

Каждый тип интеграционного тестирования имеет свои особенности и применяется в зависимости от конкретных требований проекта.

:::note[Ссылки для изучения]

1. [Что такое интеграционное тестирование](https://tquality.ru/blog/Integracionnoe-testirovanie/)
   :::

---

## <strong>Что такое</strong> <code>Configuration Testing</code><strong>?</strong> [#q-14bee738d69b81cd8e79fde0ced22c8a]

Тестирование конфигурации (<code>Configuration Testing</code>) - это процесс проверки работоспособности программного обеспечения на различных конфигурациях аппаратного и программного обеспечения (операционных системах, браузерах, версиях языков программирования и т. д.). Целью является убедиться, что приложение корректно функционирует в различных окружениях, где оно может быть установлено и использовано конечными пользователями.

:::note[Ссылки для изучения]

1. [Что такое конфигурационное тестирование](https://vladislaveremeev.gitbook.io/qa_bible/vidy-metody-urovni-testirovaniya/konfiguracionnoe-testirovanie-configuration-testing)
   :::

---

## <strong>Что такое</strong> <code>Exploratory Testing</code><strong>?</strong> [#q-14bee738d69b81198c30cd48f116501d]

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

:::note[Ссылки для изучения]

1. [Что такое исследовательское тестирование](https://www.jetbrains.com/ru-ru/teamcity/ci-cd-guide/faq/exploratory-testing/#:~:text=%D0%98%D1%81%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%BE%D0%B5%20%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%28exploratory%20testing%29%20%E2%80%93,%D0%B8%20%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8%20%D0%BF%D0%BE%D1%82%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%BF%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%BD%D1%8B%D1%85%20%D0%BE%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D0%B9)
   :::

---

## <strong>Какие существуют</strong> <code>UI</code><strong>-стандарты?</strong> [#q-14bee738d69b81d28511cfe7663b1925]

Некоторые из основных <code>UI</code>-стандартов включают&#58;

1. <code>Material Design</code>&#58; Разработан Google, ориентирован на чистоту
   дизайна, интерактивность элементов и адаптивность.

1. <code>iOS Human Interface Guidelines</code>&#58; Руководство Apple,
   описывающее рекомендации по дизайну интерфейса для iOS приложений, включая
   принципы и советы по визуальному стилю, взаимодействию и поведению элементов.

1. <code>Microsoft Fluent Design System</code>&#58; Система дизайна от
   Microsoft, объединяющая различные платформы (Windows, Xbox, Web) с акцентом
   на глубину и анимацию.

1. <code>IBM Design Language</code>&#58; Стандартный набор руководящих
   принципов, предложений и ресурсов, разработанный IBM для создания
   единообразного пользовательского опыта.

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

:::note[Ссылки для изучения]

1. [Ключевые UI-стандарты](https://rating-gamedev.ru/blog/5-kliucevyx-ui-standartov-v-testirovanii-obzor-i-primery)
   :::

---

## <strong>Что такое</strong> <code>Black</code><strong>/</strong><code>Grey</code><strong>/</strong><code>White Box Testing</code><strong>?</strong> [#q-14bee738d69b81b99582ca756f7d9b2e]

Краткое описание различных типов тестирования&#58;

1. <code>Black Box Testing</code> <strong>(Тестирование черного ящика)</strong>
   &#58; Тестирование, при котором проверяется функциональность программы без
   знания внутренней структуры или кода. Тестировщик видит только входные данные
   и ожидаемые выходные результаты.

1. <code>Grey Box Testing</code> <strong>(Тестирование серого ящика)</strong>
   &#58; Смешанный подход между Black Box и White Box Testing. Тестировщик имеет
   частичное знание о внутренней структуре программы, что позволяет ему
   создавать более эффективные тесты.

1. <code>White Box Testing</code> <strong>(Тестирование белого ящика)</strong>
   &#58; Тестирование, при котором тестировщик имеет полный доступ к внутренней
   структуре программы и коду. Цель - проверка внутренней логики, алгоритмов и
   структур данных.

Каждый тип тестирования имеет свои особенности и применяется в зависимости от специфики разрабатываемого ПО и требований проекта.

:::note[Ссылки для изучения]

1. [Тестирование и 7 основных этапов проведения](https://neiros.ru/blog/code/testirovanie-i-7-osnovnykh-etapov-ego-provedeniya/)
   :::

---

## <strong>Что такое</strong> <code>Performance Testing</code><strong>?</strong> [#q-14bee738d69b814bb535d7605c506349]

Тестирование производительности (<code>Performance Testing</code>) — это процесс оценки работы программного продукта или системы с целью выявления и анализа его производительности, стабильности и масштабируемости в различных условиях нагрузки. Основная задача — проверка скорости работы, времени отклика, эффективности использования ресурсов и устойчивости при различных объемах данных или пользовательских запросов.

:::note[Ссылки для изучения]

1. [Гайд по тестированию производительности](https://www.performance-lab.ru/blog/testirovanie-proizvoditelnosti)
   :::

---

## <strong>Что такое</strong> <code>Smoke</code> <strong>и</strong> <code>Sanity</code> <strong>тестирование и какая между ними разница?</strong> [#q-14bee738d69b8119952ac9f17f54130a]

<code>Smoke testing</code> и <code>Sanity testing</code> — это два первичных
типа функционального тестирования, которые выполняются перед основным циклом
тестирования продукта. Основное их назначение — проверить базовую
работоспособность системы или её отдельных компонентов до глубокого
тестирования.

<code>Smoke testing</code>
<strong>&#58;</strong>

- <strong>Цель&#58;</strong> Проверка основных функций системы или приложения,
  чтобы убедиться, что основные компоненты работают без критических ошибок.

- <strong>Характеристики&#58;</strong> Обычно выполняется после каждой сборки
  для быстрой проверки.

- <strong>Глубина&#58;</strong> Поверхностное тестирование, проверка базовых
  функциональных возможностей без глубокого погружения в детали.

<code>Sanity testing</code>
<strong>&#58;</strong>

- <strong>Цель&#58;</strong> Проверка основных функций или изменений в системе
  после выполнения существенных изменений или исправлений.

- <strong>Характеристики&#58;</strong> Может выполняться после Smoke testing для
  дополнительной уверенности в работоспособности системы.

- <strong>Глубина&#58;</strong> Более глубокое тестирование, фокусируется на
  критически важных аспектах, подтверждает, что система работоспособна после
  изменений.

<strong>Разница&#58;</strong>

- <code>Smoke testing</code> проверяет базовую функциональность для общей
  работоспособности системы, не вдаваясь в детали.

- <code>Sanity testing</code> фокусируется на проверке конкретных аспектов,
  часто после изменений или исправлений, чтобы убедиться в их правильной
  реализации.

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

:::note[Ссылки для изучения]

1. [Что такое Smoke тестирование](https://qualitica.ru/blog/smoke-testirovanie)
   :::

---

## <strong>Что такое</strong> <code>Traceability Matrix</code><strong>?</strong> [#q-14bee738d69b810db86fd84e89f4dd1e]

Матрица трассировки (<code>Traceability Matrix</code>) — это инструмент управления и контроля, который используется в процессе разработки ПО для связи между различными элементами системы. Она обеспечивает прозрачность и отслеживаемость между требованиями, тестами, кодом и другими аспектами проекта. Основные функции матрицы трассировки включают&#58;

1. <strong>Сопоставление требований&#58;</strong> Соединение требований с
   соответствующими тестами, чтобы убедиться, что все требования покрыты
   тестами.

1. <strong>Отслеживание изменений&#58;</strong> Отслеживание изменений в
   требованиях и их влияния на другие аспекты проекта.

1. <strong>Управление изменениями&#58;</strong> Помогает контролировать и
   оценивать влияние изменений на проект.

1. <strong>Анализ покрытия&#58;</strong> Оценка степени покрытия тестами всех
   требований.

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

:::note[Ссылки для изучения]

1. [Матрица трассируемости RTM](https://vladislaveremeev.gitbook.io/qa_bible/testovaya-dokumentaciya-i-artefakty-test-deliverablestest-artifacts/matrica-trassiruemosti-rtm-requirement-traceability-matrix)
   :::

---

## <strong>Что такое</strong> <code>Sanity Testing</code><strong>?</strong> [#q-14bee738d69b8100951fc458a6736ff5]

Тестирование на здравом смысле (<code>Sanity Testing</code>) — это поверхностная проверка функциональности или изменений в программном продукте с целью убедиться, что основные функции работают корректно после небольших изменений или исправлений. Основные характеристики тестирования на здравом смысле&#58;

1. <strong>Ограниченный объем тестирования&#58;</strong> Фокусируется на
   основных функциях или изменениях без перепроверки всех аспектов продукта.

1. <strong>Цель&#58;</strong> Проверить, что основные функции продукта или
   изменения не были повреждены после внесения изменений.

1. <strong>Простота и быстрота&#58;</strong> Тестирование на здравом смысле
   выполняется быстро и не требует глубокого погружения во все аспекты системы.

1. <strong>Отличие от Smoke Testing&#58;</strong> В отличие от тестирования
   стабильности (Smoke Testing), которое проверяет базовую работоспособность
   системы перед полноценным тестированием, тестирование на здравом смысле
   фокусируется на конкретных изменениях или функциональных аспектах.

Тестирование на здравом смысле часто используется для экономии времени при проверке недавно внесенных изменений или исправлений перед полным циклом тестирования.

:::note[Ссылки для изучения]

1. [Базовые вопросы и ответы на Junior QA](https://github.com/RomE-HK/QA_Interview_Questions/blob/main/JuniorQA.md)
   :::

---

## <strong>Что такое</strong> <code>End&#45;to&#45;End</code> <strong>тест?</strong> [#q-14bee738d69b8164a735c5ad65c1e9d8]

Тестирование <code>end&#45;to&#45;end</code> (<code>E2E</code>) — это метод проверки работы всей системы или приложения с точки зрения пользователя от начала до конца, включая все основные компоненты и зависимости. Основные характеристики <code>E2E</code> тестирования&#58;

1. <strong>Цель&#58;</strong> Убедиться, что весь процесс работы системы от
   начала до конца выполняется корректно и соответствует ожиданиям пользователя.

1. <strong>Область применения&#58;</strong> Включает в себя тестирование всех
   взаимодействий между различными компонентами системы, включая
   пользовательский интерфейс, бизнес-логику, базы данных, внешние API и другие
   зависимости.

1. <strong>Сценарии тестирования&#58;</strong> Обычно включают симуляцию
   типичных пользовательских сценариев взаимодействия с системой для проверки её
   работоспособности в реальных условиях.

1. <strong>Автоматизация&#58;</strong> Часто E2E тестирование автоматизируется с
   помощью специализированных инструментов для повышения эффективности и
   повторяемости тестов.

Тестирование <code>end&#45;to&#45;end</code> играет важную роль в обеспечении качества и уверенности в том, что все ключевые функции и процессы системы работают правильно перед выпуском в продакшен.

:::note[Ссылки для изучения]

1. [Руководство по сквозному тестированию](https://habr.com/ru/companies/otus/articles/681066/)
   :::

---

## <strong>Что такое тестирование безопасности?</strong> [#q-14bee738d69b81ec858cc7401b475ada]

Тестирование безопасности (<code>Security Testing</code>) — это процесс оценки системы или приложения на предмет уязвимостей, которые могут быть использованы злоумышленниками для несанкционированного доступа, атак или других видов вредоносной деятельности. Основные аспекты тестирования безопасности&#58;

1. <strong>Цель&#58;</strong> Выявление уязвимостей в системе, которые могут
   быть использованы для атак и нарушения безопасности данных.

1. <strong>Методы&#58;</strong> Включают сканирование уязвимостей, тестирование
   на проникновение (penetration testing), анализ безопасности кода, аудит
   конфигурации и т.д.

1. <strong>Аспекты проверки&#58;</strong> Оценка безопасности сетевых
   соединений, защиты данных, аутентификации и авторизации, защиты от межсетевых
   атак и других угроз.

1. <strong>Инструменты&#58;</strong> Для выполнения тестирования безопасности
   используются специализированные инструменты и техники, направленные на
   выявление и исправление выявленных уязвимостей.

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

:::note[Ссылки для изучения]

1. [Что такое тестирование безопасности](https://www.tutorialspoint.com/what-is-security-testing-types-with-examples)
   :::

---

## <strong>Что такое испытание на основе рисков?</strong> [#q-14bee738d69b8151a771d75b2eab5462]

Испытание на основе рисков (<code>Risk&#45;based Testing</code>) — это подход к тестированию программного обеспечения, при котором приоритеты тестирования определяются на основе оценки рисков для проекта или системы. Основные аспекты&#58;

1. <strong>Оценка рисков&#58;</strong> Анализируются потенциальные угрозы,
   которые могут повлиять на качество и надежность системы.

1. <strong>Планирование тестирования&#58;</strong> Приоритизируются тесты в
   зависимости от важности функций системы, критичности уязвимостей и возможных
   последствий от их эксплуатации.

1. <strong>Эффективность&#58;</strong> Позволяет сосредоточить усилия на
   наиболее рискованных областях системы, что способствует повышению качества
   тестирования и уменьшению рисков для проекта.

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

:::note[Ссылки для изучения]

1. [Базовые вопросы и ответы на Junior QA](https://github.com/RomE-HK/QA_Interview_Questions/blob/main/JuniorQA.md)
   :::

---

## <strong>Что такое динамическое тестирование?</strong> [#q-14bee738d69b81a28c2cdb07ba9a0a7a]

Динамическое тестирование (<code>Dynamic Testing</code>) — это метод проверки программного обеспечения, при котором код выполняется и анализируется в процессе его работы. Основные аспекты&#58;

1. <strong>Цель&#58;</strong> Проверка работы программы в реальных условиях
   выполнения для выявления ошибок, недочетов и несоответствий функциональным
   требованиям.

1. <strong>Инструменты&#58;</strong> Включает запуск программы с тестовыми
   данными или входными условиями, чтобы проверить ее поведение, отклик на
   различные входные данные и операционные сценарии.

1. <strong>Типы тестов&#58;</strong> Включает в себя различные виды
   тестирования, такие как модульное тестирование, интеграционное тестирование,
   системное тестирование и т.д., которые выполняются на основе кода и его
   исполнения.

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

:::note[Ссылки для изучения]

1. [Тестирование и 7 основных этапов проведения](https://neiros.ru/blog/code/testirovanie-i-7-osnovnykh-etapov-ego-provedeniya/)
   :::

---

## <strong>Что такое «парадокс пестицида»?</strong> [#q-14bee738d69b8119ae70fda7b50d7e0b]

«Парадокс пестицида» (<code>Pesticide Paradox</code>) в контексте тестирования программного обеспечения означает, что повторное использование одних и тех же тестовых кейсов может привести к уменьшению эффективности обнаружения ошибок. Этот эффект связан с тем, что программное обеспечение может развиваться и изменяться, и тесты, которые успешно обнаруживали ошибки в прошлом, могут не быть достаточно адаптированы для выявления новых ошибок или изменений в системе.

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

:::note[Ссылки для изучения]

1. [7 принципов тестирования](https://ibs-training.ru/about/news/7_printsipov_testirovaniya_CHast_3/)
   :::
