Для решения каких задач применяешь коллекции в контексте тестирования?

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

Ответ

В автотестах на Java коллекции — это основной инструмент для работы с данными, ожидаемыми результатами и группами объектов. Вот типичные сценарии использования:

  1. Хранение и сравнение наборов данных. Часто нужно сравнить список элементов, полученный из UI или API, с ожидаемым списком.

    // Ожидаемые категории товаров
    List<String> expectedCategories = Arrays.asList("Электроника", "Одежда", "Книги");
    // Фактические категории, полученные, например, парсингом страницы
    List<String> actualCategories = productPage.getCategoryNames();
    assertThat(actualCategories).containsExactlyElementsOf(expectedCategories);
  2. Проверка уникальности. Использую Set для проверки, что в выпадающем списке или таблице нет дубликатов.

    Set<String> uniqueStatuses = new HashSet<>(apiResponse.getOrderStatuses());
    assertEquals(apiResponse.getOrderStatuses().size(), uniqueStatuses.size()); // Проверка на дубли
  3. Работа с тестовыми данными (Data Provider). В TestNG @DataProvider часто возвращает коллекцию массивов объектов для параметризации.

    @DataProvider
    public Object[][] userCredentials() {
        return new Object[][] {
            {"user1", "pass1"},
            {"user2", "pass2"}
        };
    }
  4. Группировка объектов для проверок. Например, Map<String, List<Product>> для группировки товаров по категориям перед сложной проверкой.

  5. Имитация очереди (Queue) в нагрузочных тестах или тестах, моделирующих последовательную обработку заявок.

Коллекции из java.util.concurrent (например, ConcurrentHashMap) могут понадобиться при написании многопоточных тестов или утилит для тестирования.