Pengujian verifikasi email adalah salah satu aspek pengembangan perangkat lunak yang paling membosankan namun penting. Setiap alur pendaftaran, setiap email transaksional, dan setiap notifikasi perlu diuji secara menyeluruh. Alamat email sekali pakai mengubah proses ini dari tugas manual yang melelahkan menjadi pipeline otomatis yang dapat diskalakan.
Menyiapkan Pengujian API
Langkah pertama adalah menyiapkan lingkungan pengujian Anda dengan API email sekali pakai. Anda memerlukan endpoint untuk membuat alamat email baru, memeriksa kotak masuk, dan mengambil konten email. Dengan EvilMail API, semua ini tersedia melalui REST endpoint yang sederhana dan terdokumentasi dengan baik.
Mulailah dengan membuat alamat email pengujian melalui API:
curl -X POST https://api.evilmail.com/v1/addresses
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{"prefix": "test-user", "domain": "evilmail.com"}'Contoh Python untuk Pengujian Otomatis
Berikut adalah contoh lengkap menggunakan Python untuk mengotomatisasi pengujian verifikasi email:
import requests
import time
import re
class EmailVerificationTester:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.evilmail.com/v1"
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
def create_test_address(self, prefix="test"):
response = requests.post(
f"{self.base_url}/addresses",
headers=self.headers,
json={"prefix": prefix, "domain": "evilmail.com"}
)
return response.json()["address"]
def wait_for_email(self, address, timeout=30):
start = time.time()
while time.time() - start < timeout:
response = requests.get(
f"{self.base_url}/inboxes/{address}/messages",
headers=self.headers
)
messages = response.json()["messages"]
if messages:
return messages[0]
time.sleep(2)
raise TimeoutError("Email tidak diterima dalam batas waktu")
def extract_verification_link(self, message_id, address):
response = requests.get(
f"{self.base_url}/inboxes/{address}/messages/{message_id}",
headers=self.headers
)
body = response.json()["body"]
links = re.findall(r'https?://[^s<>"]+verify[^s<>"]*', body)
return links[0] if links else NoneIntegrasi dengan Pipeline CI/CD
Pengujian email otomatis menjadi sangat powerful ketika diintegrasikan ke dalam pipeline CI/CD Anda. Berikut adalah contoh konfigurasi untuk GitHub Actions:
name: Email Verification Tests
on: [push, pull_request]
jobs:
email-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run email verification tests
env:
EVILMAIL_API_KEY: ${{ secrets.EVILMAIL_API_KEY }}
run: |
pip install requests pytest
pytest tests/test_email_verification.py -vMenskalakan Pengujian Anda
Ketika aplikasi Anda berkembang, Anda perlu menskalakan pengujian email Anda juga. Pertimbangkan untuk menggunakan pool alamat email yang dapat dirotasi, menjalankan pengujian secara paralel untuk mempercepat eksekusi, dan mengimplementasikan retry logic untuk menangani keterlambatan pengiriman email. Dengan alamat sekali pakai, Anda tidak perlu khawatir tentang konflik antar pengujian atau polusi data — setiap pengujian mendapatkan kotak masuk yang bersih dan terisolasi.
Praktik Terbaik
Pastikan setiap pengujian menggunakan alamat email unik untuk menghindari kondisi race. Tetapkan batas waktu yang wajar untuk penerimaan email (biasanya 30-60 detik). Bersihkan alamat pengujian setelah suite pengujian selesai untuk menjaga lingkungan tetap rapi. Dan yang terpenting, jalankan pengujian ini di setiap push untuk menangkap regresi sedini mungkin.

