← Назад к вопросам

Что такое Null?

2.0 Middle🔥 121 комментариев
#Автоматизация тестирования#Инструменты тестирования#Теория тестирования

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Null?

В программировании null — это специальное значение, которое обозначает отсутствие какого-либо объекта или значения. Это явный указатель на "ничто", "пустоту" или "неопределенность". С точки зрения QA Engineer понимание null критически важно, так как неправильная обработка null-значений является одним из самых распространенных источников ошибок в программном обеспечении.

Основная суть Null

  • Это не данные: Null — это не строка "null", не ноль (0), не пустая строка ("") и не false. Это отдельное значение, означающее "здесь ничего нет".
  • Указатель/ссылка: В языках с ссылочными типами (например, Java, C#, Python — None, JavaScript) null обычно означает, что переменная не ссылается ни на какой объект в памяти.
  • Отсутствие значения: В контексте баз данных NULL в поле означает, что значение для этой записи не предоставлено, неизвестно или неприменимо.

Почему Null важен для тестирования (QA Perspective)

Для QA Engineer null — это мощный инструмент поиска уязвимостей и дефектов.

1. Источники ошибок (NullPointerException / TypeError): Наиболее частая ошибка — попытка вызвать метод или обратиться к свойству у null-объекта.

// Пример на Java
String text = null;
int length = text.length(); // Выбросит NullPointerException
// Пример на JavaScript
let user = null;
console.log(user.name); // TypeError: Cannot read properties of null

2. Обязательные тест-кейсы: Проверка обработки null должна быть частью тестового набора для любого метода, принимающего входные параметры, или для любого API-эндпоинта.

  • Позитивный тест: Что система делает с корректными данными?
  • Негативный/Граничный тест: Что происходит, если передать null? Система должна корректно обработать это: выбросить понятное исключение, вернуть ошибку валидации или использовать значение по умолчанию.

3. Тестирование API: При тестировании REST API или GraphQL необходимо проверять:

  • Можно ли передать null в обязательных (required) полях запроса? (Ожидается ошибка 400).
  • Как сервер возвращает поля со значением null в ответе? Соответствует ли это контракту (Swagger/OpenAPI)?
  • Заменяет ли база данных или бизнес-логика null на значения по умолчанию?

4. Работа с базами данных: Понимание разницы между NULL в SQL и, например, пустой строкой — ключевой навык.

-- Эти условия работают по-разному!
SELECT * FROM users WHERE phone_number = '';
SELECT * FROM users WHERE phone_number IS NULL;

Стратегии обработки Null (на что обращать внимание при тестировании)

Разработчики используют разные подходы, и QA должен понимать, какой из них применен в тестируемой системе:

  • Защитное программирование (Defensive Programming): Проверка на null перед использованием.
    if (object != null) {
        object.doSomething();
    }
    
  • Использование Optional (Java 8+): Явное указание на возможность отсутствия значения.
  • Аннотации (@Nullable, @NonNull): Используются в некоторых языках и фреймворках (например, Lombok) для статического анализа.
  • Возврат значений по умолчанию или пустых коллекций: Вместо null лучше вернуть пустой список Collections.emptyList().
  • Грамотные исключения: Система должна выбрасывать понятные, перехватываемые исключения, а не "падать" с фатальной ошибкой.

Практические рекомендации для QA

  • Всегда включайте null в тестовые данные для параметров методов, полей форм, запросов и ответов API.
  • Проверяйте документацию (контракты): Указано ли в API-контракте, может ли поле быть null?
  • Используйте анализ граничных значений: null — это крайнее значение для многих типов данных.
  • Тестируйте каскадные эффекты: null, переданный в систему, может "всплыть" в другом модуле. Проверяйте интеграционные сценарии.
  • Ведите багу репорты четко: Если нашли ошибку, связанную с null, в отчете явно укажите: "При передаче null в параметр X происходит Y (например, NPE), а ожидается Z (например, валидационная ошибка)".

Вывод: Для QA Engineer null — это не абстрактное понятие, а конкретный и опасный "зверь", которого нужно постоянно провоцировать в тестах. Умение системно находить и проверять сценарии работы с null напрямую влияет на надежность и отказоустойчивость программного продукта. Это фундаментальный навык, отличающий начинающего тестировщика от опытного инженера, мыслящего о качестве на уровне проектирования.

Что такое Null? | PrepBro