Ответ
В JavaScript доступны следующие конструкции циклов, которые часто используются в тестовых скриптах (например, для обработки массивов данных или обхода DOM-элементов):
-
for— классический цикл с счётчиком. Идеален, когда известно количество итераций.// Пример: Запуск теста для каждого из 5 пользователей const testUsers = ['user1', 'user2', 'user3', 'user4', 'user5']; for (let i = 0; i < testUsers.length; i++) { console.log(`Запускаю тест для пользователя: ${testUsers[i]}`); // Здесь может быть вызов тестовой функции } -
while— выполняет блок кода, пока условие истинно. Полезен при ожидании какого-либо условия (например, появления элемента на странице).// Пример: Ожидание появления элемента (упрощённо, без таймаута) let elementFound = false; let attempts = 0; while (!elementFound && attempts < 10) { elementFound = document.querySelector('.loading-indicator') === null; attempts++; // На практике здесь нужна пауза } -
do...while— гарантирует выполнение тела цикла хотя бы один раз перед проверкой условия.// Пример: Запуск минимум одного теста, даже если флаг изначально false let shouldRetry = false; do { console.log('Выполняю попытку подключения к тестовой БД...'); shouldRetry = !checkDatabaseConnection(); // Функция возвращает true/false } while (shouldRetry); -
for...in— перебирает перечисляемые свойства объекта. В контексте тестирования может использоваться для обхода конфигурационных объектов.// Пример: Проверка всех полей в объекте конфигурации теста const testConfig = { env: 'staging', headless: true, timeout: 30000 }; for (const key in testConfig) { console.log(`Параметр ${key} имеет значение: ${testConfig[key]}`); } -
for...of— перебирает итерируемые объекты (массивы, строки, Map, Set). Самый частый выбор для работы с коллекциями данных в тестах.// Пример: Обработка массива результатов тестов const testResults = [true, false, true, true]; for (const result of testResults) { if (!result) { console.error('Обнаружен упавший тест!'); } }
Для QA-инженера наиболее полезны for и for...of для работы с наборами тестовых данных, а while — для реализации различных ожиданий в автоматизированных сценариях.