Konu tarihi:
E-posta bildirimlerinin test edilmesinin otomatikleşmesi, bildirim sistemlerinin (örneğin kayıt, şifre değişikliği, hatırlatmalar) gelişimi ile önem kazanmıştır. Başlangıçta bu testler manuel olarak yapılır ve gerçek posta üzerinden kontrol edilirdi (bu CI/CD'de son derece etkisiz ve güvensizdir). Daha sonra otomasyonu mümkün ve güvenli hale getiren özel araçlar (MailHog, Mailtrap, sahte SMTP sunucuları) ortaya çıktı.
Sorun:
Ana zorluklar, e-postanın sistemden "dışarıya" gönderilmesiyle bağlantılıdır; bu nedenle: a) gönderimi yakalamak, b) e-postanın içeriğinden emin olmak, c) gönderim doğruluğunu kontrol etmek (başlık formatı, eklerin varlığı, bağlantılar, i18n, sistem olaylarıyla olan ilişkilerin doğruluğu) gerekmektedir. Teslimat hızı, testler arasında kutuları temizleme ve SMTP hatalarının işlenmesi gibi ek zorluklar da vardır.
Çözüm:
E-posta yakalama hizmetlerini kullanmak: Mailtrap, MailHog veya gerçek e-postaya iletmeyen, test "sepetinde" tutan entegre sahte SMTP sunucuları.
Bu araçlarla çalışmayı API çerçevesi veya REST sarmalayıcıları aracılığıyla entegre etmek ve e-postaların beklenmesi, anahtar parametrelerin kontrolü, eklerin doğrulaması ve doğru bağlantıların varlığını gerçekleştirmek.
Testler için benzersiz e-posta adresleri oluşturmak, test verilerini izole etmek (örneğin, test alanı kullanmak) ve otomatik testi her çalıştırmadan önce kutuları temizlemek.
Sadece e-posta içeriğini değil, içindeki bağlantıların çalışabilirliğini, farklı SMTP'lerden gönderim, farklı diller ve formatlar için doğru görüntülenmeyi de kontrol etmek.
Ana özellikler:
E-posta bildirimlerini, normal Gmail/Yandex e-posta kutularına e-postalar göndererek ve bunları IMAP üzerinden kontrol ederek test edebilir miyiz?
Hayır, bunu sıkça yapıyorlar ama bu yaklaşım güvenilir değildir (dış e-posta servisinin çalışmasına bağımlı, spam filtreleri, testler arasında izolasyon yok, kutunun temizlenmesi zorluğu, teslimat garantisi yok).
Sadece e-postanın geldiğini kontrol etmek yeterli mi?
Hayır, gövde, ekler, gerekli bağlantıların varlığı, doğru dil şablonu, başlıkların (From/To/Subject) uyumu, mime yapısının doğruluğunu doğrulamak gerekir.
Testte, senaryolar arasında sahte gelen kutusunu temizlemek zorunda değiliz, sorun olmaz mı?
Hayır! Testler arasında gelen kutusunu temizlemezseniz, hızlıca karışıklık oluşur ve hataları bulmak imkansız hale gelir. Senaryolar "başka" e-postaları "görecek" ve testler geçersiz hale gelecektir.
E-posta testlerini bir test Gmail üzerinden, IMAP ile oturum açarak, sadece "bir şey geldi" kontrolüyle gerçekleştirdik. Postalar sık sık spam klasörüne düşüyor, bazı e-postalar ulaşmıyordu ve birden fazla testin aynı gelen kutusunda çalıştırılması durumunda e-postaları analiz etmek imkansız hale geliyordu.
Artılar:
Eksiler:
Mailtrap'ı entegre ettik, her test durumu için benzersiz gelen kutuları ayırdık, otomatik temizleme, içerik ve eklerin doğrulamasını, bekleme süresini ve dilleri kontrol etmeyi sağladık.
Artılar:
Eksiler: