Какие категории и типы данных существуют
Что проверяют
Для тестировщика это вопрос не про теорию языков, а про то, как тип и категория данных превращаются в тест-кейсы. Интервьюер хочет услышать, что для каждого типа вы знаете свои границы и ловушки. Следом обычно дают поле, например «возраст» или «сумма перевода», и просят набросать проверки.
Как отвечать
Разведите два измерения. Первое, типы данных и что для них проверять:
- целые числа: ноль, отрицательные, границы диапазона (для 32-битного знакового это
2147483647), значение за границей, дробное вместо целого; - числа с плавающей точкой: точность (
0.1 + 0.2не равно0.3) и округление, поэтому деньги хранят вdecimalили в копейках; - строки: пустая, из пробелов, максимальная длина и на символ больше, кириллица, эмодзи, спецсимволы, HTML и SQL-фрагменты для проверки экранирования;
- логический тип: кроме
trueиfalseпочти всегда есть третье состояние,nullили отсутствующее поле; - дата и время: часовые пояса, 29 февраля, переход через полночь и конец месяца, формат ввода;
- составные: массивы и объекты в API, пустой массив,
nullвместо массива, лишние и отсутствующие поля,"1"вместо1в JSON.
Второе, категории тестовых данных: валидные и невалидные, граничные значения, классы эквивалентности, статические справочники и динамические данные, которые меняет сама система. Скажите и про источник: синтетические данные из фикстур или Faker и копии продакшена, которые без обезличивания брать нельзя из-за 152-ФЗ о персональных данных.
Если собеседование по автотестам на конкретном языке, назовите и его деление. В Go, например, это базовые типы, составные (массивы, структуры), ссылочные (срезы, map, каналы, указатели) и интерфейсы.
Где спотыкаются
Перечисляют типы как на уроке информатики и не связывают их с проверками. Интервьюеру нужен переход «тип, значит такие границы, значит такие кейсы».
Забывают про null и отсутствие поля. В API это два разных случая, и сервер часто обрабатывает их по-разному.
Сравнивают дробные суммы на точное равенство. Такой тест падает на корректном расчёте, для сравнения нужен допуск или десятичный тип.