Ответ
Ручное тестирование выполняется человеком без использования скриптов. Автоматизированное тестирование выполняется специальными программами (скриптами) с минимальным вмешательством человека.
| Аспект | Ручное тестирование | Автоматизированное тестирование |
|---|---|---|
| Исполнитель | Тестировщик. | Скрипт/инструмент (Selenium, Cypress, pytest). |
| Скорость | Медленнее для повторяющихся задач. | Быстрее для выполнения и перезапуска тестов. |
| Первоначальные затраты | Низкие. | Высокие (написание и поддержка скриптов). |
| Надежность | Зависит от внимательности человека. | Стабильна при корректных скриптах. |
| Лучшее применение | Exploratory-тестирование, usability-тесты, Ad-hoc, тестирование UI/UX. | Регрессионное, нагрузочное, повторяющиеся сценарии, тестирование API. |
Пример автоматизированного теста на Python с Selenium WebDriver:
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
@pytest.fixture
def browser():
driver = webdriver.Chrome()
yield driver
driver.quit()
def test_search_functionality(browser):
# 1. Открыть сайт
browser.get("https://www.example.com")
# 2. Найти поле поиска и ввести запрос
search_box = browser.find_element(By.NAME, "q")
search_box.send_keys("automated testing")
search_box.submit()
# 3. Проверить, что результаты найдены
results = browser.find_elements(By.CSS_SELECTOR, "div.g")
assert len(results) > 0
# 4. Проверить наличие ожидаемого текста в результатах
assert "automated testing" in browser.page_source
Ключевой вывод: Автоматизация не заменяет ручное тестирование, а дополняет его. Автоматизируйте стабильные, повторяющиеся сценарии, а исследовательское и usability-тестирование оставляйте людям.
Ответ 18+ 🔞
А, ну вот, опять про эту дихотомию, блядь, ручное против автоматического! Слушай, как будто мы на войне, а не софт тестируем. Ёпта, давайте разберём эту пизду, но по-человечески.
Смотри, есть два пути, как заставить эту штуку работать. Первый — это ты сам, со своими глазами, руками и, главное, с мозгом, который может в любой момент нахуй послать сценарий и полезть туда, куда его не звали. Это ручное тестирование. Ты как обезьяна с гранатой, только граната — это баг-репорт, а обезьяна — это ты, сука, умный и любопытный.
Второй путь — это когда ты эту обезьяну пытаешься заменить роботом. Называется автоматизированное тестирование. Ты пишешь скрипт, этот скрипт — тупой как пробка, но быстрый и неутомимый. Он будет долбить одно и то же действие десять тысяч раз, и ему не надоест. Но если что-то пойдёт не по плану, он просто сломается и будет молча смотреть в потолок, как манда с ушами.
Вот тебе табличка, чтобы не путаться, а то голова уже болит:
| О чём речь | Ручное (человек) | Автоматическое (робот) |
|---|---|---|
| Кто делает | Ты, тестировщик, герой. | Скрипт (Selenium, Cypress, pytest — не важно, всё равно тупой). |
| Скорость | Для повторок — медленно, как черепаха в сиропе. | Для повторок — быстро, как хуй с горы. |
| Сколько стоит сначала | Почти ничего, сел и пошёл кликать. | Овердохуища времени и сил на написание. |
| Надёжность | Как повезёт. Зависит от того, выспался ли ты. | Как повезёт. Зависит от того, не сломал ли кто твой селектор. |
| Где лучше | Где надо думать, исследовать, чувствовать интерфейс. | Где надо долбить одно и то же: регресс, нагрузка, API. |
А теперь смотри, как этот робот выглядит в коде. Не пугайся, это просто пример, блядь:
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
@pytest.fixture
def browser():
driver = webdriver.Chrome()
yield driver
driver.quit()
def test_search_functionality(browser):
# 1. Открыть сайт
browser.get("https://www.example.com")
# 2. Найти поле поиска и ввести запрос
search_box = browser.find_element(By.NAME, "q")
search_box.send_keys("automated testing")
search_box.submit()
# 3. Проверить, что результаты найдены
results = browser.find_elements(By.CSS_SELECTOR, "div.g")
assert len(results) > 0
# 4. Проверить наличие ожидаемого текста в результатах
assert "automated testing" in browser.page_source
Видишь? Всё чётко, по шагам. Но если дизайнер возьмёт и переименует класс с "div.g" на "div.pizdets", то этот тест накроется медным тазом, и робот даже не пикнет, просто упадёт. А ты, живой человек, посмотрел бы и сказал: «Э, бошка, думай! Да тут же кнопка теперь зелёная!».
Так что главный вывод, ёпта: Автоматизация — это не священная корова, а просто инструмент. Не пытайся автоматизировать всё подряд, это путь в ад и бесконечную поддержку скриптов. Автоматизируй то, что стабильно и повторяется до тошноты. А всё, что требует ума, чутья и внезапных «а дай-ка я ткну сюда» — оставь себе, живому. Иначе заебёшься, в рот меня чих-пых.