QA ve CI/CD Hatları için SMS Doğrulama Testi
Hemen her modern kayıt, giriş ve hesap kurtarma akışında bir telefon doğrulama adımı var ve bu adım, uçtan uca bir testin taklit edemeyeceği tek parça. Bir formu doldurabilir, bir düğmeye tıklayabilir ve yönlendirmeyi doğrulayabilirsin; ama testin "az önce gönderdiğimiz kodu gir" ekranına geldiği an takılır. Ekipler bu boşluğu birinin masasındaki ortak bir SIM kartıyla, sabit kodlanmış bir staging atlamasıyla ya da doğrulamayı tamamen atlayan bir test hesabıyla kapatmaya çalışır; bu geçici çözümlerin her biri, gerçek üretim yolunun test edilmeden yayına çıkması demektir. Bu sayfa o boşluğu kapatmakla ilgili: test paketinin içinde, programatik olarak gerçek bir numara ve gerçek bir tek kullanımlık kod almak; böylece tüm doğrulama akışı her derlemede koşar.
OTP neden otomatikleştirmesi en zor adım?
Doğrulama SMS'i, belirli bir telefonu elinde tutan bir insanı kanıtlamak için tasarlanır. İşte onu test etmesi zor kılan tam da bu varsayımdır: bir CI çalıştırıcısında ne insan vardır ne de telefon. Böylece OTP ekranı, aksi halde yeşil olan uçtan uca testin kırmızıya döndüğü duvar olur. Yaygın geçici çözümlerin her birinin bir bedeli var. Masadaki ortak bir SIM kartı CI'da çalışmaz, ona ihtiyaç duyan her testi sıraya sokar ve iki derleme aynı anda koştuğu an bozulur. Kodu atlayan bir staging atlaması, kullanıcılarınızın üretimde girdiği o tam dalın hiç çalıştırmadığınız dal olması demektir. Dondurulmuş bir test hesabı, birisi kayıt mantığını değiştirdiği gün gerçek mantıkla uyumsuz hale gelir.
Bir testin gerçekte ihtiyacı olan şey, gerçek bir kullanıcının sahip olduğunun aynısıdır: istendiğinde bir kez gerçek bir kod alabilen, sonra serbest bırakılan bir numara. Programatik yapıldığında OTP, manuel bir kesinti olmaktan çıkar ve akıştaki bir doğrulama adımına dönüşür. Testin bir numara kiralar, kayıt formunu ona yönlendirir, kodu bekler ve yönlendirmeyi doğrular; SIM donanımı yok, döngüde insan yok, test edilmemiş atlama dalı yok. Bir SMS doğrulama API'si test paketine işte bunu verir.
Programatik SMS doğrulama nasıl çalışır?
Akış, mevcut testinin etrafına sarılan, REST API'ye üç çağrıdan ibaret. Kimlik doğrulama tek bir başlık olduğu için bir CI gizli anahtarına temiz biçimde oturur:
- Numara kirala: test ettiğin servis ve ülkeyle /api/v1/activations adresine POST yap. Geriye bir aktivasyon id'si ve kayıt formuna besleyeceğin gerçek bir phoneNumber alırsın.
- Akışını koştur: gerçek kayıt ya da giriş arayüzünü (veya API'sini) bu numarayla, tıpkı bir kullanıcı gibi sür; böylece gerçek doğrulama dalı çalışır.
- Kodu oku: status RECEIVED olana dek GET /api/v1/activations/:id sorgula, sonra smsCode'u oku. Gönder, kapatmak için /complete çağır ya da hiçbir şey gelmediyse iptal edip otomatik iade için DELETE kullan.
Test paketine ekle
Aşağıdaki iki örnek de canlı REST API'yi çağırır. Kimlik doğrulama x-api-key başlığıdır; gövde bir serviceCode ve bir countryIso alır (isteğe bağlı bir provider, "1" ya da "2", numara havuzunu seçer). smsCode alanı status RECEIVED olana dek null kalır; döngü bu yüzden sorgular.
Node.js + Playwright
const API = 'https://smsbulk.net/api/v1';
const headers = {
'x-api-key': process.env.SMSBULK_API_KEY,
'Content-Type': 'application/json',
};
// 1. Test ettiğin servis + ülke için gerçek bir numara kirala.
const rent = await fetch(`${API}/activations`, {
method: 'POST',
headers,
body: JSON.stringify({ serviceCode: 'wa', countryIso: 'TR' }),
}).then((r) => r.json());
const { id, phoneNumber } = rent;
// 2. Gerçek kayıt akışını bu numarayla sür (Playwright).
await page.fill('#phone', phoneNumber);
await page.click('#send-code');
// 3. Kod gelene kadar sorgula. smsCode, status === 'RECEIVED' olana dek null.
let code = null;
for (let i = 0; i < 30 && !code; i++) {
const a = await fetch(`${API}/activations/${id}`, { headers })
.then((r) => r.json());
if (a.status === 'RECEIVED') code = a.smsCode;
else await new Promise((r) => setTimeout(r, 3000));
}
// 4. OTP'yi gönder, sonra aktivasyonu kapat.
await page.fill('#otp', code);
await page.click('#verify');
await fetch(`${API}/activations/${id}/complete`, { method: 'POST', headers });Python + pytest + Selenium
import os, time, requests
API = "https://smsbulk.net/api/v1"
HEADERS = {"x-api-key": os.environ["SMSBULK_API_KEY"]}
def test_signup_with_real_otp(driver):
# 1. Test edilen servis + ülke için gerçek bir numara kirala.
rent = requests.post(
f"{API}/activations",
headers=HEADERS,
json={"serviceCode": "wa", "countryIso": "TR"},
).json()
activation_id, phone = rent["id"], rent["phoneNumber"]
# 2. Gerçek kayıt akışını sür (Selenium).
driver.find_element("id", "phone").send_keys(phone)
driver.find_element("id", "send-code").click()
# 3. status == RECEIVED olana dek sorgula; öncesinde smsCode null'dur.
code = None
for _ in range(30):
a = requests.get(
f"{API}/activations/{activation_id}", headers=HEADERS
).json()
if a["status"] == "RECEIVED":
code = a["smsCode"]
break
time.sleep(3)
assert code, "OTP zamanında gelmedi"
# 4. OTP'yi gönder ve aktivasyonu kapat.
driver.find_element("id", "otp").send_keys(code)
requests.post(
f"{API}/activations/{activation_id}/complete", headers=HEADERS
)Farklı bir bölgeyi test etmek için countryIso'yu, farklı bir servisi test etmek için serviceCode'u değiştir. Aynı iki endpoint herhangi bir çatıyı destekler: Cypress, Puppeteer, WebdriverIO ya da bir CI adımındaki düz bir HTTP istemcisi. Tam istek ve yanıt şemaları API dokümanı içindedir.
Bir sonraki CI koşuna gerçek bir OTP bağla.
Ekipler bunu ne için kullanır?
- Uçtan uca kayıt regresyonu: her koşuda temiz bir hesap aç, OTP'yi al ve doğrulamayı taklitle atlamak yerine tüm yolu doğrula.
- CI/CD doğrulama kapıları: canlı giriş ya da onboarding akışı, gerçek bir numara ve gerçek bir kodla hâlâ çalıştığını kanıtlayana dek yayını durdur.
- Çoklu bölge kapsamı: geniş uluslararası kapsam içinde, yayın yaptığın bölgeler için akışın çalıştığını doğrulamak üzere countryIso'yu değiştir. servisler ve fiyatlandırma sayfalarına bak.
- Paralel test izolasyonu: her test kendi numarasını kiralar; böylece paketler, ortak bir SIM onları sıraya sokmadan ya da numaralar derlemeler arası çakışmadan eşzamanlı koşar.
- OTP yolunu smoke-test etmek: bir numara sipariş edip kodun uçtan uca hâlâ geldiğini kontrol eden zamanlanmış bir iş; bozuk bir sağlayıcıyı ya da şablonu kullanıcılardan önce yakalar.
SMSBulk test otomasyonuna neden uygun?
x-api-key kimlik doğrulamalı temiz bir REST API, bakımı gereken bir tarayıcı SDK'sı ya da cihaz çiftliği olmadan doğrudan bir CI gizli anahtarına oturur. SIM donanımı almak ya da operatör sözleşmesi imzalamak yerine numara başına ödersin; böylece ayda on bin kez koşan bir test yalnızca gerçekten kullandığı numaralar kadar maliyetli olur. Geniş uluslararası kapsam, tek bir alanı değiştirerek tek bir paketin yayın yaptığın bölgeleri çalıştırmasını sağlar; bir aktivasyona DELETE, kod gelmediğinde cüzdanı otomatik iade eder, böylece kararsız ağ ve stok yokluğu koşuları bütçeyi sessizce yakmaz. Yerleşik bir harcama tavanı, CI'daki kontrolden çıkan bir döngünün bakiyeyi boşaltmasını engeller.
Kendi test kodun REST API'yi çağırmak yerine tüm akışı otonom bir ajanın kendisinin sürmesini tercih edersen, aynı platform bir Model Context Protocol sunucusu sunar. O yol ayrıca yapay zeka ajanları için SMS alma rehberimizde ele alınıyor. Yalnızca elle ya da hızlı bir betikle kod almak istiyorsan online SMS alma rehberi sayfamıza bak. Bu sayfadaki her şeyin tam endpoint referansı API dokümanı içindedir.
Dürüst ve sorumlu kullanım
Bu, sahibi olduğun ya da test etmeye açıkça yetkili olduğun akışları test etmek için bir araçtır: kendi ürünün, sözleşmeli olduğun bir müşteri işi ya da kontrol ettiğin bir staging ortamı. Kullanım amacının tamamı budur ve yazılım yayınlamanın meşru, gündelik bir parçasıdır.
Üçüncü taraf servislerde toplu hesap açmak, başka bir şirketin hız sınırlarını aşmak ya da geçmen gerekmeyen bir doğrulama adımını atlatmak için değildir. SMS doğrulama testi, kendi doğrulamanın çalıştığını kanıtlamaktır; başkasınınkini alt etmek değil. Numaralar hesabına bağlıdır ve etkinlik kaydedilir; bunu hattındaki herhangi bir kimlik bilgisi gibi ele al.
Dürüst konumlandırma
Test için programatik SMS tek satıcılı bir alan değil ve bunun aksini iddia etmeyeceğiz. Birkaç sağlayıcı, bir test paketinin çağırabileceği bir doğrulama API'si sunuyor ve doğru tercih; ihtiyacın olan bölgelere, doğruladığın servislere, numara başı maliyetine ve API'nin CI'ye ne kadar temiz oturduğuna bağlı. Hattın için önemli olan eksenlerde karşılaştır. en iyi SMS doğrulama API'leri rehberi sayfamız, diğer sağlayıcıların daha uygun olduğu yerler dahil, bu alanı dürüstçe ortaya koyuyor.
Sıkça sorulan sorular
SMS doğrulama testi nedir?
Kendi kayıt, giriş ya da kurtarma akışının telefon doğrulama adımını uçtan uca test etmektir: bir API üzerinden gerçek bir numara kiralayıp, akışını ona karşı koşturup gerçek OTP'yi okuyarak; adımı taklitle atlamak yerine.
Playwright, Cypress ya da Selenium'da OTP otomatikleştirebilir miyim?
Evet. HTTP isteği yapabilen her çatı REST API'yi çağırabilir: numara kirala, arayüzünü sür, sonra kodu sorgula ve gönder. Yukarıdaki Node ve Python örnekleri tüm döngüyü gösteriyor ve desen Cypress, Puppeteer ya da WebdriverIO'da aynıdır.
Testimde SMS kodunu nasıl alırım?
status RECEIVED olana dek GET /api/v1/activations/:id sorgula, sonra smsCode alanını oku. Kod gelmeden önce null'dur; bu yüzden kısa bir gecikme ve zaman aşımıyla döngü kur. Tam yanıt şeması için API dokümanı sayfasına bak.
Hangi ülke ve servislere karşı test edebilirim?
Kapsam geniş ve uluslararasıdır; birçok servis ve bölgeyi içerir; her istekte serviceCode ve countryIso ile seçersin. Canlı servisler listesine göz at ve numara başı maliyet için fiyatlandırma sayfasına bak.
Bu, 2FA'yı atlatmakla aynı şey mi?
Hayır. Bu, sahibi olduğun ya da yetkili olduğun doğrulama akışlarını test eder; kendi OTP yolunun çalıştığını kanıtlar. Başkasının doğrulamasını alt etmenin ya da üçüncü taraf hesapları toplu açmanın bir yolu değildir. Kendi doğrulamanı test etmek ile başka bir şirketinkini atlatmak farklı şeylerdir.
Bu, MCP'li bir yapay zeka ajanı kullanmaktan nasıl farklı?
Burada test kodun REST API'yi doğrudan çağırır ve döngünün kontrolünde kalır. MCP'de ise otonom bir ajan araçları keşfeder ve akışı kendi akıl yürütmesinin parçası olarak kendisi sürer. Aynı platform, farklı sürücü; o yaklaşım yapay zeka ajanları için SMS alma rehberimizde ele alınıyor.
