Какие основные виды тестирования обычно входят в зону ответственности команды QA?

Ответ

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

Классификация по объекту тестирования:

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

    • Модульное (Unit): Проверка отдельных функций/методов (часто выполняется разработчиками).
    • Интеграционное: Проверка взаимодействия между модулями, системами или сервисами (например, с БД, API).
    • Системное (End-to-End / E2E): Проверка работы всего приложения как целого по пользовательским сценариям.
    • Приемочное (UAT): Финальная проверка заказчиком/стейкхолдерами на соответствие бизнес-требованиям.
  2. Нефункциональное тестирование:

    • Нагрузочное (Performance/Load): Проверка поведения системы под высокой нагрузкой.
    • Тестирование удобства использования (Usability): Оценка интерфейса с точки зрения пользователя.
    • Тестирование безопасности (Security): Поиск уязвимостей.
    • Тестирование совместимости (Compatibility): Работа в разных браузерах, ОС, устройствах.

Классификация по степени автоматизации:

  • Ручное тестирование: Выполнение тест-кейсов вручную. Критично для исследования (exploratory testing) и проверки UX.
  • Автоматизированное тестирование: Написание скриптов (например, на Selenium, Cypress, JUnit) для регрессионного и повторяющегося тестирования.

Почему важна комбинация видов:

  • Раннее обнаружение дефектов: Unit- и интеграционные тесты находят проблемы на этапе разработки.
  • Снижение рисков: Нагрузочное и security-тестирование выявляют критические проблемы перед релизом.
  • Обеспечение качества пользовательского опыта: Usability и E2E тесты гарантируют, что система решает реальные задачи пользователя.

Современный тренд: Сдвиг левера (Shift-left) — вовлечение QA на ранних этапах (анализ требований, дизайн) и автоматизация регрессионных проверок для непрерывной интеграции (CI/CD).

Ответ 18+ 🔞

А, ну это ж классика, блядь! Подходишь к этим теоретикам, спрашиваешь: «Ну и чем вы там, ребята, занимаетесь?». А они тебе такие, с умным видом: «Широким спектром, сука, тестирования». И глаза стекленеют, ёпта.

Ну ладно, разберём этот ваш «спектр», чтоб он у меня в голове не как радуга после трёх стаканов — красиво, но бесполезно.

Первая дичь — на что именно тыкаем:

  1. Функциональное — «А оно вообще работает?».

    • Модульное (Unit): Это когда разработчик, такой вот хитрожопый, проверит свою одну функцию, которая складывает два плюс два, и радостно орёт: «Всё работает!». А потом выясняется, что эта функция в реальности вызывается, когда пользователь пытается оплатить дом, а не яблоки. Но формально-то тест пройден, блядь!
    • Интеграционное: А вот тут начинается веселье. Твоя функция «2+2» пытается поговорить с базой данных, а та ей в ответ: «Пошёл на хуй, у меня креденшилы другие». Или один сервис шлёт другому не «привет», а «пшёл вон». Вот это и ловим. Сплошное общение дебилов, ебать.
    • Системное (End-to-End): Это уже наш, царский, подход. Берёшь реального пользователя (ну или себя изображаешь, если пользователей ещё нет), и пытаешься, блядь, КУПИТЬ ЭТОТ ХУЕВЫЙ ТОВАР. Нажимаешь на кнопку, которая должна вести к оплате, а тебя выкидывает в раздел «О компании». Вот это и есть E2E — прошёл весь путь от входа до, theoretically, получения товара, а по факту — до звонка в саппорт с криком «Да что ж это за пиздец!».
    • Приемочное (UAT): Это святое, блядь. Это когда ты, весь такой измученный, подводишь заказчика: «Вот, босс, всё готово, шедевр». А он тыкает пальцем в экран и говорит: «А я хотел, чтоб кнопка была не синяя, а перламутрово-малиновая, и чтоб при наведении играл гимн нашей компании. Где гимн?». И всё, пизда, два месяца работы коту под хвост.
  2. Нефункциональное — «А КАК оно работает?».

    • Нагрузочное: А давайте запустим на наш сайт-визитку не одного пользователя, а всех его родственников сразу, тысяч пять! И посмотрим, не развалится ли он, бедный, в труху, как мои нервы в конце квартала. Обычно разваливается, сука.
    • Тестирование удобства (Usability): Подсаживаешь бабушку (или менеджера, что почти одно и то же) и смотришь, сможет ли она найти, где тут «отправить». Если через пять минут она начинает плакать или бить мышкой об стол — плохой знак, блядь.
    • Тестирование безопасности: Пытаешься вести себя как самый отъявленный пидорас и сломать всё, что можно. Ввести в поле «имя» SQL-инъекцию, чтоб база данных тебе все пароли выплюнула. Весело, но если найдёшь уязвимость — герой, а если нет, а потом её найдёт какой-нибудь школьник — героем будешь уже в другом, более грустном смысле.
    • Тестирование совместимости: Открываешь свой сайт в десяти разных браузерах. В девяти он выглядит нормально, а в десятом, каком-нибудь древнем, весь интерфейс едет, как мудак по гололёду. И надо решать — говорить пользователю «Обнови браузер, лузер» или городить костыли.

Вторая дичь — кто тыкает: человек или скрипт?

  • Ручное: Это когда ты сам, своей рукой, в сотый раз вводишь логин и пароль, проверяя, не сломалось ли что после вчерашнего обновления. Работа для дзена, блядь, или для полного отчаяния. Но для исследования, когда просто ходишь и тыкаешь во всё подряд, как ребёнок в розетку, — незаменимо.
  • Автоматизированное: Это когда ты неделю пишешь скрипт, который будет это делать за тебя. Скрипт падает на первом же шаге, ты две ночи его чинишь, и вот он, наконец, стабильно проходит. Красота! Теперь он может проверять эту хуйню каждую ночь, а ты спать. Пока, конечно, не поменяют селектор на кнопке.

А зачем этот цирк, спросишь?

Да затем, чувак, чтоб не было мучительно больно в день релиза! Чтобы не вышло, как в той истории: «Модульные тесты прошли, а система в целом — пизда». Ранние проверки — это как поймать мудака на этапе, когда он только задумал какую-то херню, а не когда он уже всё разъебал.

Современная фишка — это «сдвиг влево» (Shift-left). Раньше тестировщику приносили готовый продукт и говорили: «На, проверь». А теперь мы лезем к ним на этапе обсуждения требований, такие все важные, и говорим: «Слушай, а давай тут не триста полей в одну форму, а то пользователь обосрётся, пока заполнять будет, ядрёна вошь!». И автоматизируем всё, что шевелится, чтобы при каждом чихе разработчика не начинать проверку всей вселенной заново.

Короче, работа — та ещё, но без неё вообще пипец.