Работали ли вы с NoSQL базами данных в рамках тестирования?

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

Ответ

Да, в проектах, где использовались NoSQL БД, мои задачи как QA-инженера включали их тестирование. Основной опыт — с MongoDB (документо-ориентированная) и Redis (ключ-значение кэш).

Тестирование MongoDB:

  • Целостность данных: Проверял, что документы сохраняются с правильной структурой после операций CRUD.
  • Запросы и агрегации: Валидировал корректность работы сложных агрегационных пайплайнов.
  • Производительность: Оценивал время отклика на запросы при разной нагрузке.

Пример интеграционного теста (Java + TestNG):

@Test
public void testUserDocumentCreation() {
    // Подключение к тестовой коллекции
    MongoCollection<Document> users = mongoDatabase.getCollection("users");

    // 1. Подготовка тестовых данных
    Document testUser = new Document("_id", new ObjectId())
            .append("username", "test_qa")
            .append("email", "qa@example.com")
            .append("active", true);

    // 2. Действие: вставка документа
    users.insertOne(testUser);

    // 3. Проверка: извлечение и валидация
    Document foundUser = users.find(Filters.eq("username", "test_qa")).first();

    assertNotNull(foundUser, "Документ пользователя должен быть найден");
    assertEquals("qa@example.com", foundUser.getString("email"), "Email не совпадает");
    assertTrue(foundUser.getBoolean("active"), "Пользователь должен быть активен");

    // 4. Очистка тестовых данных
    users.deleteOne(Filters.eq("_id", testUser.getObjectId("_id")));
}

Тестирование Redis: Фокусировался на корректности кэширования (TTL, инвалидация), а также на тестах на скорость чтения/записи. Использовал библиотеку Jedis или Lettuce для Java-автотестов.