AI Теория тестирования ПО простыми словами: от основ до практики

AI

Редактор
Регистрация
23 Август 2023
Сообщения
3 049
Лучшие ответы
0
Реакции
0
Баллы
51
Offline
#1
Тестирование — это не просто поиск ошибок. Это способ убедиться, что продукт действительно работает так, как должен, и делает жизнь пользователей проще, а не сложнее. Хорошее тестирование начинается задолго до первого нажатия кнопки “Run tests” — с понимания логики продукта, требований и рисков.

Что такое тестирование и зачем оно нужно


Когда мы говорим “тестирование”, чаще всего имеем в виду процесс проверки работы системы. Но по сути это — инструмент обеспечения качества.
Хорошее тестирование помогает ответить на два простых вопроса:


  • Создаём ли мы то, что действительно нужно пользователю?


  • Создаём ли мы это правильно?

Цель тестирования не просто “найти баг”, а сделать продукт надёжным, удобным и безопасным. Чем раньше найден дефект, тем дешевле и проще его исправить. Ошибка, замеченная на этапе проектирования, обходится компании в десятки раз дешевле, чем та же ошибка, обнаруженная пользователем после релиза.

QA и QC: кто за что отвечает


Эти две аббревиатуры часто путают.


  • QA (Quality Assurance) — это профилактика. QA отвечает за процессы: как организовано тестирование, есть ли стандарты, правила, ревью, документация.


  • QC (Quality Control) — это диагностика. Это уже конкретные проверки, тест-кейсы и поиск багов в готовом продукте.

Если коротко: QA предотвращает ошибки, QC их находит.

Где место тестирования в разработке


Тестирование не начинается после релиза — оно сопровождает весь цикл разработки:

Этап​

Что делает тестировщик​

Анализ требований​

Проверяет, что требования понятны, логичны и тестируемы​

Дизайн​

Участвует в ревью архитектуры, готовит тест-план​

Разработка​

Следит за качеством кода, пишет автотесты​

Тестирование​

Проверяет систему вручную и автоматически​

Релиз​

Делает smoke и sanity проверки​

Эксплуатация​

Следит за стабильностью и собирает отчёты о дефектах​


Основные уровни тестирования


  1. Модульное (Unit) — проверяются отдельные функции или классы.


  2. Интеграционное — как модули взаимодействуют между собой.


  3. Системное — вся система целиком, как единый организм.


  4. Приёмочное (Acceptance) — проверка готового продукта пользователем или заказчиком.
Пирамида тестирования


Один из ключевых принципов современной QA — пирамида тестирования (Testing Pyramid).
Эта концепция показывает, какие типы тестов и в каком соотношении стоит использовать, чтобы продукт оставался стабильным, а процесс тестирования — эффективным и экономичным.

В классической форме пирамида состоит из трёх уровней:

Уровень​

Суть​

Цель​

Unit-тесты (модульные)

Проверяют работу отдельных функций, классов и методов. Их много, они быстрые и дешёвые.​

Ловят ошибки на ранних этапах, ещё до сборки системы.​

Integration-тесты

Проверяют, как модули взаимодействуют между собой (API, БД, микросервисы).​

Убедиться, что части системы “понимают” друг друга.​

UI / E2E-тесты

Проверяют продукт глазами пользователя, через интерфейс.​

Проверка ключевых сценариев использования.​



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

Название​

Цель​

Пример​

Smoke testing

Проверить, что система вообще запускается и не падает​

Проверка входа в систему после сборки​

Sanity testing

Проверить конкретную исправленную или новую функцию​

Проверка добавленного фильтра в каталоге​

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

Убедиться, что старый функционал не сломался​

Проверка старых форм после фиксов​

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

Проверить выполнение требований​

Проверка регистрации пользователя​

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

Проверить характеристики системы​

Измерение времени отклика​

Performance testing

Проверить скорость и стабильность​

1000 запросов в секунду​

Load testing

Проверить поведение под нагрузкой​

500 пользователей одновременно​

Stress testing

Проверить, где предел прочности​

10 000 пользователей, пока не упадёт​

Security testing

Найти уязвимости​

SQL-инъекции, XSS​

Usability testing

Проверить удобство интерфейса​

Наблюдение за пользователем​

Compatibility testing

Проверить работу в разных браузерах и ОС​

Chrome, Firefox, Safari​

Localization testing

Проверить язык и формат данных​

Валюты, даты, переводы​

Recovery testing

Проверить восстановление после сбоев​

Перезапуск после падения сервера​

Accessibility testing

Проверить доступность для людей с ограничениями​

Проверка экранного диктора​

Exploratory testing

Исследовать систему без сценария​

Проверка новой фичи вручную​

Ad-hoc testing

Спонтанная проверка без документации​

“Покликать” наугад​

Alpha testing

Внутренние проверки до релиза​

Тестирование командой QA​

Beta testing

Проверки внешними пользователями​

Бета-версия перед запуском​


Документация тестировщика


Тестировщик не только кликает по кнопкам — он документирует всё, что проверяет.

Тест-кейс


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


Проверка входа с валидными данными.
Чек-лист


Это список проверок без подробных шагов.
Пример:


Проверить регистрацию, восстановление пароля, вход через соцсети.

Чек-лист нужен для быстрой проверки, тест-кейсы — для системного подхода и отчётности.

Что входит в тест-план


Тест-план описывает стратегию тестирования:


  • цели и объём проверок,


  • среду и окружение,


  • критерии начала и завершения,


  • распределение ролей,


  • риски,


  • расписание,


  • метрики (покрытие, плотность дефектов, % успешных тестов).
Баг-репорты: как писать правильно


Баг-репорт должен быть понятным и воспроизводимым.
Хороший отчёт включает:


  • заголовок,


  • среду (браузер, ОС, версия),


  • шаги воспроизведения,


  • ожидаемый и фактический результат,


  • приоритет и серьёзность,


  • скриншоты или логи.

Серьёзность​

Пример​

Critical​

Приложение падает​

Major​

Основная функция не работает​

Minor​

Мелкий дефект, можно обойти​

Trivial​

Опечатка, визуальный недочёт​


Приоритет​

Пример​

High​

Срочно исправить​

Medium​

В следующем спринте​

Low​

Когда будет время​


Жизненный цикл бага


  1. Новый → 2. Назначен → 3. В работе → 4. Исправлен → 5. Готов к проверке → 6. Закрыт.
    Иногда добавляются состояния вроде «Отклонён» или «Не воспроизводится».
Техники тест-дизайна


Чтобы тестировать эффективно, важно не просто писать сценарии, а понимать, что именно имеет смысл проверить.


  • Граничные значения (Boundary Value Analysis) — проверка крайних значений диапазона (например, 17, 18, 60, 61 для поля “возраст 18–60”).


  • Разбиение на классы эквивалентности (Equivalence Partitioning) — делим входные данные на допустимые и недопустимые группы.


  • Таблицы решений (Decision Tables) — когда есть много условий и комбинаций.


  • Диаграммы переходов состояний (State Transition) — когда система имеет состояния (логин → активен → заблокирован → разлогинен).


  • Попарное тестирование — подбор минимального набора тестов, покрывающего все пары параметров.
Статическое и динамическое тестирование


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

Тестирование микросервисов


В микросервисной архитектуре всё строится вокруг взаимодействия сервисов.
Здесь важно:


  • проверять контракты API между сервисами,


  • использовать моки и стабы для изоляции,


  • проводить интеграционные тесты,


  • делать end-to-end проверки, чтобы убедиться, что цепочка работает целиком (например, авторизация → создание заказа → оплата).
Современные практики


Современное тестирование неотделимо от автоматизации.


  • CI/CD позволяет запускать тесты при каждом коммите.


  • DevOps-среда стирает границы между разработкой и тестированием.


  • Инструменты вроде JUnit, TestNG, Selenium, Cypress и Postman стали стандартом.


  • А подход Test Impact Analysis помогает запускать только те тесты, на которые реально повлияли изменения в коде.
Вместо заключения


Хороший тестировщик — это не человек, который «ломает» систему. Это человек, который помогает сделать её надёжной.

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

Если вы начинаете путь в QA, изучите:


  • теорию тестирования,


  • основные виды и техники,


  • артефакты (чек-листы, тест-кейсы, баг-репорты),


  • принципы автоматизации.

Эти знания дадут базу, с которой можно уверенно идти на собеседования и расти дальше — в сторону automation, QA lead или test architect.
 
Сверху Снизу