Как вы тестируете данные, представленные в виде коллекций (массивы, списки, словари)?

«Как вы тестируете данные, представленные в виде коллекций (массивы, списки, словари)?» — вопрос из категории Основы программирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Тестирование коллекций — базовая и частая задача. Вот ключевые аспекты и примеры на Python:

1. Проверка структуры и размера:

assert isinstance(response_json['items'], list), "Ответ должен быть списком"
assert len(users) == expected_count, f"Ожидалось {expected_count} пользователей"

2. Проверка содержимого и уникальности:

# Все элементы соответствуют условию
assert all(user['isActive'] for user in users), "Не все пользователи активны"
# Все ID уникальны
user_ids = [user['id'] for user in users]
assert len(set(user_ids)) == len(user_ids), "Найдены дубликаты ID"

3. Проверка сортировки и фильтрации:

# Данные возвращены в заявленном порядке (например, по дате)
dates = [item['createdAt'] for item in items]
assert dates == sorted(dates, reverse=True), "Сортировка по дате нарушена"

# Фильтрация работает корректно
admins = [user for user in users if user['role'] == 'admin']
assert len(admins) > 0, "Должен быть хотя бы один администратор"

4. Работа со словарями (объектами):

# Проверка наличия обязательных ключей
required_keys = {'id', 'name', 'email'}
assert required_keys.issubset(profile.keys()), "Отсутствуют обязательные поля"
# Проверка формата значений
import re
assert re.match(r'^[^@]+@[^@]+.[^@]+$', profile['email']), "Неверный формат email"

Почему это важно: Систематические проверки коллекций предотвращают ошибки в логике отображения, пагинации, фильтрации и сортировки данных.