На что вы обращаете внимание при тестировании поля ввода на веб-сайте?

«На что вы обращаете внимание при тестировании поля ввода на веб-сайте?» — вопрос из категории Веб-тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Тестирование поля ввода на веб-сайте фокусируется на взаимодействии с браузером, клиент-серверном обмене и специфических веб-угрозах.

Ключевые аспекты для проверки:

  1. Клиентская валидация (JavaScript)

    • Мгновенная проверка формата при вводе (onInput) или при потере фокуса (onBlur).
    • Блокировка отправки формы при наличии ошибок.
  2. Серверная валидация (Обязательная проверка!)

    • Все данные, отправленные на сервер (например, через fetch или XMLHttpRequest), должны повторно валидироваться.
    • Проверка обхода клиентской валидации (отключение JS, модификация запроса через Burp Suite/DevTools).
  3. Безопасность (Веб-специфичные атаки)

    • XSS (Межсайтовый скриптинг): Попытка ввода <script>, <img src=x onerror=alert(1)>.
    • SQL-инъекция: Ввод ' OR 1=1 -- в поля, связанные с БД.
    • HTML-инъекция: Ввод тегов, которые могут сломать верстку (<div>, <b>).
  4. Интеграция с браузером

    • Автозаполнение сохраненных логинов/парлей.
    • Вставка из буфера обмена, в том числе форматированного текста.
    • Состояние поля при использовании кнопок "Назад"/"Вперед" в браузере.
  5. Производительность и UX

    • Троттлинг (throttling) и дебаунсинг (debouncing) для полей с автодополнением (поиск). Проверка, что не отправляется запрос на каждый нажатый символ.
    • Адаптивный дизайн: Корректное отображение и работа на мобильных устройствах (виртуальная клавиатура).

Пример проверки максимальной длины через консоль браузера:

// Находим поле ввода
const inputField = document.querySelector('input[name="username"]');

// Устанавливаем атрибут maxlength (если он есть) и пробуем превысить его
const maxLength = inputField.maxLength; // например, 50
const testString = 'a'.repeat(maxLength + 5); // Строка длиннее лимита

inputField.value = testString;
console.log(`Установлено символов: ${testString.length}`);
console.log(`В поле фактически: ${inputField.value.length}`);

// Проверяем, обрезался ли ввод или браузер не дал ввести больше
if (inputField.value.length <= maxLength) {
    console.log('✅ Ограничение maxlength работает.');
} else {
    console.error('❌ Ограничение maxlength не работает или отсутствует!');
}

Важно: Любая клиентская проверка — это удобство для пользователя, но не гарантия безопасности. Основная валидация должна выполняться на сервере.