Какие примитивные типы данных существуют в языках программирования и почему это важно для тестировщика?

«Какие примитивные типы данных существуют в языках программирования и почему это важно для тестировщика?» — вопрос из категории Основы тестирования, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Понимание примитивных типов данных критически важно для тестировщика при:

  • Написании автотестов
  • Анализе логов
  • Воспроизведении багов
  • Работе с БД и API

Основные примитивные типы в Java (которую часто используют в автотестах):

// 1. Целочисленные (проверяю граничные значения)
byte smallNumber = 127;        // max value
short mediumNumber = 32767;    // max value
int age = 30;                  // самый используемый
long bigNumber = 1000000000L;  // с суффиксом L

// 2. С плавающей точкой (осторожно с сравнением!)
float price = 19.99f;          // с суффиксом f
double preciseValue = 19.999999;

// 3. Символьный
char grade = 'A';
char unicodeChar = 'u0041';   // тоже 'A'

// 4. Логический
boolean isActive = true;
boolean hasPermission = false;

Почему это важно в тестировании:

  1. Граничные значения:

    // Тестирование границ для byte
    @Test
    public void testByteBoundaries() {
    byte max = 127;
    byte min = -128;
    // Проверяю обработку overflow
    calculator.add(max, 1); // Ожидаю исключение или wrap-around
    }
  2. Точность чисел с плавающей точкой:

    
    // НЕПРАВИЛЬНО для сравнения float/double
    float a = 0.1f + 0.2f;
    assert a == 0.3f; // Может упасть!

// ПРАВИЛЬНО float epsilon = 0.0001f; assert Math.abs(a - 0.3f) < epsilon;


3. **Преобразования типов (важно при анализе багов):**
```java
int intValue = 100;
double doubleValue = intValue; // Автоматическое преобразование

// Потеря точности:
double d = 100.7;
int i = (int) d; // i = 100 (дробная часть отбрасывается)
  1. Работа с API:

    // При тестировании API проверяю корректную сериализацию:
    // JSON: {"age": 30} - число, а не строка
    // JSON: {"isActive": true} - boolean, а не строка "true"
  2. Тестирование БД:

    • Проверяю соответствие типов полей БД и типов в приложении
    • Тестирую вставку максимальных/минимальных значений

В других языках (используемых в тестировании):

  • Python: int, float, bool, str (в Python строка не примитив, но ведет себя похоже)
  • JavaScript: number, boolean, string, null, undefined, symbol
  • SQL: INTEGER, DECIMAL, BOOLEAN, VARCHAR и т.д.

Понимание типов данных помогает писать более надежные тесты и точно описывать баги.