Какие проверки нужно сделать для поля ввода: пустое значение, корректное и некорректное имя, спецсимволы, длинное имя, минимальная длина?
Что проверяют
Умеете ли вы из списка «пустое, корректное, длинное» собрать систему: классы эквивалентности и граничные значения, а не десяток случайных примеров. Следом часто спрашивают, какие имена вы считаете корректными и почему «только буквы» плохое требование.
Как отвечать
Сначала попросите требования: допустимые символы, минимум и максимум длины, обрезаются ли пробелы. Без них вы тестируете свои догадки. Дальше по пунктам:
- пустое значение: пустая строка, строка из одних пробелов, табуляция. Все варианты дают одну и ту же ошибку, а не проходят как «непустые»;
- корректное имя: кириллица и латиница, буква «ё», двойные имена через дефис (
Анна-Мария), апостроф (O'Connor), пробел внутри (Мария Луиза), если требования это разрешают; - некорректное имя: цифры, одни знаки препинания, дефис в начале или в конце;
- спецсимволы:
<script>alert(1)</script>проверяет, что имя не исполняется при выводе на других страницах, кавычки и%проверяют экранирование на сервере, эмодзи и составные символы проверяют кодировку при сохранении; - минимальная длина: при минимуме 2 символа проверяются 1, 2 и 3;
- длинное имя: при максимуме 50 проверяются 49, 50 и 51, плюс вставка 500 символов из буфера. Отдельно посмотрите, как длинное имя выглядит в шапке профиля и в письме.
Добавьте, что каждую проверку стоит повторить через API: клиентская валидация не защищает базу.
Где спотыкаются
Требуют «только буквы» и тем самым отклоняют реальных людей с дефисом или апострофом в имени. Лучше сказать, что это вопрос к аналитику, а не очевидная норма.
Проверяют только само значение 50, без 49 и 51. Граница тестируется с обеих сторон, иначе путаница «меньше» и «меньше или равно» останется незамеченной.
Не учитывают, как считается длина. Эмодзи в JavaScript часто занимает две единицы length и больше, а атрибут maxlength молча обрезает вставленный текст, и пользователь не видит, что имя сохранилось не целиком.