Ответ
Да, в проектах, где использовались 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-автотестов.