Как проверить пробелы в полях?
Что проверяют
Знаете ли вы, что «пробел» это целое семейство символов, и понимаете ли, что правило обработки задаёт требование, а не тестировщик. Следом обычно спрашивают, как убедиться, что обрезка работает не только в интерфейсе, но и на сервере.
Как отвечать
Начните с требования: пробелы по краям обрезаются молча, запрещаются с ошибкой или сохраняются как есть. Для разных полей ответ разный: имя обрезать можно, а пароль трогать нельзя вообще.
Дальше набор проверок:
- только пробелы: обязательное поле из одних пробелов должно считаться пустым;
- по краям:
" Иван "сохраняется как"Иван"или отклоняется, и это видно не только на экране, но и в базе, и в ответе API; - внутри: двойной пробел между словами, пробел в email или телефоне, где он недопустим;
- другие символы: табуляция, перевод строки, неразрывный пробел
\u00A0, пробел нулевой ширины\u200B. Функции обрезки в разных языках убирают разный набор:String.trim()в Java не трогает неразрывный пробел, а\u200Bстандартные функции обычно не убирают; - длина: учитываются ли пробелы в
maxlengthи в лимитах сервера; - уникальность:
"admin"и"admin "не должны стать двумя разными логинами.
Сервер проверяйте в обход формы: тот же запрос через Postman или curl, потому что обрезка на фронте ничего не гарантирует. Вставку из буфера обмена стоит проверить отдельно: скопированный текст часто приносит невидимые символы.
В автотесте на Selenium не ограничивайтесь сообщением об ошибке. Проверьте сохранённое значение через API или через get_attribute("value") после перезагрузки страницы.
Где спотыкаются
Проверяют только обычный пробел U+0020. Неразрывный пробел из вставленного текста проходит валидацию, а потом ломает поиск и сравнение.
Требуют обрезать всё подряд, включая пароль. Пароль с пробелом на конце должен приниматься ровно в том виде, в каком его ввели.
Верят интерфейсу: раз форма обрезала, значит и сервер обрезает. Запрос в обход формы часто показывает обратное.