🚨 Yaygın Java QA Hataları
Yaygın Java QA Hataları: Java'nın stack trace'i, hatanın nerede doğduğunu en üstte, oraya nasıl gelindiğini ise satır satır aşağıda gösteren bir "olay yeri zaman çizelgesi" gibid
Java'nın stack trace'i, hatanın nerede doğduğunu en üstte, oraya nasıl gelindiğini ise satır satır aşağıda gösteren bir "olay yeri zaman çizelgesi" gibidir — tıpkı bir doktorun ateş+öksürük+yorgunluk imzasından enfeksiyonu teşhis etmesi gibi: `NullPointerException` mı `ClassCastException` mı, imza sana kök nedeni söyler. Peki hata zaten "bir şeyler patladı" diyorken neden stack trace'i satır satır okumak gerekiyor? Çünkü çoğu bug, mesajın işaret ettiği satırda değil, ona veri gönderen bir üst çağrıda saklıdır; imzayı tanımadan yanlış yeri düzeltirsin. Python'ın traceback'i benzer çalışır ama en son çağrıyı en altta gösterir; Java tersine en üstte verir, bu yön farkını bilmek okumayı hızlandırır. QA mühendisi için bu beceri kritiktir: CI'da kırmızı olan bir testin log'unda doğru imzayı okuyabilirsen, saatlerce yanlış locator'la uğraşmak yerine gerçek kök nedeni dakikalar içinde bulur ve flaky mi gerçek bug mı olduğunu ayırt edersin.
1. NoSuchElementException
Element DOM'da yok, yanlış locator, sayfa yüklenmemiş veya iframe içinde.
Micro Lab: Kod yazma
TODO satirini beklenen cozumdeki kritik satirla degistir. Bu gercek runtime degil; amac dogru yapinin yazilmasini kontrollu olarak pekistirmek.
WebDriverWait Neden findElement() Yerine elementToBeClickable Bekler?
Ham `driver.findElement(By.id("loginBtn"))` sayfa HENÜZ tam yüklenmediyse elementi bulamaz ve anında `NoSuchElementException` fırlatır.
new WebDriverWait(driver…
`new WebDriverWait(driver, Duration.ofSeconds(10))` bir "en fazla 10 saniye bekle" SÖZLEŞMESİ kurar — anında pes etmez, ama sonsuza kadar da beklemez.
`ExpectedConditions.elementToBeClickable(...)` sadece elementin DOM'da olmasını değil, GÖRÜNÜR ve TIKLANABİLİR olmasını da kontrol eder — `findElement` bunların hiçbirini garantilemez.
Koşul sağlanınca .click() ZİNCİRLEME çağrılır…
Koşul sağlanınca `.click()` ZİNCİRLEME çağrılır — element hazır olur olmaz, ekstra bekleme kodu yazmadan tıklama gerçekleşir.
2. StaleElementReferenceException
Elementi bulduktan sonra sayfa refresh oldu veya DOM güncellendi — referans geçersiz.