Karar Yapıları & Döngüler
Karar Yapıları & Döngüler: for Döngüsü — i Sayacı Adım Adım Artar Karar yapıları ve döngüler, otomasyon kodunun trafik ışıkları ve kavşak yönlendirme sistemleridir: `if/else` kav
for Döngüsü — i Sayacı Adım Adım Artar
Karar yapıları ve döngüler, otomasyon kodunun trafik ışıkları ve kavşak yönlendirme sistemleridir: `if/else` kavşakta hangi yola gidileceğini belirler, döngüler (`for`, `while`, `for...of`) aynı yolu defalarca tekrar etmeyi sağlar. Peki neden JavaScript'te `for`, `for...of`, `for...in` ve `forEach()` gibi birden fazla döngü türü var? Her biri farklı bir senaryo için optimize edilmiştir: klasik `for` dizin kontrolü gerektiğinde, `for...of` iterable değerleri sırayla işlerken, `for...in` nesne anahtarlarını (key) iterate eder, `forEach()` ise yan etki için kullanılır. Java'daki karşılıklar: klasik `for`, enhanced `for-each`, `Iterator`. QA'da sık görülen senaryo: `for...of` ile bir sayfadaki tüm tablo satırlarını taramak: `for (const row of await page.locator('tr').all()) { ... }` — her satır için assertion çalıştırırsın.
if / else if / else & Ternary Operatör
Koşul Yapıları Karşılaştırması
// ─── if / else if / else ───────────────────────────────────── let score = 75; if (score >= 90) { console.log("✅ Üst Düzey"); } else if (score >= 60) { console.log("⚠️ Orta Düzey"); // Bu çalışır } else { console.log("❌ Başarısız"); } // ─── Ternary Operatör ───────────────────────────────────────── // Kısa if/else — Java ile birebir aynı sözdizimi let status = score >= 60 ? "passed" : "failed"; console.log("Test Durumu:", status); // "passed" // ─── switch / case ──────────────────────────────────────────── let browser = "chromium"; switch (browser) { case "chromium": console.log("Chrome Driver yükleniyor..."); break; // break yoksa bir sonraki case'e düşer (fall-through)! case "firefox": console.log("Firefox Driver yükleniyor..."); break; case "webkit": console.log("Safari Driver yükleniyor..."); break; default: console.log("Bilinmeyen tarayıcı!"); }
Micro Lab: JavaScript QA kod yazma
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
Tüm Döngü Türleri — Karşılaştırma
for...of ve for...in — Otomasyon Kullanımı
const testResults = [ { id: 1, name: "Login Test", status: "passed" }, { id: 2, name: "Payment Test", status: "failed" }, { id: 3, name: "Signup Test", status: "passed" } ]; // for...of — Array değerleri üzerinde dön (Java'daki enhanced for gibi) for (const test of testResults) { const icon = test.status === "passed" ? "✅" : "❌"; console.log(`${icon} ${test.name}`); } // for...in — Nesne key'leri üzerinde dön const apiResponse = { statusCode: 200, message: "OK", data: [] }; for (const key in apiResponse) { console.log(`${key}: ${apiResponse[key]}`); } // while — Polling (element görünene kadar bekle simülasyonu) let retryCount = 0; while (retryCount < 3) { console.log(`Deneme ${retryCount + 1}: Element aranıyor...`); retryCount++; }
Adim Adim: JavaScript QA kod yazma
Amaci ve asenkron bagimliliklari oku
await / Promise zincirini dogru yere yerlestir
assertion veya beklenti satirini tamamla