Есть два способа проверить программу. Первый — руками: человек сам проходит сценарий, нажимает, смотрит, сравнивает. Второй — автоматизацией: программист пишет отдельный код (тест), который проходит сценарий за человека и сам сообщает, всё ли в порядке.

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

Ручное тестирование: человек проверяет сам

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

Сильные стороны:

  • Гибкость. Заметил что-то странное — сразу свернул в сторону и проверил. Не нужно ничего заранее программировать.
  • Живой взгляд. Человек видит, что кнопка некрасиво съехала, текст обрезан, а цвет ошибки нечитаемый. Автотест этого «не чувствует».
  • Быстрый старт. Чтобы проверить новую функцию один раз, не нужно писать код — открыл и проверил.

Слабые стороны: это медленно и утомительно, если одно и то же надо повторять много раз. Прогнать вручную 500 проверок после каждого изменения — нереально. И человек устаёт, а значит, ошибается и пропускает.

Автоматизированное тестирование: код проверяет за человека

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

Сильные стороны:

  • Скорость и повторяемость. Тысячи проверок за минуты, одинаково точно каждый раз.
  • Не устаёт. Машине всё равно, первый это прогон или тысячный.
  • Хорош для регресса. Идеально проверять, что старое всё ещё работает после новых изменений.

Слабые стороны: дорого создавать и поддерживать. Автотест — это тоже код, который надо написать, чинить при изменениях интерфейса и в котором самом бывают баги. Автотест проверяет ровно то, что в него заложили, и не заметит, что «вообще-то это выглядит уродливо». Написать автотест на одноразовую проверку — пустая трата времени.

Что чем проверяют на практике

Грубое, но рабочее правило:

  • Автоматизируют то, что повторяется часто и редко меняется: регресс основных сценариев, проверки API, расчёты, обработку множества вариантов данных.
  • Руками проверяют новое, сложное и «на глаз»: только что сделанную функцию, удобство интерфейса, редкие сценарии, а также разведочное тестирование — когда ходишь по продукту без строгого плана и ищешь неожиданное.

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

Почему начинать стоит с ручного

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

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

Где это применяется

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

Где спотыкаются начинающие:

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

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