Kimlik verisi tutarlılığı, kaydın doğru alanlardan oluşmasından farklı bir şeydir: alanların birbirine uymasıdır. Bu yazıda uyumsuz bir kaydın testleri nasıl sessizce yanlış sonuca götürdüğünü, hangi alan çiftlerinin birlikte kontrol edilmesi gerektiğini ve bu kontrollerin ne kadar katı kurulacağını bulacaksınız.
Alanlar arası uyum neden tek tek doğruluktan önemli?
Her alanı ayrı ayrı doğrulayan bir kod, alanların birbiriyle ilişkisini kendiliğinden görmez. Posta kodu kendi biçimine uygun olabilir, şehir adı gerçekten var olan bir şehir olabilir, ülke kodu geçerli olabilir; ama bu üçü aynı yere ait olmayabilir. Tek tek bakıldığında her değer kusursuz görünürken kaydın bütünü yanlış olur.
Gerçek kullanıcıların verisi ise genellikle tutarlıdır. Bir kişi kendi adresini, kendi telefonunu ve kendi doğum tarihini yazar; bu değerler aynı hayatın parçalarıdır. Test verisi bu bütünlüğü taklit etmediğinde, test edilen sistem gerçekte hiç karşılaşmayacağı bir girdiyle karşılaşır ve sonuç yanıltıcı olur.
Bu yüzden tutarlılık, doğrulamanın süsü değil temelidir. Alanları bağımsız üreten bir küme, kapsamı geniş görünse de gerçek koşulları temsil etmez.
Uyumsuz bir kayıt testi nasıl yalancı başarıya götürür?
En sık rastlanan sonuç, yalancı başarıdır. Uygulamanın bir tutarlılık kontrolü varsa ve test verisi bu kontrolü ihlal ediyorsa, akış beklenenden farklı bir yoldan geçer. Test yine de “başarılı” görünebilir, çünkü hiçbir kural hatası vermemiştir; aslında test edilmesi gereken yol hiç çalışmamıştır.
İkinci sonuç, gürültüdür. Gerçek kullanıcı verisiyle hiç tetiklenmeyen uyarılar, uyumsuz test kayıtları yüzünden sürekli üretilir. Bir süre sonra ekip bu uyarıları görmezden gelmeye başlar; gerçek bir hata aynı gürültünün içinde kaybolur. Uyarı üreten bir kuralın işe yaraması için yanlış alarm oranının düşük olması gerekir.
Üçüncü sonuç, yanlış karar alınmasıdır. Uyumsuz bir kayıt yüzünden bir doğrulama devre dışı bırakılırsa, o doğrulamanın gerçekten gereksiz olduğu sonucuna varılır. Oysa sorun kuralda değil, verinin kendisindedir. Bu tür kararlar genellikle aylar sonra, üretimde bir sorun çıktığında fark edilir.
Hangi alan çiftleri birlikte doğrulanmalı?
Tutarlılık kurallarının listesi ülkeden ülkeye uzar ama en kritik eşleşmeler sınırlıdır.
| Alan çifti | Neden bağlıdır | Uyumsuzluk ne üretir |
|---|---|---|
| Ülke ve posta kodu | Her ülkenin kendi kod biçimi vardır | Biçim denetimi geçer, adres yanlış kalır |
| Ülke ve telefon kodu | Numaralandırma planı ülkeye bağlıdır | Arama ve doğrulama başarısız olur |
| Şehir, idari bölüm ve posta kodu | Aynı bölgeye ait olmalıdır | Bölge bazlı kurallar tutarsız çalışır |
| Doğum tarihi ve yaş | Yaş tarihten hesaplanır | Yaş sınırı yanlış değerlendirilir |
| Ad ve cinsiyet alanı | Bazı dillerde ad cinsiyet taşır | Cinsiyete bağlı biçimlendirme bozulur |
| Kimlik numarası ve ülke | Uzunluk ve biçim ülkeye bağlıdır | Doğrulama geçersiz aralığa düşer |
Tablodaki satırlardan ilk üçü, adres ve iletişim alanlarını ilgilendirdiği için en çok hata üreten gruptur. Telefon ile ülke bağının nasıl kurulduğunu telefon kodu ve bölge eşleşmesi yazısında ayrıntılı olarak ele alıyoruz.
Bütün eşleşmeleri zorunlu tutmak doğru mu?
Hayır. Tutarlılık kuralları farklı güçte olabilir ve her kuralı sert bir engel hâline getirmek yeni sorunlar üretir. Bazı eşleşmeler kesin olarak bilinir, bazıları ise yalnızca çoğu durumda geçerlidir.
Kesin kurallar hata vermelidir: var olmayan bir tarih, geçersiz bir ülke kodu ya da ülkesiyle hiç uyuşmayan bir telefon kodu kabul edilmemelidir. Bu tür durumlarda kaydı reddetmek doğru davranıştır, çünkü veri kesin olarak bozuktur.
Olasılıklı kurallar ise uyarı üretmelidir. Örneğin bir posta kodunun şehirle eşleşmemesi genellikle bir hata işaretidir; ama gerçek hayatta yeni yapılaşan bölgeler, taşınma sürecindeki adresler ve veri girişindeki küçük farklar bu uyarıyı tetikleyebilir. Bu durumda kullanıcıyı engellemek yerine uyarıp devam etmesine izin vermek, hem veri kalitesini hem de kullanılabilirliği korur.
Dengeyi kurmanın pratik yolu, kuralı yazan kişinin şu soruyu yanıtlamasıdır: bu eşleşme yanlış olduğunda kayıt kesinlikle geçersiz mi, yoksa büyük olasılıkla hatalı mı? İlk cevabı veren kurallar engel, ikincisini veren kurallar uyarı olarak kurulmalıdır.
Rastgele üretim hangi eşleşmeleri bozar?
Rastgele üreticiler genellikle her alanı bağımsız seçer; bu yüzden en çok zarar gören şey alanlar arası bağlardır. Ülke bir kez seçildikten sonra diğer alanların bu seçime bağlı üretilmesi gerekir. Bağımsız üretim, ülkeyi bir kez seçip sonra başka bir ülkenin biçimlerini kullanmak gibi sessiz hatalar doğurur.
En kırılgan eşleşmeler şunlardır: adres ile posta kodu, telefon kodu ile ülke, doğum tarihi ile yaş, kimlik numarası biçimi ile ülke ve ad ile cinsiyet alanı. Bu beş bağdan biri bozulduğunda kayıt hâlâ okunabilir görünür; hatayı yalnızca o bağı kontrol eden bir test yakalar.
Bozulmanın en sinsi biçimi ise kısmi tutarlılıktır. Kayıt ülke olarak Almanya’yı taşır, şehir olarak da Almanya’dan bir şehir gösterir; ama posta kodu başka bir ülkenin biçimindedir. Bu durumda kaydın çoğu doğru göründüğü için gözden kaçması kolaydır. Almanya özelinde hangi alanların birbirine bağlı olduğunu görmek için Almanya ülke sayfası kısa bir özet verir.
Geliştiriciler için: doğrulama katmanını nereye koymalı?
Tutarlılık kontrolleri, alan bazlı biçim denetimlerinden ayrı bir katmanda durmalıdır. Biçim denetimi tek bir değere bakar ve her yerde aynıdır; tutarlılık kontrolü ise iki ya da daha fazla değeri karşılaştırır ve ülke bilgisine ihtiyaç duyar. İkisini aynı fonksiyon içinde birleştirmek, kuralları zamanla içinden çıkılmaz hâle getirir.
Bu katmanın yeri, verinin kullanıldığı yere göre değişir. Kaydı kabul eden giriş noktasında kesin kurallar uygulanır; veriyi işleyen arka planda ise olasılıklı kurallar uyarı üretir. Aynı kuralı iki yerde farklı güçte uygulamak bilinçli bir karar olmalıdır, kazara ortaya çıkmamalıdır.
Test kümenizde iki tür örnek bulundurun. Birincisi bütün eşleşmeleri doğru olan kayıtlar; bunlar mutlu yolu temsil eder. İkincisi tek bir eşleşmesi bozuk olan kayıtlar; bunlar doğrulamanın gerçekten çalıştığını gösterir. Bir kayıtta birden fazla uyumsuzluk bulunursa, hangi kuralın devreye girdiği belirsizleşir; bu yüzden bozuk örnekler tek tek kurulmalıdır. Kaydın nasıl sabitlenip tekrar üretileceğini ise test fixture içinde kimlik verisi yazısında anlatıyoruz.
Sitemizdeki araçlar alanları ülke seçimine bağlı olarak üretir; üretilen kayıtlar gerçek bir kişiye karşılık gelmez ve yalnızca test amaçlıdır, bu kayıtlarla gerçek bir kişiyi taklit etmek mümkün değildir. Kimlik üreticisi sayfasında ülkeyi değiştirip aynı kaydın diğer alanlarla birlikte nasıl uyumlu kaldığını görebilirsiniz.
Sonraki adımlar
Tutarlılık kurallarınızı bir liste hâlinde yazın ve her kuralın engel mi uyarı mı olacağını yanına not edin; bu belge, ekip içindeki varsayım farklarını ortadan kaldırır. Ardından her kural için tek bir bozuk örnek testi ekleyin. Kayıtların farklı ülkelerde nasıl davrandığını karşılaştırmak için kimlik üreticisi sayfasında birkaç ülkeyi yan yana deneyebilirsiniz.