Tüm yazılar
test-automation

TestFly Bölüm 10: E-Posta ve 2FA Doğrulama Testleri — Mailhog ve Mailtrap

TestFly dahili Mailhog, Mailtrap ve IMAP istemcileriyle kullanıcı kayıt, şifre sıfırlama ve 2FA e-posta doğrulama akışlarını Java'da otomatize edin.

10 Eylül 20262 dk okuma
TestFly Bölüm 10: E-Posta ve 2FA Doğrulama Testleri — Mailhog ve Mailtrap

Özet: Kullanıcı kaydı, şifre sıfırlama ve iki faktörlü kimlik doğrulama (2FA) süreçleri uçtan uca testlerin en sık tıkandığı alanlardır. TestFly; Mailhog, Mailtrap, Outlook Graph ve genel IMAP protokollerini dahili olarak destekleyerek gelen kutusunu otomatik sorgulama, regex ile OTP kodlarını ayıklama ve doğrulama linklerine tıklama işlemlerini tek satıra indirir.


E-Posta Doğrulaması Neden E2E Testlerin En Büyük Tıkanma Noktasıdır?

Hemen hemen her modern web uygulamasında kayıt olurken veya hassas işlemlerde e-posta onayı zorunludur. Geleneksel otomasyon projelerinde bu durum şu zorlukları yaratır:

  • Gerçek e-posta sağlayıcıları (Gmail, Outlook) bot korumaları, CAPTCHA ve istek sınırları koyar.
  • Ekipler çoğu zaman test ortamlarında e-posta doğrulamasını kapatır; bu da canlı ortamda kritik güvenlik açıklarının ve regresyonların gözden kaçmasına yol açar.
  • Harici kütüphaneler karmaşık MIME ayrıştırma kodları ve manuel Thread.sleep() döngüleri gerektirir.

TestFly, BaseTest üzerinden doğrudan erişilebilen email() yardımcı motoruyla bu karmaşıklığı ortadan kaldırır.


TestFly E-Posta Sunucusuna Nasıl Bağlanır?

testfly.yml dosyasına ekleyeceğiniz tek bir blokla sağlayıcınızı tanımlayabilirsiniz:

yaml
email:
  provider: mailhog # mailhog, mailtrap, outlook, imap
  host: localhost
  port: 8025
  pollIntervalSeconds: 2
  timeoutSeconds: 30

2FA / OTP Doğrulama Senaryosu Nasıl Yazılır?

Aşağıdaki örnekte kullanıcı arayüzünde kayıt formunu dolduran, gelen kutusunu dinleyen, 6 haneli doğrulama kodunu alan ve tarayıcıya girerek işlemi tamamlayan senaryo gösterilmektedir:

java
package io.testfly.examples.email;

import io.testfly.email.EmailMessage;
import io.testfly.test.BaseTest;
import org.testng.annotations.Test;

public class EpostaDogrulamaTesti extends BaseTest {

    @Test
    public void kullaniciKaydiVeIkiFaktorluDogrulama() {
        String testEpostasi = "test_" + System.currentTimeMillis() + "@testfly.local";

        // 1. Kayıt formunu doldur
        open("/register");
        find("#email-input").type(testEpostasi);
        find("#submit-btn").click();

        // 2. Gelen doğrulama e-postasını bekle
        EmailMessage eposta = email().waitForMessage(sorgu -> 
            sorgu.to(testEpostasi).subjectContains("TestFly Hoş Geldiniz")
        );

        // 3. Regex ile 6 haneli OTP kodunu ayrıştır
        String otpKodu = eposta.extractRegex("Doğrulama kodunuz: (\\d{6})");

        // 4. Kodu tarayıcıya gir ve doğrula
        find("#otp-input").type(otpKodu);
        find("#verify-btn").click();

        assertThat(find("#welcome-banner")).isVisible();
    }
}

Hangi E-Posta Sağlayıcıları Desteklenir?

SağlayıcıProtokolKullanım Alanı
MailhogHTTP REST APILokal Docker ortamları, CI/CD pipeline'ları
MailtrapREST API & SMTPStaging ve paylaşımlı test ortamları
Outlook GraphMicrosoft Graph APIKurumsal Office 365 e-posta hesapları
Genel IMAPSSL/TLS IMAPÖzel şirket içi e-posta sunucuları

SSS

TestFly gelen kutusunu asenkron olarak bekler mi?

Evet. email().waitForMessage() metodu, aranan kriterlere uyan e-posta gelene kadar arka planda asenkron sorgulama yapar ve zaman aşımı durumunda bilgilendirici hata üretir.

E-posta içindeki onay butonuna doğrudan tıklanabilir mi?

Evet. eposta.extractLink("Hesabımı Onayla") metodu HTML içindeki linki otomatik yakalar ve open(link) ile doğrudan sayfaya gidilebilir.

Dinamik e-posta takma adları (alias) kullanılabilir mi?

Evet. kullanici+test1234@alanadi.com gibi dinamik adresler üretilip sorgu.to(...) filtresi ile tekilleştirilebilir.

#TestFly#Email Testing#Mailhog#Mailtrap#2FA#Java#SDET
Paylaş X LinkedIn

Yorumlar

  • Henüz yorum yok. İlk yorumu sen yaz.