Что такое автоматизация тестирования и чем она отличается от ручного тестирования
Зачем вам это знать?
Представьте, что вы работаете на почте и каждый день вручную проверяете тысячи писем: правильно ли написан адрес, не помята ли марка, верно ли указан индекс. Это долго, устаёт взгляд, можно что-то пропустить. А теперь представьте, что у вас есть умная машина, которая делает всё это за вас — быстрее, без усталости и с одинаковой точностью каждый раз.
Примерно так и работает автоматизация тестирования в мире программного обеспечения.
В этом уроке вы узнаете:
- что такое ручное тестирование и автоматизированное тестирование;
- чем они отличаются друг от друга;
- когда стоит использовать каждый подход;
- почему автоматизация — это не замена человека, а его помощник.
Эти знания — фундамент всего, что вы будете изучать дальше на этом курсе.
Теория
1. Что такое тестирование вообще?
Прежде чем говорить об автоматизации, давайте убедимся, что мы одинаково понимаем базовое понятие.
Тестирование программного обеспечения — это процесс проверки того, что программа (приложение, сайт, мобильное приложение) работает так, как ожидается, и не содержит ошибок.
💡 Простая аналогия: Когда повар пробует суп перед подачей — это тестирование. Он проверяет, достаточно ли соли, правильная ли температура, соответствует ли вкус рецепту. Если что-то не так — он исправляет.
Баг (от английского bug — жучок) — это ошибка или дефект в программе. Например, кнопка «Купить» не работает, или цена отображается неправильно. Задача тестировщика — найти такие баги до того, как их увидит пользователь.
2. Что такое ручное тестирование?
Ручное тестирование (manual testing) — это когда живой человек сам проверяет программу, выполняя действия руками: нажимает кнопки, заполняет формы, читает результаты на экране.
Как это выглядит на практике?
Предположим, вы тестируете форму регистрации на сайте. Ваши действия могут быть такими:
- Открыть браузер и зайти на сайт.
- Найти кнопку «Зарегистрироваться».
- Ввести имя, email и пароль.
- Нажать кнопку «Создать аккаунт».
- Проверить, появилось ли сообщение «Регистрация прошла успешно».
- Проверить, пришло ли письмо на email.
Этот набор шагов называется тест-кейсом (test case) — пошаговым сценарием проверки какой-либо функции программы.
Плюсы ручного тестирования:
- Человек замечает то, чего не ожидал: странный цвет, неудобное расположение кнопок, непонятный текст.
- Не требует специальных технических знаний для начала работы.
- Идеально подходит для проверки внешнего вида (дизайна) и удобства использования.
Минусы ручного тестирования:
- Медленно: если в программе 500 форм, их ручная проверка займёт очень много времени.
- Люди устают и совершают ошибки, особенно при повторяющихся действиях.
- Дорого при больших масштабах: нужно много людей.
- Сложно повторять точно: два разных тестировщика могут проверить одно и то же немного по-разному.
3. Что такое автоматизированное тестирование?
Автоматизированное тестирование (automated testing) — это когда проверку программы выполняет не человек, а специальная программа (скрипт). Эта программа повторяет те же шаги, что и человек, но делает это автоматически — по заранее написанным инструкциям.
💡 Аналогия: Вы научили робота-пылесоса, как убираться в вашей квартире. Теперь вы нажимаете одну кнопку — и он сам проезжает весь маршрут, не пропуская ни одного угла. Вы написали «программу» для пылесоса один раз, а он выполняет её снова и снова.
Как выглядит та же проверка формы регистрации, но в автоматизированном виде?
Вместо того чтобы делать всё руками, вы или ваш коллега пишете скрипт (script) — небольшую программу-инструкцию. Скрипт делает следующее:
# Это пример на языке Python с инструментом Selenium
# Selenium — это инструмент, который управляет браузером как настоящий пользователь
# 1. Открыть браузер и перейти на сайт
driver.get("https://example.com/register")
# 2. Найти поле «Имя» и ввести текст
driver.find_element("id", "name").send_keys("Иван Иванов")
# 3. Найти поле «Email» и ввести текст
driver.find_element("id", "email").send_keys("[email protected]")
# 4. Найти поле «Пароль» и ввести текст
driver.find_element("id", "password").send_keys("Parol123!")
# 5. Нажать кнопку «Зарегистрироваться»
driver.find_element("id", "submit-button").click()
# 6. Проверить, что появилось сообщение об успехе
result_text = driver.find_element("id", "success-message").text
assert result_text == "Регистрация прошла успешно!"
# assert — это команда «убедись, что…». Если условие не выполнено — тест упадёт с ошибкой.
⚠️ Не пугайтесь кода! Вам не нужно уметь писать такой код прямо сейчас. Этот пример показывает лишь идею: скрипт делает те же шаги, что и человек, но на языке команд. В следующих уроках мы разберём это подробнее и с нуля.
Плюсы автоматизированного тестирования:
- Скорость: скрипт проверяет 500 форм за несколько минут.
- Повторяемость: каждый запуск делается абсолютно одинаково, без отклонений.
- Работает в любое время: скрипт можно запустить ночью, пока все спят.
- Не устаёт: никаких ошибок из-за усталости.
- Дешевле в долгосрочной перспективе: написали один раз — запускаете тысячи раз.
Минусы автоматизированного тестирования:
- Требует времени и знаний для написания скриптов.
- Не замечает «неожиданных» проблем: если цвет кнопки стал некрасивым, скрипт этого не увидит — он только проверяет то, что ему сказали.
- Скрипты нужно поддерживать: если программа изменилась, скрипты тоже нужно обновить.
- Высокий начальный порог входа.
4. Ключевые различия: сравнительная таблица
| Критерий | Ручное тестирование | Автоматизированное тестирование |
|---|---|---|
| Кто выполняет | Живой человек | Программа (скрипт) |
| Скорость | Медленно | Очень быстро |
| Стоимость настройки | Низкая | Высокая (нужно написать скрипты) |
| Стоимость повторений | Высокая (каждый раз человек) | Очень низкая (скрипт бесплатно) |
| Обнаружение визуальных проблем | Отлично | Плохо (без специальных инструментов) |
| Повторяемость | Непостоянная | Абсолютная |
| Реакция на неожиданное | Хорошо | Плохо |
| Усталость и ошибки | Есть | Нет |
5. Когда применять каждый подход?
Важно понять: автоматизация не заменяет ручное тестирование — она его дополняет. Профессиональные команды используют оба подхода вместе.
Ручное тестирование лучше подходит для:
- Проверки внешнего вида (как выглядит страница, удобно ли расположены элементы).
- Изучения нового функционала, который вы видите впервые.
- Так называемого исследовательского тестирования (exploratory testing) — когда тестировщик сам придумывает, что и как проверить, без заготовленного сценария.
- Одноразовых проверок, которые не нужно повторять.
Автоматизированное тестирование лучше подходит для:
- Регрессионного тестирования (regression testing) — это проверка того, что старые функции программы не сломались после того, как в неё внесли изменения. Например, разработчики добавили новую кнопку — нужно убедиться, что старые кнопки всё ещё работают. Такие проверки нужно делать очень часто и быстро.
- Проверок, которые нужно повторять сотни раз (например, проверка работы сайта в разных браузерах).
- Нагрузочного тестирования — когда нужно имитировать тысячи пользователей одновременно.
- Стабильных функций, которые редко меняются.
💡 Правило большого пальца: Если вы будете повторять одну и ту же проверку больше 5–10 раз — задумайтесь об автоматизации.
6. Как «думает» автоматизированный тест? Принцип работы изнутри
Любой автоматизированный тест, независимо от инструмента, работает по одной и той же простой логике:
ДАНО (Given) → начальное состояние: что уже есть
КОГДА (When) → действие: что мы делаем
ТОГДА (Then) → ожидаемый результат: что должно произойти
Этот подход называется Given-When-Then и широко используется в автоматизации.
Пример для нашей формы регистрации:
ДАНО: Открыт сайт example.com, пользователь не зарегистрирован
КОГДА: Пользователь вводит корректные данные и нажимает «Зарегистрироваться»
ТОГДА: На экране появляется сообщение «Регистрация прошла успешно!»
Скрипт, который мы видели выше, — это просто перевод этой логики на язык компьютера. Человек думает словами — компьютер выполняет команды. Суть одна и та же.
Разобранный пример: от тест-кейса к автоматизированному тесту
Рассмотрим конкретный сценарий шаг за шагом.
Задача: Проверить, что на сайте интернет-магазина кнопка «Добавить в корзину» работает корректно.
Шаг 1. Ручной тест-кейс (как думает человек)
Название теста: Добавление товара в корзину
Предусловие: Пользователь открыл страницу товара "Синяя кружка"
Шаги:
1. Нажать кнопку "Добавить в корзину"
2. Нажать на иконку корзины в верхнем правом углу
3. Открылась страница корзины
Ожидаемый результат:
- В корзине отображается "Синяя кружка"
- Количество товаров в корзине: 1
- Итоговая сумма соответствует цене кружки
Шаг 2. Та же проверка в виде автоматизированного теста (псевдокод)
Ниже — псевдокод (pseudocode): это описание логики программы обычными словами, похожими на команды. Это не настоящий код, но очень близко к нему. Используется для объяснения идеи.
// Псевдокод — это не настоящий код, а объяснение логики человеческим языком
ОТКРЫТЬ браузер
ПЕРЕЙТИ на страницу "https://shop.example.com/mugs/blue"
НАЖАТЬ кнопку с текстом "Добавить в корзину"
НАЖАТЬ иконку корзины
ПРОВЕРИТЬ: на странице есть текст "Синяя кружка" → если нет — ТЕСТ ПРОВАЛЕН
ПРОВЕРИТЬ: счётчик товаров равен "1" → если нет — ТЕСТ ПРОВАЛЕН
ПРОВЕРИТЬ: итоговая сумма равна цене кружки → если нет — ТЕСТ ПРОВАЛЕН
ЕСЛИ все проверки пройдены → ТЕСТ УСПЕШЕН
ЗАКРЫТЬ браузер
Шаг 3. Что происходит при запуске теста?
Представьте, что вы нажимаете кнопку «Запустить тесты». Вот что происходит буквально за несколько секунд:
- Компьютер сам открывает браузер (иногда вы даже видите, как он мигает на экране).
- Браузер переходит на нужную страницу.
- Программа «видит» кнопку «Добавить в корзину» и нажимает её.
- Программа переходит в корзину и читает текст на странице.
- Программа сравнивает то, что видит, с тем, что ожидалось.
- Выводит результат: ✅ тест прошёл или ❌ тест упал (нашёл баг).
Весь этот процесс занимает 3–10 секунд. Человеку потребовалось бы 1–2 минуты. Умножьте это на 200 тестов — разница огромна.
Практика
Эти задания не требуют компьютера или специальных программ. Всё, что вам нужно — ручка, бумага и немного воображения.
Задание 1. Найдите отличия: ручное vs. автоматизированное
Прочитайте два описания ниже. Определите, какое из них описывает ручное, а какое — автоматизированное тестирование. Напишите свой ответ и объясните, по каким признакам вы это определили.
Описание А:
Каждое утро, как только разработчики вносят изменения в код, система сама за 15 минут проверяет 300 сценариев работы приложения и отправляет отчёт на почту команде.
Описание Б:
Тестировщик Марина открывает приложение, пробует разные варианты ввода в форму оплаты и записывает в таблицу, что работает, а что нет. Иногда она замечает, что кнопка выглядит не так, как показано в дизайне.
Задание 2. Напишите свой тест-кейс
Выберите любое простое приложение или сайт, которым вы пользуетесь (например, поисковик, мессенджер, интернет-магазин).
Напишите один тест-кейс в следующем формате:
Название теста: [придумайте название]
Предусловие: [что должно быть готово до начала теста]
Шаги:
1. ...
2. ...
3. ...
Ожидаемый результат: [что должно произойти, если всё работает правильно]
Пример для вдохновения: Проверьте функцию поиска товара в интернет-магазине, или отправку сообщения в мессенджере, или вход в аккаунт на любом сайте.
Задание 3. Переведите тест-кейс в формат Given-When-Then
Возьмите тест-кейс, который вы написали в Задании 2, и перепишите его в формате Given-When-Then:
ДАНО (Given): ...
КОГДА (When): ...
ТОГДА (Then): ...
Это упражнение тренирует «автоматизаторское мышление» — умение чётко формулировать условия, действие и ожидаемый результат.
Задание 4. Что автоматизировать, а что — нет?
Перед вами список задач тестировщика в команде, которая разрабатывает мобильное приложение для заказа еды. Для каждого пункта решите: это лучше делать вручную или автоматизировать? Объясните своё решение одним предложением.
| № | Задача |
|---|---|
| 1 | Проверить, что кнопка «Оформить заказ» работает корректно — эту проверку нужно запускать 10 раз в день после каждого обновления кода |
| 2 | Убедиться, что шрифт в приложении выглядит красиво и читаемо на маленьком экране |
| 3 | Проверить, что приложение правильно считает итоговую сумму заказа (сотни разных комбинаций блюд и скидок) |
| 4 | Первый раз изучить новый экран настроек, который только что добавили разработчики |
Итоги урока
- Тестирование — это проверка того, что программа работает правильно и не содержит багов.
- Ручное тестирование выполняет живой человек: он сам нажимает кнопки, читает результаты, делает выводы. Это гибко, но медленно и дорого при повторениях.
- Автоматизированное тестирование выполняет программа-скрипт по заранее написанным инструкциям. Это быстро, точно и дёшево при повторениях, но требует усилий на настройку.
- Любой автоматизированный тест работает по логике Given-When-Then: начальное состояние → действие → ожидаемый результат.
- Автоматизация не заменяет человека — она берёт на себя скучную, повторяющуюся работу, освобождая тестировщика для более творческих задач.
- Регрессионное тестирование (проверка старого функционала после изменений) — один из главных кандидатов на автоматизацию.
- Хорошая команда использует оба подхода в зависимости от ситуации.
🔜 Следующий урок: Мы познакомимся с реальными инструментами автоматизации и посмотрим, как выглядит простейший автоматизированный тест «в живую» — без сложного кода.