Осуществлял ли загрузку файлов в процессе тестирования?

«Осуществлял ли загрузку файлов в процессе тестирования?» — вопрос из категории Веб-тестирование, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, тестирование функционала загрузки файлов — это частая задача. Я тестировал его как вручную, так и с помощью автоматизации.

Ручное тестирование:

  • Проверял загрузку файлов разных типов (изображения, PDF, документы) и размеров.
  • Тестировал валидацию на стороне клиента и сервера (ограничения по размеру, типу).
  • Проверял поведение при попытке загрузить файл с запрещенным расширением или вирус (эмулируя).
  • Отрабатывал сценарии с прерыванием загрузки, повторной загрузкой файла с тем же именем.
  • Проверял отображение прогресса загрузки и сообщений об ошибках/успехе.

Автоматизация (на примере Selenium WebDriver + Java):

// Находим элемент input типа file
WebElement fileInput = driver.findElement(By.cssSelector("input[type='file']"));

// Передаем абсолютный путь к файлу
String filePath = "/Users/test/data/test_image.jpg";
fileInput.sendKeys(filePath);

// Далее можно проверить, что файл загрузился
WebElement successMessage = wait.until(
    ExpectedConditions.visibilityOfElementLocated(By.id("upload-success"))
);
assertTrue(successMessage.isDisplayed());

Особенности и подводные камни:

  • Для скрытых элементов (display: none) sendKeys() может не сработать. Иногда приходится использовать JavaScript для изменения видимости элемента.
  • В headless-режиме (Chrome/Firefox) загрузка файлов работает, но требует правильной настройки.
  • Для тестирования drag-and-drop загрузки использовал Actions API Selenium или, чаще, напрямую sendKeys() к элементу-приемнику.
  • Также тестировал API для загрузки файлов через multipart/form-data запросы, используя инструменты вроде Postman или библиотеки (RestAssured в Java, requests в Python).